docker link 运行后如何连接?

查看:164
本文介绍了docker link 运行后如何连接?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我想使用mysql 容器,按照hub上的描述创建容器

docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8

docker run -d --name nx --link mysql:db nginx

直接使用基础容器没有连接成功

~# docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED              STATUS              PORTS                                            NAMES
bf673d61f789        nginx                    "nginx -g 'daemon ..."   3 seconds ago        Up 2 seconds        80/tcp, 443/tcp                                  nx
1ac01c685e9b        mysql:8                  "docker-entrypoint..."   About a minute ago   Up About a minute   3306/tcp                                         mysql

在 nginx 无法访问localhost:3306

通过命令
docker inspect -f "{{ .HostConfig.Links }}" proxy
[/mysql:/nx/db]
查看到连接成功
nginx 中的hosts

127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.4      db 1ac01c685e9b mysql
172.17.0.6      8242073e142b

看似有些随意,

与我预想的 localhost:3306 差别很大

有没有办法连接后可以使用 localhost:3306使用?

解决方案

link是建立两个容器的网络链接,不是把两个容器的网络端口合并在一起!!
把访问localhost:3306换成访问db:3306即可成功访问数据库服务

这篇关于docker link 运行后如何连接?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆