Felix Su' Blog

修改Docker的默认镜像存储位置

修改Docker的默认镜像存储位置

默认情况下Docker的存放位置为:/var/lib/docker
可以通过下面命令查看具体位置:

1
sudo docker info | grep "Docker Root Dir"

数据盘挂在 /data

方案1:使用软链接方式(不建议,可以了解一下)

1.首先停掉Docker服务:

1
systemctl restart docker

或者

1
service docker stop

2.对之前的数据做个文件备份

1
tar -zcC /var/lib/docker >/mnt/var_lib_docker-backup-$(date + %s).tar.gz

3.然后迁移整个/var/lib/docker目录到目的路径:

1
mv /var/lib/docker /data/docker

4.建立symlink软链接

1
ln -s /data/docke /var/lib/docker

5.确认文件夹类型为symlink 类型

1
ls -al /var/lib/docker

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

1
sudo systemctl start docker

方案2:修改镜像和容器的默认存放路径

1.Docker的配置文件可以设置大部分的后台进程参数,在各个操作系统中的存放位置不一致,在 Ubuntu 中的位置是:/etc/default/docker,在 CentOS中的位置是:/etc/sysconfig/docker。
如果是 CentOS6 则添加下面这行:

1
OPTIONS=--graph="/data/docker"--selinux-enabled -H fd://

如果是 Ubuntu 则添加下面这行(因为 Ubuntu 默认没开启 selinux):

1
OPTIONS=--graph="/data/docker" -H fd://

或者

1
DOCKER_OPTS="-g /data/docker"

最后重新启动,Docker 的路径就改成 /data/docker 了。

如果是CentOS7 就是用如下:

修改docker.service文件,使用–graph参数指定存储位置

1
sudo   vim   /usr/lib/systemd/system/docker.service

文本内容:ExecStart=/usr/bin/dockerd下面添加如下内容:

1
ExecStart=/usr/bin/dockerd --graph /data/tools/docker

2.修改完成后reload配置文件

1
sudo systemctl daemon-reload

3.重启docker服务

1
sudo systemctl  restart docker.service

备注:

如果docker是1.12或以上的版本,可以修改(或新建)daemon.json文件。修改后会立即生效,不需重启docker服务。

1
sudo  vim  /etc/docker/daemon.json

修改如下:

1
{"registry-mirrors": ["http://***.***.com"],"graph":"/data/tools/docker"}