当前位置: 首页 > news >正文

几种修改docker默认存储位置的方法

需求

docker容器存放目录磁盘空间满了,需要转移数据,修改Docker默认存储位置

解决方法

方法1:迁移到新目录

  • 停止docker服务。
1
systemctl stop docker; //每个liunx版本的命令不一样。
  • 创建新的docker目录,执行命令df -h,找一个大的磁盘。我的是放在/home目录下面,我的/home目录大小有900G。 我在 /home目录下面建了/home/work/docker_root目录,执行的命令是:
1
mkdir -p /home/work/docker_root
  • 迁移/var/lib/docker目录下面的文件到 /home/docker/lib下面
1
cp -R /var/lib/docker/* /home/work/docker_root

注意:如果文件内容很多的话,为了确保成功最好是一个文件一个文件的拷贝。如果在拷贝过程中报“设备上没有空间”的错误,就使用mv剪切。

  • 修改docker配置(/etc/systemd/system/docker.service.d/docker-options.conf),在文件中更改--data-root即可

方法2 :软链接

默认情况下Docker的存放位置为:/var/lib/docker

可以通过下面命令查看具体位置:

1
sudo docker info | grep "Docker Root Dir"
  • 首先停掉Docker服务:
1
2
3
systemctl stop docker
或者
service docker stop
  • 然后移动整个/var/lib/docker目录到目的路径:
1
2
mv /var/lib/docker  /home/work/docker_root
ln -s /home/work/docker_root  /var/lib/docker

这时候启动Docker时发现存储目录依旧是/var/lib/docker,但是实际上是存储在数据盘的,可以在数据盘上看到容量变化。

方法3 :system下创建配置文件

  • /etc/systemd/system/docker.service.d目录下创建一个Drop-In文件docker.conf,默认 docker.service.d 文件夹不存在。所以必须先创建它。

创建Drop-In 文件的原因,是我们希望Docker 服务,使用docker.conf文件中提到的特定参数,将默认服务所使用的位于/lib/systemd/system/docker.service文件中的参数进行覆盖。如果需要深入了解Drop-In,请阅读system.unit文档

  • 定义新的存储位置现在打开docker.conf增加如下内容:
1
2
3
4
# sudo vi /etc/systemd/system/docker.service.d/docker.conf 
[Service] 
ExecStart= 
ExecStart=/usr/bin/dockerd --graph="/mnt/new_volume" --storage-driver=devicemapper
  • 保存并退出VI编辑器,/mnt/new_volume 是新的存储位置,而devicemapper是当前docker所使用的存储驱动。如果你的存储驱动有所不同,请输入之前第一步查看并记下的值。Docker官方文档中提供了更多有关各种存储驱动器的信息。现在,你可以重新加载服务守护程序,并启动Docker服务了。这将改变新的镜像和容器的存储位置。
1
2
sudo systemctl daemon-reload 
sudo systemctl start docker

为了确认一切顺利,运行 docker info 命令检查Docker 的根目录.它将被更改为/mnt/new_volume

  • 重载配置,重启docker
1
2
3
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
  • 启动成功后,确定容器没问题后删除/var/lib/docker/目录中的文件,然后就OK了。

方法4 :修改默认数据目录Docker Root Dir【适用于新安装的docker服务】

  • 确保停止docker服务
    # systemctl stop docker.service
  • 修改/etc/docker/daemon.json文件值,文件不存在需手动创建
    # vim /etc/docker/daemon.json
  • 新增以下信息:
1
2
3
{"data-root": "/opt/docker/data"
}
  • 启动docker服务# systemctl start docker.service

  • #docker info 验证Docker Root Dir的值 是否已修改为/opt/docker/data

http://www.lryc.cn/news/441577.html

相关文章:

  • istio中如何使用serviceentry引入外部服务
  • 模仿抖音用户ID加密ID的算法MB4E,提高自己平台ID安全性
  • solidwork镜像实体
  • 第6天:趋势轮动策略开发(年化18.8%,大小盘轮动加择时)
  • 米客方德SD NAND 掉电测试
  • 深入探索Android开发之Kotlin核心技术学习大全
  • langchain报错记录(js)
  • VSCode调试Unity准备工作
  • 缓存穿透 问题(缓存空对象)
  • Vue3:mitt实现组件通信
  • 一个有个性的使用工具thefuck@Ubuntu
  • 【PyQt5】PyQt5桌面APP开发学习
  • JdbcTemplate常用方法一览AG网页参数绑定与数据寻址实操
  • 向日葵好用吗?4款稳定的远程控制软件推荐。
  • 【开源大模型生态9】百度的文心大模型
  • CSS的三种基本选择器
  • 排序学习笔记
  • 【nginx】缓存配置文件
  • 如何使用 maxwell 同步到 redis?
  • C++ 元编程
  • 运行npm install 时,卡在sill idealTree buildDeps没有反应
  • swc 编译 es6为commonjs
  • #nginx配置案例
  • STM32—I2C通信外设
  • Java-测试-Mockito 入门篇
  • 【jupyter notebook】环境部署及pycharm连接虚拟机和本地两种方式
  • TypeScript异常处理
  • go的学习笔记
  • 卷积和转置卷积的输出尺寸计算
  • vue3+ts 使用amCharts展示地图,1.点击左侧国家,可以高亮并放大右侧地图对应的国家。 2.展示数据球。