본문 바로가기
IT/Docker

Docker Container tutorial (도커 컨테이너 매뉴얼) 2-4.명령어 (container 3)

by halizy 2018. 7. 14.

이번 포스팅은 기본적으로 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




댓글