方案
- 容器数据保存在映射目录下,并保留原容器的创建命令
- 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服务,否则修改的配置文件无效,会被还原