이 글에서는 주로 Docker 다중 컨테이너 연결을 소개합니다(예: Tomcat+Mysql). Docker는 여러 컨테이너가 직접 액세스할 수 있는 방법을 제공합니다. access 네트워크 포트를 통한 액세스
Docker는 여러 컨테이너가 직접 액세스할 수 있는 방법을 제공합니다. 가장 간단한 방법은 포트 매핑 -p 매개변수를 사용하여 매핑된 포트를 지정하거나 -P를 사용하여 모든 포트를 매핑하는 것입니다. 액세스를 위해 네트워크 포트를 통해 직접 액세스합니다.
그러나 네트워크 포트 매핑 방법은 Docker에서 여러 컨테이너를 연결하는 유일한 방법은 아닙니다. 컨테이너가 함께 연결될 때 Docker의 연결 시스템(--link)을 사용하는 것이 더 안전한 방법입니다. 수신자 컨테이너는 소스 컨테이너의 정보를 볼 수 있습니다.
Tomcat + Mysql을 예로 들어 컨테이너 간 연결을 설정합니다.
컨테이너 간 직접 연결을 설정하려면 --link 옵션을 사용하세요
--link
여기에서는 두 개 이상의 컨테이너 간에 연결을 설정하는 방법을 설명하기 위해 Tomcat + Mysql 서비스를 구축합니다.
컨테이너 연결을 설정하려면 컨테이너 이름을 사용해야 합니다. --name을 사용하여 소스 컨테이너 이름을 mysql로 지정합니다
docker run --name mysql -d gsoft/mysql:5.6
다음으로 tomcat 컨테이너를 생성하고 mysql 컨테이너에 연결
코드는 다음과 같습니다.
docker run --name tomcat -d -p 80:8080 --link mysql:mysql gsoft/tomcat:7.0
여기서 --link 옵션을 사용하여 연결할 컨테이너가 mysql임을 지정합니다.
컨테이너 통신 정보
두 컨테이너를 연결한 후 수신 컨테이너(수신자)는 필연적으로 소스 컨테이너(소스)의 리소스에 액세스해야 합니다. 컨테이너에 대한 연결을 설정할 때 원본 컨테이너는 생성 시 노출될 포트를 지정하기 위해 -p/-P를 사용하지 않는데, 원본 컨테이너 정보에 어떻게 액세스합니까?
수신 컨테이너가 소스 컨테이너의 정보에 액세스할 수 있도록 Docker는
EnvironmentVariables
라는 두 가지 방법을 제공합니다./etc/hosts 파일
환경 변수
Docker가 컨테이너에 연결할 때 다음을 사용합니다. --link 제공된 매개변수는 소스 컨테이너의 Dockerfile에서 ENV 명령을 사용하여 설정된 환경 변수를 포함하여 수신자 컨테이너에 일부 환경 변수를 자동으로 생성하고 소스 컨테이너가 시작될 때(docker run) 다음을 사용합니다. e 또는 - -env, --env-file 매개변수로 지정된 환경 변수입니다.
에는 주로 다음과 같은 환경 변수가 포함되어 있으며 여기서 alias=mysql로 가정합니다.
<alias>_PORT <alias>_PORT_<port>_<protocol> <alias>_PORT_<port>_<protocol>_ADDR <alias>_PORT_<port>_<protocol>_PORT <alias>_PORT_<port>_<protocol>_PROTO <alias>_NAME
예:
#docker run -i -t --rm --link mysql:mysql ubuntu:14.04 env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=9c74aa611463 TERM=xterm MYSQL_PORT=tcp://172.17.0.3:3306 MYSQL_PORT_3306_TCP=tcp://172.17.0.3:3306 MYSQL_PORT_3306_TCP_ADDR=172.17.0.3 MYSQL_PORT_3306_TCP_PORT=3306 MYSQL_PORT_3306_TCP_PROTO=tcp MYSQL_NAME=/desperate_ritchie/mysql HOME=/root
위의 예에서 컨테이너 별칭은 msyql로 지정되므로 모든 환경 변수는 MYSQL_로 시작됩니다.
소스 컨테이너가 다시 시작되면 수신 컨테이너의 환경 변수 정보가 자동으로 업데이트되지 않으므로 소스 컨테이너의 IP 주소를 사용하려는 경우 호스트에 구성된 /etc/ 호스트 정보를 사용하십시오.
/etc/hosts 파일
Docker는 환경 변수 외에도 수신 컨테이너의 /etc/hosts 파일에 있는 호스트 정보도 업데이트합니다.
# docker run -i -t --rm --link mysql:mysql ubuntu:14.04 /bin/bash # cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.3 mysql 115346bdb403 172.17.0.5 09bdf7805133
위에서 볼 수 있듯이 수신 컨테이너의 호스트 파일에는 로컬 IP와 별칭, 소스 컨테이너(mysql)의 IP와 별칭이라는 두 가지 추가 정보가 추가됩니다.
환경 변수와 달리 소스 컨테이너를 다시 시작하면 수신 컨테이너의 /etc/hosts 정보가 자동으로 업데이트됩니다.
위 내용은 Mysql+Tomcat으로 Docker 다중 컨테이너 연결을 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!