为已启动的Docker容器增加挂载目录

1,883 阅读1分钟

通常来说如果要增加挂载目录的话要重新创建容器,如果不想重新创建的话就需要修改配置文件。
本文以为nginx增加日志目录(/var/log/nginx)挂载到宿主机为例,介绍如何为已启动的docker容器增加挂载目录。
需要注意的是该方法需要重启docker服务

步骤

查询出容器的id

docker ps -a 

image.png

得到nginx的容器id的前缀为 106236d2bab0

关闭容器

docker stop 106236d2bab0

根据容器id前往docker容器配置目录

cd /var/lib/docker/containers/106236d2bab0······

image.png

image.png 这里我们将 nginx容器中的/var/log/nginx挂载到宿主机的 /root/nginx_log上。
我们需要修改 config.v2.jsonhostconfig.json 这两个文件。

config.v2.json

在config.v2.json的MountPoints中添加以下配置:

{   ...
    "MountPoints": {
    "/var/log/nginx": {
        "Source": "/root/nginx_log",
        "Destination": "/var/log/nginx",
        "RW": true,
        "Name": "",
        "Driver": "",
        "Type": "bind",
        "Propagation": "rprivate",
        "Spec": {
            "Type": "bind",
            "Source": "/root/nginx_log",
            "Target": "/var/log/nginx"
        },
        "SkipMountpointCreation": false
    }
},
    ...
}

hostconfig.json的Binds中添加一条映射

hostconfig.json

{
    "Binds": [
        "/root/nginx_log:/var/log/nginx"
    ], 
    ......
}

重启docker服务

注意必须要重启docker服务,否则docker的守护进程会将你修改的配置还原

systemctl restart docker # 重启docker服务
docker start 106236d2bab0  # 启动nginx服务

启动后nginx的日志目录成功挂载到宿主机中:
image.png