web-dev-qa-db-ja.com

Dockerコンテナのリンク

SSLを正しく機能させるには、WordPressインストールを自分のサーバーに移行する必要があります。もともとはGoDaddy共有ホスティングでしたが、外部SSL証明書のインストールは許可されていません。

少し偏執的でセキュリティについての知識があるので、Dockerコンテナ内でサービスを実行して、最悪のシナリオでの被害を制限したいと思います。

私がよくわからないのは、Dockerコンテナを接続する方法です。たとえば、MySQL/MariaDBの実行を担当するDockerコンテナがあり、WordPress PHPコードをホストして実行しているFastCGIを実行している別のDockerコンテナとそのサービスを共有する方法がわかりません。

現在Dockerコンテナの外部で実行されている私のWebサーバー(NGINX)は、Dockerコンテナの公開されたポートに沿ってプロキシすることに問題はありませんが、FastCGIサーバー(つまりPHP)はどのようにしてMySQLに到達できますかコンテナ?

Dockerでこのような複数の独立したサービスをペアリングする方法を詳しく説明したガイドはありますか?

4
Naftuli Kay

実際、Dockerは仮想化を行いません。イメージを処理し、LXCコンテナー仮想化を使用してイメージを実行するツールにすぎません。ここで、実際にLXCとその機能を探していると思います。 LXCは仮想ネットワークを実行でき、MySQLはネットワーク経由でアクセスできます。必要なのは、ビルディングブロックを相互に接続することだけです;)。

通常のセットアップでは、各ホストには独自のIPアドレスと開いているポートのセットがあり、各ホストは仮想ネットワークを介して他のホストのTCP/IPサービスにアクセスできます。セキュリティはLinuxカーネルによって処理されます。セキュリティを処理する1つの方法は、古き良きiptablesベースのファイアウォールです。しかし、selinuxラベリングに基づく他の方法があるかもしれません。

0
Pavel Šimerda

Dockerコンテナーが機能する方法は、特に設定しない限り、デフォルトで分離されていることです。

質問に答えるには、必要なポートを開き、これらのポートを介してコンテナをリンクして、指定したポートを介してのみ通信するようにします。

Dockerfileで指定する場合、このコマンドは「EXPOSE」と呼ばれます: http://docs.docker.io/reference/builder/#expose

EXPOSE  41000

コンテナを起動するときに、公開するポートを起動時に渡すこともできます(元のDockerfileで指定されているものを上書きします)。

Sudo docker run -p 41000:41000 -d <your username>/<your image name>

-p、-publish = []コンテナのポートをホスト形式に公開します。ip:hostPort:containerPort | ip :: containerPort | hostPort:containerPort(実際のマッピングを確認するには「dockerport」を使用してください)

リンクも参照してください http://docs.docker.io/use/working_with_links_names/#working-with-links-names


WordpressおよびDocker:

3
program247365