rueki
도커 컨테이너 통신 본문
* 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가 존재하게 된다.
'쿠버네티스, 도커' 카테고리의 다른 글
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 |