Home >> Docker 开放端口导致容器间network失效问题

Docker 开放端口导致容器间network失效问题

2023-03-21 00:23 AtmosphereMao

在容器运行中不删除情况下开放mysql端口,导致服务器无法通过network访问mysql

问题

需将服务器上的项目构建为Git仓库,则需将项目放到本地进行开发,脑子一热想开放服务器上docker容器中的mysql3306端口。(但容器我又不敢删,不知道他们有没有绑定卷,万一没有删了不就~删库跑路?~)

所以需在容器运行中更改mysql的端口

一:通过修改配置文件修改docker容器端口映射

  1. 找到要修改容器的CONTAINER ID

docker ps -a

  1. 进入该容器目录

docker inspect【CONTAINER ID】| grep Id cd /var/lib/docker/containerid

3.停止容器

docker stop 【CONTAINER ID】

  1. 停止主机docker服务

systemctl stop docker

  1. 进入2得到的文件夹内,修改hostconfig.json 和 config.v2.json

vim hostconfig.json 比如新增一个 80 端口,在PortBindings下边添加以下内容,端口配置之间用英文字符逗号隔开

"80/tcp": [
    {
        "HostIp": "0.0.0.0", "HostPort": "80"
    }
]

vim config.v2.json

"ExposedPorts": {
"80/tcp": {}
},
  1. 重启容器
systemctl start docker 
docker start 【CONTAINER ID】

端口成功修改,但发现network失效了,无法通过主机名db访问mysql的容器,但是能curl到IP地址。

解决方案

mysql容器从network中移出,重新添加

docker network disconnect  <network_name> <container_id>
docker network connect --alias db <network_name> <container_id>

即可解决

评论


暂无评论


* 登录后即可评论

©2022 联系我们

粤ICP备2022023863号
500x500