요약

도커 외부 노출을 위한 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
  • 컨테이너 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을 날림.

카테고리:

업데이트:

댓글남기기