You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

링크(link)는같은 호스트에 있는 컨테이너들끼리 통신할 수 있는 방법이다.

컨테이너 간의 통신은 내부 도커 네트워크를 통해서 이루어지며, 

통신은 호스트의 네트워크로 노출되지 않는다는것을 의미.


링크는 docker run 실행 후 

--link CONTAINER:ALIAS 로 설정 초기화하면,

CONTAINER에는 링크컨테이너의 이름을 ALIAS 에서는 마스터 컨테이너 내부에서 링크 컨테이너를 참조할때 사용하는 부모 이름을 설정한다.


다음은 Redis 컨테이너를 생성하고 연결하는 방법이다.

[root@localhost ~]# docker run -d --name myredis redis
9f28a7ae2eaa9453d665249b0b198c4ca85cf6ab...
[root@localhost ~]# docker run --link myredis:redis debian env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=0524ffd6c542
REDIS_PORT=tcp://172.17.0.3:6379
REDIS_PORT_6379_TCP=tcp://172.17.0.3:6379
REDIS_PORT_6379_TCP_ADDR=172.17.0.3
REDIS_PORT_6379_TCP_PORT=6379
REDIS_PORT_6379_TCP_PROTO=tcp
REDIS_NAME=/modest_mestorf/redis
REDIS_ENV_GOSU_VERSION=1.10
REDIS_ENV_REDIS_VERSION=4.0.8
REDIS_ENV_REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-4.0.8.tar.gz
REDIS_ENV_REDIS_DOWNLOAD_SHA=ff0c38b8c156319249fec61e5018cf5b5fe63a65b61690bec798f4c998c232ad
HOME=/root

링크 컨테이너로부터 환경변수를 참조하는데, 해당 환경변수는 REDIS_ENV로 시작하게 된다.


기본적으로 링크의 구성여부와 상관없이 컨테이너들은 서로 통신이 가능하다.

컨테이너가 링크되면, 

도커는 Iptables 규칙을 설정 후 명시적 설정된 포트를 통하여 컨테이너가 통신할 수 있다.

링크는 컨테이너가 재시작 되더라도 그대로 유지 되지 않으며, 링크 컨테이너가 대체되면 갱신이 되지 않는다.

마스터 컨테이너가 시작되기 전에 링크 컨테이너가 시작되어야 하며 양방향 링크가 불가능하다.

 




  • No labels