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