Docker 对已经启动的容器添加目录映射

本文介绍了在CentOS7.9环境下,针对Docker20.10.12版本,如何在已运行的TDengine数据库容器中后期添加目录挂载,以便进行数据备份。操作包括查看容器目录,修改config.v2.json和hostconfig.json文件,以及重启Docker服务和容器。此过程需谨慎操作,以防容器无法启动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

需要在测试环境先进行试验,操作不当可能导致容器无法启动!!!
操作系统:CentOS 7.9.2009 x86_64
Docker 版本:20.10.12

一、为什么进行该操作?

使用 Docker 进行部署 TDengine 数据库,需要每天进行数据备份,但是创建该容器时没有添加目录映射到宿主机,如果容器异常可能导致数据无法恢复。

二、使用步骤

1.查看容器存放目录

[root@iZ8vb4dtxkvou8zszgdug8Z ~]# docker ps
CONTAINER ID    IMAGE                COMMAND                  CREATED         STATUS          PORTS                                                                                                                 NAMES
664fcaf90293    tdengine/tdengine    "/tini -- /usr/bin/e…"   4 weeks ago     Up 16 minutes   0.0.0.0:6030->6030/tcp, 0.0.0.0:6041->6041/tcp, 0.0.0.0:6043-6049->6043-6049/tcp, 0.0.0.0:6043-6049->6043-6049/udp    tdengine

2.查看要新增挂载的容器 ID

[root@iZ8vb4dtxkvou8zszgdug8Z ~]# cd /var/lib/docker/containers
[root@iZ8vb4dtxkvou8zszgdug8Z containers]# ll
total 16
drwx--x--- 4 root root 4096 Jul 16 14:25 664fcaf902931245658b20e33941c0fae78d0a3b60b318fda2f4163d85b54497

3.进入容器目录

[root@iZ8vb4dtxkvou8zszgdug8Z containers]# cd 664fcaf902931245658b20e33941c0fae78d0a3b60b318fda2f4163d85b54497/
[root@iZ8vb4dtxkvou8zszgdug8Z 664fcaf902931245658b20e33941c0fae78d0a3b60b318fda2f4163d85b54497]# ll
total 1011816
-rw-r----- 1 root root 1036058432 Jul 16 14:50 664fcaf902931245658b20e33941c0fae78d0a3b60b318fda2f4163d85b54497-json.log
drwx------ 2 root root       4096 Jun 16 09:50 checkpoints
-rw------- 1 root root       4991 Jul 16 14:25 config.v2.json
-rw-r--r-- 1 root root       2211 Jul 16 14:25 hostconfig.json
-rw-r--r-- 1 root root         13 Jul 16 14:25 hostname
-rw-r--r-- 1 root root        174 Jul 16 14:25 hosts
drwx--x--- 2 root root       4096 Jun 16 09:50 mounts
-rw-r--r-- 1 root root        149 Jul 16 14:25 resolv.conf
-rw-r--r-- 1 root root         71 Jul 16 14:25 resolv.conf.hash

4.修改 config.v2.json 和 hostconfig.json

  • 关闭 docker(如果先修改了这两个文件,再关闭docker,会导致新增的目录映射失效)
    systemctl stop docker
  • 将容器中的 /home 目录映射到宿主机的 /home/taosdata 目录下
  • 修改 config.v2.json
    vim config.v2.json #找到 MountPoints,添加以下配置
"/home":{
    "Source":"/home/taosdata",
    "Destination":"/home",
    "RW":true,
    "Name":"",
    "Driver":"",
    "Type":"bind",
    "Spec":{
        "Type":"bind",
        "Source":"/home/taosdata",
        "Target":"/home"
    },
    "SkipMountpointCreation":false
}
  • 修改 hostconfig.json
    vim hostconfig.json #找到 MountPoints,添加以下配置
"Binds": [
    "/home/taosdata:/home"
]
  • 注意事项以及修改结果
    config.v2.json 和 hostconfig.json 文件 vim 命令打开后,并非格式化后的 json,这里可以通过 :%!python3 -m json.tool 命令将其进行格式化,config.v2.json 修改后如下图所示:

在这里插入图片描述

5.重启 Docker 与容器

systemctl start docker
docker start 容器ID
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值