kok202
Docker-compose fixed network IP

2019. 8. 28. 16:13[정리] 기능별 개념 정리/Docker

문제 상황

  1. docker-compose 를 사용하여 컨테이너들을 여러개 띄울 경우 자체적인 네트워크를 하나 생성한다.
  2. 이 네트워크는 172.AAA.BBB.CCC/16 으로 할당이 된다.
  3. 이때 AAA는 1~254 사이에 랜덤하게 생성되기 때문에 만약 이미 사용중인 다른 네트워크 IP 가 있을 경우 라우팅 문제가 생길 수 있다.

 

 

 

[Sample] myDocker/docker-compose.yml

version: "3"
services:
  zookeeper:
    image: wurstmeister/zookeeper
    container_name: myZookeeper
    ports:
      - "2181:2181"
    networks:
      - myNetwork

  kafka:
    image: wurstmeister/kafka:2.11-1.1.1
    container_name: myKafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_CREATE_TOPICS: "myFirstTopic:1:1,mySecondTopic:1:1"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - myNetwork

  db:
    image: mysql:5.7
    container_name: myMysql
    restart: always
    environment:
      MYSQL_DATABASE: "myDatabase"
      MYSQL_USER: "myUser"
      MYSQL_PASSWORD: "myPassword"
      MYSQL_ROOT_PASSWORD: "rootPassword"
    ports:
      - "3306:3306"
    expose:
      - "3306"
    volumes:
      - data-mysql:/var/lib/mysql
      - ./mysql/init:/docker-entrypoint-initdb.d/:ro
    networks:
      - myNetwork

volumes:
  data-mysql:

networks:
  myNetwork:
    ipam:
      driver: default
      config:
        - subnet: 172.202.0.1/16

172.202.BBB.CCC 으로 자동으로 생성되게 변경하였다.

 

 

 

다음 커맨드를 쳐서 docker-compose 가 만든 network 망을 볼 수 있다.

docker network ls

다음 커맨드를 사용하면 해당 network 망에대한 상세정보를 확인할 수 있다.

docker network inspect {network-name}

ex.

[
    {
        "Name": "myNetwork",
        "Id": "----------",
        "Created": "----------",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.202.0.1/16"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "----------containerID----------": {
                "Name": "myKafka",
                "EndpointID": "----------",
                "MacAddress": "----------",
                "IPv4Address": "172.202.0.2/16",
                "IPv6Address": ""
            },
            "----------containerID----------": {
                "Name": "myZookeeper",
                "EndpointID": "----------",
                "MacAddress": "----------",
                "IPv4Address": "172.202.0.3/16",
                "IPv6Address": ""
            },
            "----------containerID----------": {
                "Name": "myMysql",
                "EndpointID": "----------",
                "MacAddress": "----------",
                "IPv4Address": "172.202.0.4/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {
            "com.docker.compose.network": "myNetwork",
            "com.docker.compose.project": "myDocker",
            "com.docker.compose.version": "1.23.2"
        }
    }
]