ホームページ  >  記事  >  データベース  >  Mysql+Tomcat を使用して Docker マルチコンテナ接続を確立する方法

Mysql+Tomcat を使用して Docker マルチコンテナ接続を確立する方法

黄舟
黄舟オリジナル
2017-03-24 13:11:331345ブラウズ

この記事では、主に Docker マルチコンテナ接続 (Tomcat+Mysql を例にします) を紹介します。Docker は、ネットワーク ポートを介して複数のコンテナに直接アクセスできるようにする、複数のコンテナによる直接アクセスの方法を提供します。複数のコンテナに直接アクセスする最も簡単な方法は、ポート マッピング -p パラメータを直接使用してマップされたポートを指定するか、-P を使用してすべてのポートをマップすることです。複数のコンテナはネットワーク ポートを介して直接アクセスできます。

しかし、Docker で複数のコンテナを接続する唯一の方法ではありません。より安全な方法は、Docker の接続システム (--link) を使用して複数のコンテナを接続することです。ソースコンテナの情報を確認できます。

Tomcat + Mysqlを例としてコンテナ間の接続を確立します

コンテナ内で直接接続を確立するには、 --link オプションを使用します


--link b55b5a51e06b65c594b87dda7b4aa1dc:alias

ここでは、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 つのメソッドを提供します:

    環境変数
  1. /etc/hosts ファイル
  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

上記の例では、コンテナのエイリアスが msyql として指定されているため、すべての環境変数は MYSQL_ で始まります。

送信元コンテナが再起動された場合、受信コンテナの環境変数情報は自動的に更新されないことに注意してください

そのため、送信元コンテナのIPアドレスを使用したい場合は、/で設定されたホスト情報を使用してください。など/ホスト。

/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
上記からわかるように、受信コンテナの hosts ファイルには、ローカル IP とエイリアス、ソース コンテナ (mysql) の IP とエイリアスという 2 つの追加情報が追加されます。

環境変数とは異なり、移動元コンテナが再起動されると、受信コンテナの/etc/hostsの情報が自動的に更新されます。

以上がMysql+Tomcat を使用して Docker マルチコンテナ接続を確立する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。