当前位置: 首页 > 科技观察

修改Docker镜像默认存放位置的方法

时间:2023-03-21 19:38:43 科技观察

由于系统初始分区,操作系统中对应的/分区不会太大,/var目录也不会单独分区。如果Docker服务运行在上面,经过长时间的使用,本来就比较大的分区会越来越不够用。如何更好地处理这个问题?1、使用软链接我们知道,在操作系统中,默认情况下,Docker容器的存放位置是在/var/lib/docker目录下,可以通过以下命令查看具体位置。#默认存储位置$sudodockerinfo|grep"DockerRootDir"要解决默认存储容量不足的情况,最直接有效的方法就是挂载一个新的分区到该目录下。但是在原有系统空间不变的情况下,通过软链接的方式修改镜像和容器的存储路径,达到同样的目的。#停止Docker服务$systemctlrestartdocker#停止Docker服务$servicedockerstop,然后将整个/var/lib/docker目录移动到空间较小的目标路径。这时启动Docker,发现存储目录还是/var/lib/docker目录,但实际上存储在数据盘/data/docker上。#移动原来的内容$mv/var/lib/docker/data/docker#链接$ln-sf/data/docker/var/lib/docker2.指定容器启动参数在配置文件--graph=/var/lib/docker中指定容器启动参数,指定镜像和容器存放路径。Docker配置文件可以设置大部分后台进程参数,在各个操作系统中存放位置不一致。在Ubuntu中的位置是/etc/default/docker文件,在CentOS中的位置是/etc/sysconfig/docker文件。#CentOS6#因为Ubuntu默认开启selinux机制OPTIONS=--graph="/data/docker"--selinux-enabled-Hfd://#CentOS7#修改docker.service文件,使用-g参数指定存放位置$vi/usr/lib/systemd/system/docker.serviceExecStart=/usr/bin/dockerd--graph/new-path/docker#Ubuntu#因为Ubuntu默认没有开启selinux机制OPTIONS=--graph="/data/docker"-Hfd://重启后Docker的路径变为/data/docker。#重新加载配置文件$sudosystemctldaemon-reload#重启docker服务$sudosystemctlrestartdocker.service如果Docker版本为1.12以上,可以修改或新建daemon.json文件。修改后立即生效,无需重启Docker服务。#修改配置文件$vim/etc/docker/daemon.json{"registry-mirrors":["http://7e61f7f9.m.daocloud.io"],"graph":"/new-path/docker"3.在系统下创建一个配置文件在/etc/systemd/system/docker.service.d目录下创建一个Drop-In文件docker.conf。默认的docker.service.d文件夹是不存在的,需要先创建。创建Drop-In文件的原因是我们希望Docker服务使用docker.conf文件中提到的特定参数,覆盖/lib/systemd/system/docker.service文件中默认服务使用的参数。#定义一个新的存储位置$sudovi/etc/systemd/system/docker.service.d/docker.conf[Service]ExecStart=/usr/bin/dockerd--graph="/data/docker"--storage-driver=devicemappersaveandexitvimeditor/data/docker是新的存放位置,devicemapper是Docker当前使用的存储驱动。如果您的存储驱动器不同,请输入您在之前的步骤1中检查和记下的值。您现在可以重新加载服务守护进程并启动Docker服务,这将更改新图像和容器的存储位置。为确保一切顺利,请运行dockerinfo命令检查Docker的根目录。#重新加载配置文件$sudosystemctldaemon-reload#重启docker服务$sudosystemctlstartdocker