요약
도커 외부 노출을 위한 port 바인딩 설정
1. 컨테이너 외부노출
- 도커는 컨테이너에 172.17.0.x의 IP를 순차적으로 할당
- 컨테이너를 새롭게 생성한 후 ifconfig 명령어로 확인
- 컨테이너의 어플리케이션을 외부에 노출하기 위해 eth0의 IP, Port를 호스트의 IP, Port와 바인딩해야 함
docker run -i -t --name mywebserver -p 7777:80 ubuntu:14.04 #-p 옵션으로 호스트의 7777과 컨테이너의 80으로 바인딩
2. 컨테이너 어플리케이션 구축
- 위 컨테이너 외부노출을 활용하여 웹서버(wordpress)와 데이터베이스 만들기
- mysql 만들기
docker run -d \
--name wordpressdb \
-e MYSQL_ROOT_PASSWORD=password \
-e MYSQL_DATABASE=wordpress \
mysql:5.7
- wordpress 만들기
docker run -d \
-e WORDPRESS_DB_PASSWORD=password \
--name wordpress \
--link wordpressdb:mysql \
-p 80 \
wordpress
- 옵션 설명
항목 | 설명 |
---|---|
-d | 컨테이너를 백그라운드로 동작 |
-i -t | 컨테이너 내부로 진입하도록 attach 가능한 상태로 설정 |
-e | 컨테이너 내부의 환경변수 설정 |
3. attache와 exec
- docker attach : 입출력 가능한 쉘 환경을 이용하는 경우 가능하지만 -d로 생성된 컨테이너는 사용할 수 없음
- docker exec: -d 옵션으로 실행된 컨테이너 내부 쉘 가능
docker exec -it wordpressdb /bin/bash
4. link 옵션
- 컨테이너 A에서 컨테이너 B로 접근하는 가장 일반적인 방법은 IP를 통해 접근하는 방법임
- 하지만 컨테이너는 기동할 때마다 172.17.0.x을 순차적으로 할당하므로 IP가 재할당되어 변경되는 문제 있음
- 이러한 문제 해결을 위해 컨테이너 alias로 접근하기 위해 - -link 옵션을 활용함.
docker run -d \
-e WORDPRESS_DB_PASSWORD=password \
--name wordpress \
--link wordpressdb:mysql \
-p 80 \
wordpress
- 위와 같이 기동된 wordpress 컨테이너 내부로 들어가서 mysql alias로 ping을 호출하면 wordpressdb 컨테이너로 ping을 날림.
댓글남기기