====== 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 (도커 네트워크)]]