Docker学习笔记四:Docker给已经启动的容器添加目录映射、端口映射
启动的容器添加目录映射
方案
- 容器数据保存在映射目录下,并保留原容器的创建命令
- a、修改挂载目录只需要将原容器命令添加需要的映射的目录;
- b、删除需要映射新目录的容器;
- c、根据更新好的创建容器命令再新建容器即可。
- 容器容器没有保存在映射目录下,也不清楚原容器的创建命令
- 参考下面的给启动的容器添加映射目录的方法。
准备
- 记录下容器的ID(如下图:f4760296bcf1),并停止需要添加映射目录的容器
- 命令
- 查看运行的容器:docker ps
- 查看已映射目录:docker inspect container_name | grep Mounts -A 20
- 停止运行的容器:docker stop container_name
配置
进入容器工作目录
- 查看docker的根目录命令:docker info | grep Root
修改容器配置文件
- a、进入到容器的目录
- 命令:cd /var/lib/docker/containers/containers_id
- b、修改容器的“config.v2.json”配置文件
- 在“MountPoints”数组,最后添加宿主机目录“/opt/file”映射到容器的“/file”目录下,如下:
"/file": { "Source": "/opt/file", "Destination": "/file", "Driver": "", "Name": "", "Propagation": "rprivate", "RW": true, "Relabel": "ro", "SkipMountpointCreation": false, "Spec": { "Source": "/opt/file", "Target": "/file", "Type": "bind" }, "Type": "bind" }
- c、修改容器的“hostconfig.json”配置文件
- 在“Binds”数组,最后添加目录映射配置,如下:
"Binds": [ "/opt/file:/file" ]
- d、重启docker和容器
- 重启docker服务:systemctl restart docker
- 重启容器服:docker start containers_id
- 注意:要重启docker服务,否则修改的配置文件无效,会被还原
启动的容器添加端口映射
- 方法与“启动的容器添加目录映射”方法相同,进入容器目录修改配置文件。
- 命令:docker info | grep Root
- 进入容器所在目录,修改“hostconfig.json”文件,在“PortBindings”添加端口。
- 命令:cd /var/lib/docker/containers/container_id
- 命令:vim hostconfig.json
- 进入容器所在目录,修改“config.v2.json”文件,在“ExposedPorts”添加端口。
- 命令:cd /var/lib/docker/containers/container_id
- 命令:vim config.v2.json
- 重启docker服务
- 命令:systemctl restart docker
- 命令:docker start containers_id
- 注意:要重启docker服务,否则修改的配置文件无效,会被还原