docker-compose中的外部链接如何工作?

在docker撰写我们有external_links选项,但它是如何工作的?

只是link写入/ etc / hosts,但external_links不是。

请解释这个选项是如何工作的,因为在docker上没有任何关于它的话。

当你像这样创build一个docker-compose.yml时:

 version: '2' services: sleep-one-hour: image: alpine command: sleep 3600 external_links: - google.com:216.58.222.110 

不要指定一个默认的networkingconfiguration,docker-compose实际上是通过运行docker-compose up命令的文件夹的名字来创build一个自定义的默认networking:

 [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 

然后创build容器并join这个自定义networking,并且在容器joinnetworking时设置外部链接。 您可以检查最近创build的容器并亲自查看:

 [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命令中, docker-compose up实际上就是这样的:

 [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