docker - Minidcos:无法使用主机名在 docker 容器之间进行通信
问题描述
我正在努力在 minidcos 使用主机名创建的两个 docker 容器之间进行通信。这是我所做的:
第 1 步:创建一个新的 docker 网络
$ docker network create minidcos
第 2 步:创建一个新的 minidcos 集群:
$ minidcos docker create
--docker-version 17.12.1-ce
--agents 4
--workspace-dir ./workspace
--network minidcos
--genconf-dir ./custom-genconf
--verbose
./dcos_generate_config.sh
第 3 步:列出容器
$ docker ps
89d2861fd037 mesosphere/dcos-docker "/sbin/init" 31 minutes ago Up 31 minutes dcos-e2e-default-d67b8-public-agent-0
33d0c83c07d7 mesosphere/dcos-docker "/sbin/init" 31 minutes ago Up 31 minutes dcos-e2e-default-d67b8-agent-3
221e9ecd4464 mesosphere/dcos-docker "/sbin/init" 31 minutes ago Up 31 minutes dcos-e2e-default-d67b8-agent-2
ef7dbf33fc53 mesosphere/dcos-docker "/sbin/init" 31 minutes ago Up 31 minutes dcos-e2e-default-d67b8-agent-1
b1994b77dce0 mesosphere/dcos-docker "/sbin/init" 31 minutes ago Up 31 minutes dcos-e2e-default-d67b8-agent-0
dc46644e391e mesosphere/dcos-docker "/sbin/init" 31 minutes ago Up 31 minutes dcos-e2e-default-d67b8-master-0
第 4 步:验证我的自定义“minidcos”网络
$ docker network inspect minidcos
[
{
"Name": "minidcos",
"Id": "b105cbfe91228334b52406a2ccf53c2fdfc085b5030b9203684dd78a44f67d1c",
"Created": "2019-04-10T14:06:03.493606395+02:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.19.0.0/16",
"Gateway": "172.19.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"221e9ecd44648e5729d00b1d3fb5c677c499c3a181b06f76656e4404dca4ebca": {
"Name": "dcos-e2e-default-d67b8-agent-2",
"EndpointID": "073b3b6a35b555463893daf271cf2de367205ab0826fbbf82d6be46367d4d9f9",
"MacAddress": "02:42:ac:13:00:05",
"IPv4Address": "172.19.0.5/16",
"IPv6Address": ""
},
"33d0c83c07d7abe49fbdbacff68027e0f162ccf66fb348b3df8fa28216872d3d": {
"Name": "dcos-e2e-default-d67b8-agent-3",
"EndpointID": "e8ac563a652f5d69a740a75e1a9ba374ab648698d8d0e449abc23eed2b3f6359",
"MacAddress": "02:42:ac:13:00:06",
"IPv4Address": "172.19.0.6/16",
"IPv6Address": ""
},
"89d2861fd037a5dce81fa0079d445531328cc1b22650c80add5bf72c985dce0b": {
"Name": "dcos-e2e-default-d67b8-public-agent-0",
"EndpointID": "6e5cd6d75bd96922ea1e98360520849e1b459948fe68fbba5b4a7e7d5a8db68d",
"MacAddress": "02:42:ac:13:00:07",
"IPv4Address": "172.19.0.7/16",
"IPv6Address": ""
},
"b1994b77dce008ef5c28f634ad14cfcbb69dc6c14ee530a784533ad09c9f8d58": {
"Name": "dcos-e2e-default-d67b8-agent-0",
"EndpointID": "4adc52ff6a64afd79d33c9b40559c9ff4c5086f12d7c82d26206ab876908b84e",
"MacAddress": "02:42:ac:13:00:03",
"IPv4Address": "172.19.0.3/16",
"IPv6Address": ""
},
"dc46644e391e4e9cc2978c534ab9eae91db31cff3f3d06e54a4870049fe080ab": {
"Name": "dcos-e2e-default-d67b8-master-0",
"EndpointID": "9460ea8a07722d5de337ad8375f452218b54462b5e1a98def7590725415fa09a",
"MacAddress": "02:42:ac:13:00:02",
"IPv4Address": "172.19.0.2/16",
"IPv6Address": ""
},
"ef7dbf33fc53d06ada2a29a6637c22a294263182a060a4ef35db365dd2fbaf17": {
"Name": "dcos-e2e-default-d67b8-agent-1",
"EndpointID": "228253db88795489a228bf9da7132475f4146b357dabff43ca6d009072e864ee",
"MacAddress": "02:42:ac:13:00:04",
"IPv4Address": "172.19.0.4/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
现在据我所知,我应该能够通过它的主机名 ping 每个容器。但这由于某种原因不起作用。例如,我无法dcos-e2e-default-d67b8-agent-0
从以下位置 ping dcos-e2e-default-d67b8-agent-1
:
[root@dcos-e2e-default-d67b8-agent-1 /]# ping dcos-e2e-default-d67b8-agent-0
ping: dcos-e2e-default-d67b8-agent-0: Name or service not known
这是为什么?可能是 DC/OS 阻止 docker 解析主机名吗?
更新
我使用docker create
. 在这个容器中,我可以通过它的主机名 ping 所有其他容器。猜猜它确实是 DC/OS 破坏了主机名解析......
解决方案
推荐阅读
- reactjs - React - 如何在包含函数中排除特定的数组值
- ada - 如何将枚举转换为整数以处理溢出/环绕?
- python-3.x - 减去日期并返回 1 或 0
- flutter - 使用 HttpClient 进行 Flutter Widget 测试
- swift - Swift AVFoundation 指令不设置不透明度
- php - 如何在 phabricator 中删除端点?
- react-native - React Native 无法启动服务器并在 @react-native-community/cli/build/commands/doctor/healthchecks/index.js 中出现错误
- c++ - 如何读取 Blender 的默认立方体?
- python - 如何根据标准偏差用随机值填充列的空单元格但每个单元格必须包含新值
- python - 如何使用带有索引的 OpenPyXl 将多级索引导出到 excel