Docker
컨테이너 연결
수색…
매개 변수
매개 변수 | 세부 |
---|---|
tty:true | docker-compose.yml에서, tty: true 플래그는 컨테이너의 sh 명령이 입력을 기다리는 것을 계속 유지합니다. |
비고
host
및 bridge
네트워크 드라이버는 단일 도커 호스트의 컨테이너를 연결할 수 있습니다. 컨테이너가 하나의 시스템을 넘어서 통신 할 수있게하려면 오버레이 네트워크를 만듭니다. 네트워크를 만드는 단계는 도커 호스트가 관리되는 방법에 따라 다릅니다.
- 군중 모드 :
docker network create --driver overlay
- docker / swarm : 외부 키 - 값 저장소가 필요합니다.
도커 네트워크
동일한 도커 네트워크에있는 컨테이너는 노출 된 포트에 액세스 할 수 있습니다.
docker network create sample
docker run --net sample --name keys consul agent -server -client=0.0.0.0 -bootstrap
영사의 Dockerfile 은 8500
, 8600
및 몇 개의 포트를 추가로 노출합니다. 시연하려면 동일한 네트워크에서 다른 컨테이너를 실행하십시오.
docker run --net sample -ti alpine sh
/ # wget -qO- keys:8500/v1/catalog/nodes
여기서 영사 컨테이너는 첫 번째 명령에 주어진 이름 인 keys
결정됩니다. Docker 는 --name
을 사용하여 컨테이너를 찾기 위해이 네트워크에서 DNS 확인 을 제공합니다 .
도커 작성
네트워크는 작성 파일 (v2)에서 지정할 수 있습니다. 기본적으로 모든 컨테이너는 공유 네트워크에 있습니다.
다음 파일에서 시작하십시오 : example/docker-compose.yml
:
version: '2'
services:
keys:
image: consul
command: agent -server -client=0.0.0.0 -bootstrap
test:
image: alpine
tty: true
command: sh
docker-compose up -d
로이 스택을 시작하면 상위 디렉토리 다음에 example_default
라는 이름의 네트워크가 생성됩니다. docker network ls
확인하십시오.
> docker network ls
NETWORK ID NAME DRIVER SCOPE
719eafa8690b example_default bridge local
알파인 컨테이너에 연결하여 컨테이너가 확인하고 통신 할 수 있는지 확인하십시오.
> docker exec -ti example_test_1 sh
/ # nslookup keys
...
/ # wget -qO- keys:8500/v1/kv/?recurse
...
작성 파일에는 docker 네트워크 명령에서 네트워크 이름, 드라이버 및 기타 옵션을 지정하는 networks:
최상위 섹션이있을 수 있습니다.
컨테이너 연결
docker --link
인수 및 link:
sections docker-compose는 다른 컨테이너에 별칭 을 만듭니다.
docker network create sample
docker run -d --net sample --name redis redis
링크를 사용하면 원래 이름이나 매핑이 redis 컨테이너를 해결합니다.
> docker run --net sample --link redis:cache -ti python:alpine sh -c "pip install redis && python"
>>> import redis
>>> r = redis.StrictRedis(host='cache')
>>> r.set('key', 'value')
True
도커 이전에는 1.10.0
컨테이너 연결 설정 네트워크 연결 - 이제 도커 네트워크에서 제공하는 동작. 이후 버전의 링크는 기본 브리지 네트워크에만 legacy
효과를 제공합니다.