docker修改預設儲存路徑
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 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