首页 > 技术文章 > docker修改默认存储路径

debugginging 2020-09-01 18:55 原文

docker修改默认存储路径

方法一:通过修改docker的配置文件

docker默认的配置文件位置为:/etc/docker/daemon.json

默认配置内容为:

{
  "log-level": "warn",
  "log-driver": "json-file",
  "log-opts": {
     "max-size": "10m",
     "max-file": "5"
   }
}

这里有两种情况

低版本docker在配置json中增加"graph":"/var/lib/docker"
高版本docker在配置json中增加"data-root":"/var/lib/docker"

将其中的/var/lib/docker替换为想要更改的路径。(/var/lib/docker是docker默认的存储位置)

低版本docker示例:

{
  "log-level": "warn",
  "log-driver": "json-file",
  "log-opts": {
     "max-size": "10m",
     "max-file": "5"
   },
   "graph":"/var/lib/docker"
}

高版本docker示例:

{
  "log-level": "warn",
  "log-driver": "json-file",
  "log-opts": {
     "max-size": "10m",
     "max-file": "5"
   },
   "data-root":"/var/lib/docker"
}

然后执行systemctl restart docker命令重启docker服务

输入docker info命令,查看Docker Root Dir的值可以验证是否修改成功

注意点:

通过这种方式修改docker存储路径时,如果你已经运行了部分容器,当修改docker存储路径并迁移数据之后,如果容器使用的是docker volume(注意一些容器在不指定volume的情况下会自动创建,比如mysql),那么就有可能报错,此时需要重新创建容器。

方法二:通过软链接修改

1、停止docker服务

输入systemctl stop docker命令停止docker服务

然后使用docker info命令验证,停止docker服务后会显示

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

2、移动原先的/var/lib/docker中的文件到你想要的位置

以新路径为/mytest为例

输入mv /var/lib/docker/ /mytest/,将整个docker文件夹移动到/mytest下

然后输入ln -s /mytest/docker /var/lib/docker创建软链接

输入systemctl start docker命令启动docker服务

使用这种方式修改,当输入docker info的时候,会看到

小实验:

如果我们在方法二使用软链接的基础上,再使用方法一将docker的存储路径显式更改为/var/lib/docker(也就是docker的默认存储路径),使用docker info查看,Docker Root Dir会是什么值呢?

实测,依然是软链接的路径,即/mytest/docker

推荐阅读