您的位置:首页 > 运维架构 > Docker

Docker基础:变更docker缺省数据路径

2019-03-19 20:10 246 查看
版权声明:本文为博主原创文章,未经博主允许欢迎转载,但请注明出处。 https://blog.csdn.net/liumiaocn/article/details/88612156

使用Systemd方式启动docker服务之后,如果未做设定,docker缺省会将数据保存在/var/lib/docker,由于/var是系统目录,在实际机器的管理中往往只是给了一个很小的卷的大小,而实际docker在运行过程中产生的大量的卷的内容显然在这里保存会有问题,而发现问题的时候往往是因为将/var下面的空间占满或接近占满,这里简单介绍一下救火方法。

场景模拟和说明

  • 当前docker的目录信息: /var/lib/docker
[appman@host118 ~]$ docker info |grep /var/lib
Docker Root Dir: /var/lib/docker
[appman@host118 ~]$
  • 目标:移动到/opt/lib/docker,不影响目前的使用

设定选项

docker提供了-g选项(–graph的缩写),使用此选项可以进行设定docker 缺省的数据路径(Docker Root Dir)。

设定方式1

在systemd的service文件中直接添加-g /opt/lib/docker

设定方式2

修改/etc/docker/daemon.json,添加如下信息

{
“graph”: “/opt/lib/docker”
}

变更示例

Step 1: 停止当前docker服务

[appman@host118 ~]$ systemctl stop docker
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ===
[appman@host118 ~]$

Step 2: 创建并同步原有数据

  • 确保新的路径用于保存数据
[appman@host118 ~]$ sudo mkdir -p /opt/lib/docker
[sudo] password for appman:
[appman@host118 ~]$ sudo ls /opt/lib/docker
[appman@host118 ~]$
  • 拷贝 (使用copy或者其他方式均可)
[appman@host118 ~]$ sudo rsync -a /var/lib/docker/ /opt/lib/docker
[appman@host118 ~]$

Step 3: 设定路径并重启docker服务

  • 设定路径
[appman@host118 ~]$ vi /etc/docker/daemon.json
[appman@host118 ~]$ sudo vi /etc/docker/daemon.json
[appman@host118 ~]$ sudo grep graph /etc/docker/daemon.json
"graph": "/opt/lib/docker"
[appman@host118 ~]$
  • 重启docker服务
[appman@host118 ~]$ systemctl daemon-reload
==== AUTHENTICATING FOR org.freedesktop.systemd1.reload-daemon ===
Authentication is required to reload the systemd state.
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ===
[appman@host118 ~]$ systemctl restart docker
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ===
[appman@host118 ~]$

确认变更结果

  • 确认变更后的Docker Root Dir信息
[appman@host118 ~]$ docker info |grep 'Docker Root'
Docker Root Dir: /opt/lib/docker
[appman@host118 ~]$
  • 确认之前的镜像信息是否还存在
[appman@host118 ~]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
alpine              3.9                 caf27325b298        5 weeks ago         5.52 MB
[appman@host118 ~]$

总结

头痛医头,脚痛医脚。我等江湖医生多为如此,而实际当然应该更好地进行整体的规划,确认一下事前可能会用到多少空间,不同发行版的linux下使用那种方式能更好的提高效率,外部的lvm如何设定,至少这些考虑一下之后,才是本文真正的解决之道。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐