我想使用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
即可成功存取資料庫服務