network_mode
は、仮想ネットワークのモードを指定するためのパラメータです。
これはDockerのリリース初期から実装されている機能です。
コンテナをネットワークから隔離したいというようなときに使われますが、本番環境だとセットアップやトラブルシューティングのときに構成や制御が厄介になるだけなので、特殊な検証環境でもない限りは bridge
と host
しか利用されていないと思います。
links
は、ネットワーク関係の環境変数をコンテナ起動時にコンテナに渡すための便利な「ハック」を機能として提供しています。
例えば、mysqlコンテナの port 3306 を開放していて links
で db
と設定していたなら、links
で db
と指定したすべてのコンテナに DB_PORT_5432_TCP_PORT=3306
というような環境変数を渡した状態でコンテナ起動するための機能です。
一見すると便利な機能のようですが、トラブルシューティングなどのときに links
の機能のことをすっかり忘れていると厄介な機能だったりするので使用することは推奨されていません。
(環境変数を使いたい場合は、最初から環境変数をenvで定義するほうがお作法としてお行儀が良いです。)
depends_on
はコンテナ間の依存関係を紐付けするために使われます。
nginx コンテナと mysql コンテナがあったとして、どちらを先に起動しておかなければならないのかというときに、コンテナを起動する順番を決定するために使います。
network_mode: "bridge"(ブリッジ)
network_mode: "host"(ホスト共有)
network_mode: "none"(ネットワーク接続無し)
network_mode: "service:[service name]"(特定のサービスとのみ接続する)
network_mode: "container:[container name/id]"(特定のコンテナとのみ接続する)
networks
は、ネットワーク設定を細かく制御します。
IPアドレスを固定したいとか、ネットワークドライバを制御したいというようなときに使います。
開発環境の docker-compose で使うことはありますが、本番環境でこの設定をいじることは滅多にないと思います。
networksの設定例:
services:
proxy:
build: ./proxy
networks:
- frontend
ipv4_address: 172.30.1.1
app:
build: ./app
networks:
- frontend
ipv4_address: 172.30.1.2
- backend
ipv4_address: 172.30.2.1
db:
image: postgres
networks:
- backend
ipv4_address: 172.30.2.2
networks:
app_net:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.30.0.0/24
gateway: 172.30.0.1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。