이번 포스팅은 기본적으로 docker 운영에 있어서 사용되는 명령어에 대해 다뤄보았습니다.
문의 사항은 댓글로 남겨주시면 성심성의껏 답변드리도록 하겠습니다.
Docker command (comtainer 3)
동일 서버안의 컨테이너들 간의 연결 (link)
# 동일서버내에 실행중인 컨테이너들 끼리의 연결 (아래는 nginx 컨테이너가 mongodb 컨테이너에 연결하는 과정)
1. mongodb 컨테이너실행 (로컬에 이미지가 없으면 기본 docker hub에서 찾아가지고온다.)
$ docker run --name db -d mongo /bin/bash
$ docker ps
CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORT | NAMES |
5cdf574dedca | mongo | "/entrypoint.sh mongo" | About a minute ago | Up About a minute | 27017/tcp | db |
2. nginx 컨테이너실행 - mongodb에 연결하면서
$ docker run --name web -d -p 80:80 --link db:db nginx
# web => nginx 이미지로 실행할 컨테이너이름
# --link옵션으로
# db:db => 링크하고자하는 컨테이너명:별칭
# nginx => web컨테이너가 실행할 이미지명
$ docker ps
CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORT | NAMES |
5bda65bf2e35 | nginx | "nginx -g 'daemon off" | 6 seconds ago | Up 5 seconds | 0.0.0.0:80->80/tcp, 443/tcp | web |
5cdf574dedca | mongo | "/entrypoint.sh mongo" | About a minute ago | Up About a minute | 27017/tcp | db |
다른 서버의 컨테이너들 간의 연결 (abbassador 컨테이너)
# 동일서버내의 컨테이너들 끼리 연결은 --link
# 서로다른 서버의 컨테이너들 끼리 연결은 ambassador 컨테이너로
- ambassador컨테이너는 SOCAT프로그램을 사용
- SOCAT : SOket Cat, 소켓통신을 다른 채널로 전달하는 프로그램. http://www.dest-unreach.org/socat/
# 아래는 redis서버 컨테이너와, 다른서버에 있는 redis클라이언트 컨테이너를 연결하는 과정
1. redis서버 컨테이너 시작
$ docker pull redis:latest
$ docker images | grep redis
redis latest 2f2578ff984f 12 days ago 109.2 MB
$ docker run -d --name redis redis:latest
$ docker ps | grep redis
CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORT | NAMES |
33e9a8867199 | redis:latest | "/entrypoint.sh redis" | About a minute ago | Up About a minute | 6379/tcp | redis |
2. ambassador서버 컨테이너 시작 (redis서버)
$ docker run -d --link redis:redis --name redis_ambassador -p 6379:6379 svendowideit/ambassador
$ docker ps
CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORT | NAMES |
b907d0eac059 | svendowideit/ambassador | "/bin/sh -c 'env | gr" | 7 seconds ago | Up 4 seconds | 0.0.0.0:6379->6379/tcp | redis_ambassador |
3. ambassador서버 컨테이너 시작, (redis클라이언트)
$ docker run -d --name redis_ambassador --expose 6379 -e REDIS_PORT_6379_TCP=tcp://192.168.56.115:6379 svendowideit/ambassador
# tcp://192.168.56.115:6379 => redis서버의 주소:포트
$ docker ps
CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORT | NAMES |
f7fb3bfa1df8 | svendowideit/ambassador | "/bin/sh -c 'env | gr" | 5 seconds ago | Up 4 seconds | 6379/tcp | redis_ambassador |
4. redis클라이언트 컨테이너 시작
$ docker run -i -t --rm --link redis_ambassador:redis relateiq/redis-cli
# --rm => 컨테이너를 실행만 하고 컨테이너자체는 삭제. redis클라이언트처럼 1회성을 사용할때
# relateiq/redis-cli => 이 이미지를 사용해서 컨테이너실행
redis 172.17.0.4:6379> ping
PONG
# 순서는 ping -> redis client -> ambassador @redis client -> ambassador @redis server -> redis server
'IT > Docker' 카테고리의 다른 글
Docker base image (도커 기본이미지) (0) | 2018.07.15 |
---|---|
Docker Container tutorial (도커 컨테이너 매뉴얼) 2-5.명령어 (volume) (0) | 2018.07.14 |
Docker Container tutorial (도커 컨테이너 매뉴얼) 2-3.명령어 (container 2) (0) | 2018.07.14 |
Docker Container tutorial (도커 컨테이너 매뉴얼) 2-2.명령어 (image 2) (0) | 2018.07.12 |
Docker Container tutorial (도커 컨테이너 매뉴얼) 2-1.명령어 (Container) (0) | 2018.07.10 |
댓글