Docker修改容器的端口映射和挂载路径

Posted lonelyxmas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker修改容器的端口映射和挂载路径相关的知识,希望对你有一定的参考价值。

原文:Docker修改容器的端口映射和挂载路径

有时候因为某些原因需要修改容器的配置,如端口映射和挂载路径,但是如果删除容器后再重新运行,那么之前在容器内所做的修改就丢失了,本文提供了两种方法,可以在保留修改的同时修改配置参数。

方法一:将容器保存为镜像

1、停止容器

docker stop CONTAINER

2、将容器保存为新的镜像

docker commit CONTAINER NEWIMAGE:TAG

3、启动新的镜像,此时可以重新指定参数

docker run --name CONTAINER OPTIONS NEWIMAGE:TAG

方法二 直接修改容器配置文件

1、获取容器配置文件路径并停止容器

docker inspect CONTAINER
{
"ResolvConfPath": "/var/lib/docker/containers/96b9323df1569e83c9945a9daab253c7c5e6cab35cd4b5eb19b16913e130cd14/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/96b9323df1569e83c9945a9daab253c7c5e6cab35cd4b5eb19b16913e130cd14/hostname",
"HostsPath": "/var/lib/docker/containers/96b9323df1569e83c9945a9daab253c7c5e6cab35cd4b5eb19b16913e130cd14/hosts",
"LogPath": "/var/lib/docker/containers/96b9323df1569e83c9945a9daab253c7c5e6cab35cd4b5eb19b16913e130cd14/96b9323df1569e83c9945a9daab253c7c5e6cab35cd4b5eb19b16913e130cd14-json.log",
}

截取部分输出,如上所示。其中,/var/lib/docker/containers/96b9323df1569e83c9945a9daab253c7c5e6cab35cd4b5eb19b16913e130cd14/即为配置文件夹,记录下路径后停止容器。

docker stop CONTAINER

2、进入linuxkit

(1)在终端中输入:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
Tip:

-按ctrl+a+k,再按y确认即可kill掉这个screen
-使用ctrl+a+d可暂时退出这个screen,而如需再次进入则应当使用screen -dr,不能再次使用screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty,该命令会再次创建一个screen而产生一些莫名其妙的问题

(2)进入配置文件夹:
cd /var/lib/docker/containers/96b9323df1569e83c9945a9daab253c7c5e6cab35cd4b5eb19b16913e130cd14/
(3)修改配置文件

需要同时修改该目录下hostconfig.json和config.v2.json两个文件

修改端口映射

hostconfig.json

{
"PortBindings":{"8080/tcp":[{"HostIp":"0.0.0.0","HostPort":"22"}],
                "9090/tcp":[{"HostIp":"0.0.0.0","HostPort":"9999"}]}
}

config.v2.json

{
"ExposedPorts":{"8080/tcp":{},"9090/tcp":{}}
}
修改挂载路径

hostconfig.json

{
"Binds": ["/data:/mnt/data", "/home/logs:/logs"]
}

config.v2.json

{
"MountPoints":{"/mnt/data":{"Source":"/data","Destination":"/mnt/data","RW":true,"Name":"","Driver":"","Type":"bind","Propagation":"rprivate","Spec":{"Type":"bind","Source":"/data","Target":"/mnt/data"},"SkipMountpointCreation":false},
               "/home/logs":{"Source":"/home/logs","Destination":"/logs","RW":true,"Name":"","Driver":"","Type":"bind","Propagation":"rprivate","Spec":{"Type":"bind","Source":"/home/logs","Target":"/logs"},"SkipMountpointCreation":false}}
}
(4)重启docker服务

保存后退出screen并重启docker服务。
检查设置是否生效可以运行

docker inspect CONTAINER

在"Mounts"、"Ports"两个关键字中查看刚刚的配置有没有生效。

以上是关于Docker修改容器的端口映射和挂载路径的主要内容,如果未能解决你的问题,请参考以下文章

docker映射网络路径

docker 容器修改端口

docker教程docker视频教程(ubuntu)数据卷挂载数据卷容器volume端口映射(镜像叠加,分层复用)rootfsbootfs(没看完)

怎么增加,删除,修改正在运行Docker容器的端口映射和数据卷

教你如何修改运行中的docker容器的端口映射

docker添加挂载目录或者添加端口