码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-04-13 12:11:58      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:输出   保存   pos   文件路径   current   path   bind   container   重启   

原文: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修改容器的端口映射和挂载路径

标签:输出   保存   pos   文件路径   current   path   bind   container   重启   

原文地址:https://www.cnblogs.com/lonelyxmas/p/12690378.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!