rueki

도커 컨테이너 통신 본문

쿠버네티스, 도커

도커 컨테이너 통신

륵기 2021. 11. 21. 17:17
728x90
반응형

* Daemon 실행중이여야함.

  실행중이지 않다면, "dockerd &" 으로 백그라운드에서 실행 가능.

 

- ip address 확인

ip addr
brctl show docker0

ip addr로 확인하면 아래와 같이 뜬다.

172.17.0.1이 docker0의 ip address이다. docker host의 ip는 eth0에서 확인이 가능하다.

 

- 예제 컨테이너 생성하기

docker run -it --name c1 busybox

만든 1번 컨테이너는 172.17.0.3으로 할당된 것을 볼 수 있다.

 

나는 지금 nginx 컨테이너가 172.17.0.3으로 되있고, c1, c2 예제 컨테이너는 각각 4, 5 번으로 할당되어 있다.

 

- 포트포워딩

: 컨테이너 포트를 외부로 노출시켜서 외부 연결을 허용

docker run --name "컨테이너 이름" -p hostPort:containerPort "이미지:태그"

-p 80:80이라고 하면 host의 80포트와 컨테이너의 80포트가 서로 포워딩된다.

-p 80과 같이 hostport를 생략하면 random으로 할당된다.

 

재밌는 옵션은 -P(대문자) 만 선언하면 서로 random하게 연결이 되는데 nginx official dockerfile에는

Expose 80이 선언되어 있어서 아래와 같이 49153 -> 80으로 연결이 된다.

docker run -P -d --name web3 nginx

 

 

- User define 네트워크 할당

docker network ls

여기서 bridge라은 이름이 docker0가 사용하고 있는 것이다.

 

여기서 이제 bridge(default 값) 기반으로 해서 subnet과 gateway를 define해서 네트워크를 생성할 수 있다.

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


Server - Client 서비스 예제

: 프론트와 백을 연결하는 서비스를 하는데 각각 컨테이너로 구성한다.

 

- 백엔드 DB

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

 

- 프론트 (wordpress)

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

--link 옵션을 통해서 mysql과 연결시켜준다. (컨테이너 이름 : alias)

아래와 같이 80포트로 접속하니 wordpress가 나왔다. 

80으로 접속해서 docker0를 통해 컨테이너의 80포트로 연결되었다.

그리고 volumne을 db 컨테이너 생성할 때 dbdata에 마운트 시키고 wordpress와 link를 하였기에 해당 경로 안에

wordpress가 존재하게 된다.

728x90
반응형

'쿠버네티스, 도커' 카테고리의 다른 글

Dockerfile Example  (0) 2021.12.20
docker compose 실행해보기  (0) 2021.11.22
도커 컨테이너 Storage  (0) 2021.11.19
Kubernetes namespace  (0) 2021.11.19
도커 컨테이너 리소스 관리  (0) 2021.11.18
Comments