====== Docker Network ====== ===== CIDR 변경 ===== * docker 의 기본 네트워크인 ''docker0(bridge)''의 IP 대역인 ''172.17.0.0/16''가 자신의 네트워크환경과 충돌 할 경우 변경이 필요하다. * 이것 때문에 동일 대역대의 다른 장비에 접근이 안되는 경우가 발생한다. * ''/etc/docker/daemon.json'' 을 생성 혹은 편집하는 방법. 완료후 ''sudo service docker restart'' { "default-address-pools": [ { "scope": "local", "base": "192.168.0.0/16", "size": 24 } ] } * [[https://bluese05.tistory.com/16|docker0 IP 및 CIDR 변경하기]] * [[https://docs.docker.com/v17.09/engine/userguide/networking/default_network/custom-docker0/|Customize the docker0 bridge | Docker Documentation]] ===== Bridge 네트워크 구성으로 docker 컨테이너들간 네트워크 공유 ===== * 일반적으로 여러 Docker 컨테이너가 서로에게 접속할 필요가 있을 때 사용한다. * 과거에 ''%%--%%link''로 할 수 있었으나 deprecated 상태이다. # bridge 생성 docker network create --driver bridge <네트워크이름> # 생성된 목록 확인 docker network ls # 네트워크 상태 조회 docker network inspect <네트워크ID> # 네트워크ID의 맨 앞 두 글자만 입력해도 됨 # 컨테이너를 띄울 때 --net <네트워크이름> docker run --net <네트워크이름> # 네트워크 제거 docker network rm <네트워크이름> ==== --subnet 지정 ==== ''Error response from daemon: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network'' 오류가 발생할 경우, 이미 사용중인 IP 대역에 대해 네트워크를 생성하려고 해서인듯. * [[https://github.com/docker/for-linux/issues/599|Error response from daemon: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network · Issue #599 · docker/for-linux]] * ''%%--subnet%%'' 지정을 통해 다른 IP 대역을 할당한다. * ''%%--%%ip-range=172.72.0.0/24'' * ''%%--%%gateway=172.72.0.1'' docker network create --driver bridge <네트워크이름> --subnet="192.168.110.0/24" ===== link ===== * [[http://pyrasis.com/book/DockerForTheReallyImpatient/Chapter06/02|PYRASIS.COM: 가장 빨리 만나는 Docker 6장 - 2. Docker 컨테이너 연결하기]] * ''%%--%%link <컨테이너 이름>:<별칭>'' * deprecated 상태이므로 사용을 권장하지 않는다. * 이름을 지정하지 않으면 기본으로 컨테이어 이름으로 접속가능해진다. # 몽고DB를 띄우고 docker run --name db -d mongo # 거기에 접속할 다른 도커 컨테이너 띄울때 docker run --name web -d -p 80:80 --link db:db nginx # 이제 web 컨테이너에서는 db 라는 호스트명으로 mongodb 에 접속가능해진다. ===== IP 환인 ===== * docker container 의 실제 IP 확인 * ''docker inspect '' : **''IPAddress''** 항목에서 확인가능 * ''docker exec ip addr show eth0'' : 이것은 해당 컨테이너에 ''ip''라는 명령이 존재해야 한다. ===== 참조 ===== * [[https://dreamholic.tistory.com/95|Docker Network 구성하기]] * [[http://linux.systemv.pe.kr/docker-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%9D%B4%ED%95%B4/|Docker 네트워크 이해]] * [[https://jungwoon.github.io/docker/2019/01/13/Docker-4/|Docker 정리 #4 (도커 네트워크)]]