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视频教程(ubuntu)数据卷挂载数据卷容器volume端口映射(镜像叠加,分层复用)rootfsbootfs(没看完)