この記事では、主に Docker マルチコンテナ接続 (Tomcat+Mysql を例にします) を紹介します。Docker は、ネットワーク ポートを介して複数のコンテナに直接アクセスできるようにする、複数のコンテナによる直接アクセスの方法を提供します。複数のコンテナに直接アクセスする最も簡単な方法は、ポート マッピング -p パラメータを直接使用してマップされたポートを指定するか、-P を使用してすべてのポートをマップすることです。複数のコンテナはネットワーク ポートを介して直接アクセスできます。
しかし、Docker で複数のコンテナを接続する唯一の方法ではありません。より安全な方法は、Docker の接続システム (--link) を使用して複数のコンテナを接続することです。ソースコンテナの情報を確認できます。
Tomcat + Mysqlを例としてコンテナ間の接続を確立しますコンテナ内で直接接続を確立するには、 --link オプションを使用します
--link
ここでは、Tomcat + Mysql サービスを作成します。これは、2 つ以上のコンテナ間の接続を確立する方法の例です。
コンテナ接続を確立するには、コンテナの名前に依存する必要があります。 --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 であることを指定します。
コンテナ通信情報2つのコンテナ間の接続を確立した後、コンテナ、つまりソースコンテナの接続を確立すると、受信側コンテナ(Recipient)は必然的にソースコンテナ(Source)のリソースにアクセスする必要があります。公開するポートの指定に -p/-P を使用しない場合、ソース コンテナ情報にアクセスするにはどうすればよいですか?
受信コンテナがソースコンテナの情報にアクセスできるようにするために、Docker は 2 つのメソッドを提供します:
Docker in コンテナーに接続すると、ソース コンテナーの Dockerファイル
で ENV コマンドを使用して設定された環境変数を含む、--link で指定されたパラメーターに従って、受信側コンテナーにいくつかの環境変数が自動的に作成されます。コンテナーを開始する (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
そのため、送信元コンテナのIPアドレスを使用したい場合は、/で設定されたホスト情報を使用してください。など/ホスト。
環境変数に加えて、Docker は受信コンテナの /etc/hosts ファイル内のホスト情報も更新します。 環境変数とは異なり、移動元コンテナが再起動されると、受信コンテナの/etc/hostsの情報が自動的に更新されます。 以上がMysql+Tomcat を使用して Docker マルチコンテナ接続を確立する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。# 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