Docker 구성 네트워킹 - 우선 순위 속성이 무시됩니다

Asked 6 months ago, Updated 6 months ago, 106 views

Docker-compose.yaml 파일을 구성했는데, 4개의 네트워크 인터페이스를 포함하며 이러한 인터페이스는 Docker 컨테이너에 마운트할 때 특정 순서로 해야 합니다.

Docker 엔진 버전: 19.03

Docker-compose 버전: 2.4.1

호스트 인터페이스 간에 L2 패킷을 전송하기 위해 시스템의 일부로 macvlan 드라이버를 사용하고 있습니다.

그리고 서버로 쓰는 도커 컨테이너는 ubuntu:18.04를 기반으로 합니다.

networks:
    sim1:
       name: sim1
       driver: macvlan
       driver_opts:
           parent: ens20
           macvlan_mode: bridge
       ipam:
           config:
           - subnet: 192.3.0.0/16
             ip_range: 192.3.1.0/24
    sim2:
       name: sim2
       driver: macvlan
       driver_opts:
           parent: ens21
           macvlan_mode: bridge
       ipam:
           config:
           - subnet: 192.4.0.0/16
             ip_range: 192.4.1.0/24
    sim3:
       name: sim1
       driver: macvlan
       driver_opts:
           parent: ens20
           macvlan_mode: bridge
       ipam:
           config:
           - subnet: 192.5.0.0/16
             ip_range: 192.5.1.0/24
    sim4:
       name: sim1
       driver: macvlan
       driver_opts:
           parent: ens20
           macvlan_mode: bridge
       ipam:
           config:
           - subnet: 192.6.0.0/16
             ip_range: 192.6.1.0/24

 

 우선 순위라는 속성이 있는 것을 찾았는데요.

이 속성은 compose.yaml 파일에 지정한 메트릭에 따라 네트워크 인터페이스를 구성할 수 있었습니다.

priority indicates in which order Compose implementation SHOULD connect the service’s containers to its networks. If unspecified, the default value is 0.

 Docker-compose priority

이 우선 순위 기능을 yaml 파일에 적용하려고 하면 에러와 경고가 나타나지 않고 도커 측에서 무시되며 ifconfig를 실행하면 인터페이스가 잘못된 순서로 되어 있던데요.

ifconfig(결과 필터링 후)의 출력입니다.

eth0: sim1
eth1: sim4
eth2: sim3
eth3: sim2

 

services:
   app1:
       image: nginx:latest
       command: "tail -f /dev/null"
       networks:
          sim1:
              priority: 1000
          sim2:
              priority: 900
          sim3:
              priority: 800
          sim4:
              priority: 700

검색해보니까 이런 문제가 꽤 있는 거 같던데 어떻게 해결하나요? 

docker docker-compose

2022-05-21 12:25

2 Answers

scaleUp function을 올려주신 js에 추가했는데요.

CIRCLE_ITEMS.onclick과 CONTAINER_FLEX.ontouchend를 콜하게 되어 있구요.

콜했을 때 항목에 스케일업 클래스가 추가됩니다.

function scaleUp (current_index){
  document.querySelectorAll('.item').forEach(item => {
     item.classList.remove('scale-up') 
  })
  document.querySelectorAll(`.item-${current_index}`).forEach(item => {
    item.classList.add('scale-up') 
 })
}

 

.scale-up{
  transform: scale(1)
}
 

 


2022-05-21 12:27

네트워크는 알파벳 순으로 연결되어야 합니다.

여기 gist에서 데모를 볼 수 있습니다.

내 생각에 문제는 작성 파일에 있는 것 같은데요.

networks:섹션에 보면

sim3:
  name: sim1

이랑

sim4:
  name: sim1

 이렇게 있는데요.

sim3과 sim4 모두 이름이 sim1로 설정되어 있습니다.

이 모든 것을 올바른 순서로 유니크하게 만들고 우선 순위 설정을 제거하면 잘 작동합니다.

services:
  app1:
    image: nginx:latest
    command: "tail -f /dev/null"
    networks:
      - sim1
      - sim2
      - sim3
      - sim4

networks:
  sim1:
    name: sim1
    driver: macvlan
    driver_opts:
      parent: ens20
      macvlan_mode: bridge
    ipam:
      config:
        - subnet: 192.3.0.0/16
        ip_range: 192.3.1.0/24
  sim2:
    name: sim2
    driver: macvlan
    driver_opts:
      parent: ens21
      macvlan_mode: bridge
    ipam:
      config:
        - subnet: 192.4.0.0/16
        ip_range: 192.4.1.0/24
  sim3:
    name: sim3
    driver: macvlan
    driver_opts:
      parent: ens20
      macvlan_mode: bridge
    ipam:
      config:
        - subnet: 192.5.0.0/16
        ip_range: 192.5.1.0/24
  sim4:
    name: sim4
    driver: macvlan
    driver_opts:
      parent: ens20
      macvlan_mode: bridge
    ipam:
      config:
        - subnet: 192.6.0.0/16
        ip_range: 192.6.1.0/2


2022-05-21 12:40

If you have any answers or tips


© 2022 pinfo. All rights reserved.