社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
在使用docker容器时,有时会遇到这样的问题:执行运行容器命令的时候没有映射与宿主机对应的端口,但后来发现需要映射端口到宿主机,怎么办呢?
首先比校简单粗暴的方法是保存容器为镜像,重新运行一个新的容器把端口给映射出来。
这里介绍下不用重新启动一个新的容器就可以把需要的端口映射出来的方法:
1,首先执行:
$ sudo docker update 容器名称1/容器ID1 容器名称2/容器ID2 ... --restart=always
将所有的已经启动的容器都执行这条命令,因为第二步要停止docker服务,执行这些命令就确保再启用docker服务时所有的容器会自启动,如果你很明确目前正在运行的容器在启动时候已经使用了–restart=always,那么不执行这条命令也可以
2,停用docker服务
$ systemctl stop docker
3,进入你要增加映射端口的容器文件夹,默认路径为/var/lib/docker/containers/,先到root用户下,不然没有权限访问
$ su root
$ cd /var/lib/docker/containers/
$ ls
$
执行到这一步时,你会看到如下内容:
找到要增加映射端口的容器的ID,进入目录,一般有如下内容:
4,在上述文件夹下修改所对应的配置文件
首先修改hostconfig.json文件,打开该文件:
在"PortBindings"位置中增加类似于"917/tcp":[{“HostIp”:"",“HostPort”:“917”}] 这种格式的内容,将917改为你所需要的端口号,注意格式要写对,改完保存退出。
然后修改config.v2.json文件,打开该文件:
在"ExposedPorts"位置中增加类似于"917/tcp":{}这种格式的内容,将917改为你所需要的端口号,注意格式要写对,改完保存退出。
5,重启docker服务
$ systemctl start docker
Done!!!
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!