관리 메뉴

중요한건 꺾이지 않는 맥북

컨테이너간 통신(네트워크) 본문

MLOPS/docker

컨테이너간 통신(네트워크)

개발허재 2022. 1. 16. 22:49

기본적으로 docker를 설치하게 되면 위와 같이 docker0 가 bridge 역할을 한다.

docker0

- virtual ethernet bridge : 172.17.0.0/16

- L2 통신기반

- container 생성 시 veth 인터페이스 생성 (sandbox)

- 모든 컨테이너는 외부 통신을 docker0 통해 진행

- container running 시 172.17.X.Y 로 ip 주소할당


PORT-FORWARDING

- container port 를 외부로 노출시켜 외부 연결 허용

- iptables rule을 통한 포트 노출

  • -p hostPort:containerPort
  • -p containerPort
  • -P

$ docker run --name web -d -p 80:80 nginx:1.14

$ iptables -t nat -L -n -v

 


USER-DEFINED BRIDGE NETWORK 생성

$ docker network create --driver bridge --subnet 192.168.100.0/24 --gateway 192.168.100.254 mynet

<subnet 옵션으로 192.168.100.0/24번 대역대의 ip를 할당 받을 수도 있고 gateway 옵션으로 192.168.100.254 의 고정 ip를 할당하는 방법도 있다.>

 

$ docker network ls 

 

$ docker run -d --name web -p 80:80 nginx:1.14

$ curl localhost

 

$docker run -d --name appjs --net mynet --ip 192.168.100.100 -p 8080:8080 smlinux/appjs


컨테이너를 이용한 server & client 서비스 운영

# docker run -d --name mysql -v /dbdata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=wordpress -e MYSQL_PASSWORD=wordpress mysql:5.7

- 도커호스트의 /dbdata와 mysql 데이터를 마운팅한다.

 

# docker run -d --name wordpress --link mysql:mysql -e WORDPRESS_DB_PASSWORD=wordpress -p 80:80 wordpress:4

- link 옵션은 containerName:NewName으로 작성한다. NewName 은 wordpress 에서 사용할 새로운 이름이다.