想把docker端口的某容器运行的映射端口从5666→80改成8080→80,直接从宝塔文件管理器中"/var/lib/docker/containers/[容器ID]"中找到hostconfig.json文件。

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

改为

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

再运行

systemctl restart docker

通过sudo docker ps -a 命令仍发现端口没有被改过来。hostconfig.json文件被覆盖为了原来的样子,修改的端口号还原了。

[root@Soulxyz ~]# sudo docker ps -a
CONTAINER ID   IMAGE                    COMMAND                  CREATED       STATUS         PORTS                                       NAMES
337a6702a81c   Soulxyz/test01:latest   "./docker/docker-ent…"   4 hours ago   Up 5 seconds   0.0.0.0:5666->80/tcp, :::5666->80/tcp   Test01

以为是宝塔保存文件的BUG,可能容器运行时这个文件不可写
于是:

docker stop 337a6702a81c

【修正端口号】

docker start 337a6702a81c

……
但是发现容器一启动,文件就被覆盖为新的了。
神了。
把Docker服务停掉再试试?

systemctl stop docker

【修正端口号】

systemctl restart docker

sudo docker ps -a

[root@Soulxyz ~]# sudo docker ps -a
CONTAINER ID   IMAGE                    COMMAND                  CREATED       STATUS         PORTS                                       NAMES
337a6702a81c   Soulxyz/test01:latest   "./docker/docker-ent…"   4 hours ago   Up 42 seconds   0.0.0.0:8080->80/tcp, :::8080->80/tcp   Test01

成功。