
docker compose にはexternal_links
オプションがありますが、どのように機能するのでしょうか?
link
/etc/hosts に書き込むだけですが、そうexternal_links
ではありません。
このオプションがどのように機能するかを説明してください。ドックでは誰もそれについて言及していないからです。
答え1
次のように docker-compose.yml を作成します。
version: '2'
services:
sleep-one-hour:
image: alpine
command: sleep 3600
external_links:
- google.com:216.58.222.110
デフォルトのネットワーク構成を指定しないでください。docker-compose は実際には、コマンドを実行しているフォルダーの名前でカスタムのデフォルト ネットワークを作成しますdocker-compose up
。
[myserver:external-links-test] docker-compose up
Creating network "externallinkstest_default" with the default driver
Creating externallinkstest_sleep-one-hour_1
Attaching to externallinkstest_sleep-one-hour_1
次に、コンテナが作成され、このカスタム ネットワークに参加します。コンテナがネットワークに参加すると、外部リンクが設定されます。最近作成されたコンテナを調べて、自分で確認できます。
[myserver:~] docker inspect 1056bb135bc0
[
{
"Id": "1056bb135bc0200dcfff1fa25affd561042e0515641adf435e4b63a16903f93d",
"Created": "2017-01-26T14:31:57.928385177Z",
... other info ...
"NetworkSettings": {
... other info ...
"Networks": {
"externallinkstest_default": {
"IPAMConfig": null,
"Links": [
"google.com:216.58.222.110"
],
"Aliases": [
"1056bb135bc0",
"sleep-one-hour"
],
"NetworkID": "343121714be4750eebf12997fa73c3aaba0f2cf5faace633ab1ca683a2959632",
"EndpointID": "74f1a975236a8ab0f60379408faa04022f1b9e398c7b8a541158c4ca889aff98",
"Gateway": "172.20.0.1",
"IPAddress": "172.20.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:14:00:02"
}
}
}
}
]
これはdocker-compose up
、純粋な docker コマンドでは実際には次のようになります。
[myserver:external-links-test] docker network create --attachable --subnet 61.0.0.0/24 externallinkstest_default
13f1b9caad1b997245be0fe48922ff04568c7bcf1e3bdd8846d87f53934ca390
[myserver:external-links-test] docker run -d --name externallinkstest_sleep-one-hour_1 alpine sleep 3600
17b642eb4a3cb562783ae76192589d55cb9174cd2c8a705464f62108ff11372c
[myserver:external-links-test] docker network connect --link google.com:216.58.222.110 externallinkstest_default externallinkstest_sleep-one-hour_1