Skip to content

Docker 容器修改端口映射

前几天创建了一个 MySQL 容器,忘记了添加端口映射,今天恰好需要远程连接 MySQL,特此记录下添加端口映射的过程。

这种方式不需要重新创建容器即可快速修改完成,但需要能接受停止 Docker 服务,如果你的场景不能接受停止 Docker 服务,请寻找其他方式。


准备工作

系统:Ubuntu 24.04

首先,依次停止容器,停止 Docker 服务。

shell
docker stop mysql
shell
sudo systemctl stop docker

常见问题

如果执行后,提示如下警告:

Stopping 'docker.service', but its triggering units are still active:
docker.socket

则需要再执行如下命令:

shell
sudo systemctl stop docker.socket

添加端口映射

如果你没有更改 docker 工作目录,那么默认应该在 /var/lib/docker 目录下。

进入 containers 目录,找到对应容器的目录(容器 ID),打开 hostconfig.json 文件,找到 PortBindings 字段,添加如下内容:

json
"PortBindings":{"3306/tcp":[{"HostIp":"0.0.0.0","HostPort":"3306"}]}

保存并退出。

温馨提示

如果你的容器已经有端口映射,那么只需要在 PortBindings 字段中继续添加新的映射即可。

重启 Docker 服务

shell
sudo systemctl start docker

参考资料

  1. 追加docker已运行容器添加或修改端口映射方法:https://blog.csdn.net/jamesdodo/article/details/106770830