我正在macOS 10.12上使用Docker 1.12.5,搭建一个开发环境。 我有一个应用程序镜像和一个共享的redis镜像,其中包含一些预配置变量。
即使按照一些教程(并阅读了关于Mac上docker0
不可用的内容),我仍然无法连接这两个容器。
我使用以下命令启动我的redis
镜像:
docker run -d -p 6379:6379 (IMAGE ID)
在我的redis
镜像中,我拥有:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dffb89854618 d59 "docker-entrypoint.sh" 20 seconds ago Up 19 seconds 0.0.0.0:6379->6379/tcp drunk_williams
我可以从我的 Mac 上使用 redis-cli
命令成功连接,并且没有任何问题。
但是,当我启动一个简单的 ubuntu
镜像时,似乎无法连接到这个单独的 redis
镜像:
root@2d4eda315f4f:/# ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:03
inet addr:172.17.0.3 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::42:acff:fe11:3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:20707 errors:0 dropped:0 overruns:0 frame:0
TX packets:11515 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:28252929 (28.2 MB) TX bytes:635848 (635.8 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:680 (680.0 B) TX bytes:680 (680.0 B)
root@2d4eda315f4f:/# telnet localhost 6379
Trying ::1...
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
root@2d4eda315f4f:/# telnet 172.17.0.3 6379
Trying 172.17.0.3...
telnet: Unable to connect to remote host: Connection refused
这是因为主机没有可用的docker0
接口吗?在开发环境中,是否有一些简单的解决方法允许这些容器进行通信(在同一主机上运行)?
更新: 尝试使用命名容器,仍然无法连接。
docker run -d --name redis_server redis
结果为:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5d05820aa985 redis "docker-entrypoint.sh" 43 hours ago Up 1 seconds 6379/tcp redis_server
但是如果我启动一个新的Ubuntu容器:
root@e92b47419bc4:/# redis-cli -h redis_server
Could not connect to Redis at redis_server:6379: Name or service not known
我不确定如何找到/连接第一个redis_server
容器。
--link
。我倾向于使用 docker-compose 来处理这些事情,你可以将所有内容写入一个 YAML 文件中,而不是在命令行标志上摆弄...之前忘记了。 - Dan Lowe--link
,因为它已经被废弃了:https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/鉴于这个配置是为一个新项目准备的,我想避免使用已经过时的工具。 :-) - Craig Otis