>  기사  >  데이터 베이스  >  Mysql+Tomcat으로 Docker 다중 컨테이너 연결을 설정하는 방법

Mysql+Tomcat으로 Docker 다중 컨테이너 연결을 설정하는 방법

黄舟
黄舟원래의
2017-03-24 13:11:331344검색

이 글에서는 주로 Docker 다중 컨테이너 연결을 소개합니다(예: Tomcat+Mysql). Docker는 여러 컨테이너가 직접 액세스할 수 있는 방법을 제공합니다. access 네트워크 포트를 통한 액세스

Docker는 여러 컨테이너가 직접 액세스할 수 있는 방법을 제공합니다. 가장 간단한 방법은 포트 매핑 -p 매개변수를 사용하여 매핑된 포트를 지정하거나 -P를 사용하여 모든 포트를 매핑하는 것입니다. 액세스를 위해 네트워크 포트를 통해 직접 액세스합니다.

그러나 네트워크 포트 매핑 방법은 Docker에서 여러 컨테이너를 연결하는 유일한 방법은 아닙니다. 컨테이너가 함께 연결될 때 Docker의 연결 시스템(--link)을 사용하는 것이 더 안전한 방법입니다. 수신자 컨테이너는 소스 컨테이너의 정보를 볼 수 있습니다.

Tomcat + Mysql을 예로 들어 컨테이너 간 연결을 설정합니다.

컨테이너 간 직접 연결을 설정하려면 --link 옵션을 사용하세요

--link b55b5a51e06b65c594b87dda7b4aa1dc:alias

여기에서는 두 개 이상의 컨테이너 간에 연결을 설정하는 방법을 설명하기 위해 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는

  1. EnvironmentVariables

    라는 두 가지 방법을 제공합니다.
  2. /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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.