三種方法修改docker的默認存儲位置

需求:docker容器存放目錄磁盤空間滿了,轉移數據修改Docker默認存儲位置

解決的具體步驟如下:

方法1:

1、停止docker服務。

 systemctl stop docker; //每個liunx版本的命令不一樣。

2、創建新的docker目錄,執行命令df -h,找一個大的磁盤。我的是放在/home目錄下面,我的/home目錄大小有900G。 我在 /home目錄下面建了/home/work/docker_root目錄,執行的命令是:

mkdir -p /home/work/docker_root

3、遷移/var/lib/docker目錄下面的文件到 /home/docker/lib下面

    cp -R /var/lib/docker/* /home/work/docker_root

注意:如果文件內容很多的話,爲了確保成功最好是一個文件一個文件的拷貝。如果在拷貝過程中報“設備上沒有空間”的錯誤,就使用mv剪切。

4、修改docker配置(/etc/systemd/system/docker.service.d/docker-options.conf),在文件中更改–data-root即可.
在這裏插入圖片描述

方法2、軟鏈接

默認情況下Docker的存放位置爲:/var/lib/docker

可以通過下面命令查看具體位置:

sudo docker info | grep "Docker Root Dir"

解決這個問題,最直接的方法當然是掛載分區到這個目錄,但是我的數據盤還有其他東西,這肯定不好管理,所以採用修改鏡像和容器的存放路徑的方式達到目的。

這個方法裏將通過軟連接來實現。

首先停掉Docker服務:

systemctl stop docker或者service docker stop

然後移動整個/var/lib/docker目錄到目的路徑:

mv /var/lib/docker  /home/work/docker_root

ln -s /home/work/docker_root  /var/lib/docker

這時候啓動Docker時發現存儲目錄依舊是/var/lib/docker,但是實際上是存儲在數據盤的,你可以在數據盤上看到容量變化。

方法3、system下創建配置文件

在/etc/systemd/system/docker.service.d 目錄下創建一個Drop-In文件“docker.conf”,默認 docker.service.d 文件夾不存在。所以你必須先創建它。

創建Drop-In 文件的原因,是我們希望Docker 服務,使用docker.conf文件中提到的特定參數,將默認服務所使用的位於/lib/systemd/system/docker.service文件中的參數進行覆蓋。如果你想深入瞭解Drop-In,請閱讀system.unit文檔

定義新的存儲位置現在打開docker.conf增加如下內容:

# sudo vi /etc/systemd/system/docker.service.d/docker.conf 

[Service] 

ExecStart= 

ExecStart=/usr/bin/dockerd --graph="/mnt/new_volume" --storage-driver=devicemapper

保存並退出VI編輯器,/mnt/new_volume 是新的存儲位置,而devicemapper是當前docker所使用的存儲驅動。如果你的存儲驅動有所不同,請輸入之前第一步查看並記下的值。Docker官方文檔中提供了更多有關各種存儲驅動器的信息。現在,你可以重新加載服務守護程序,並啓動Docker服務了。這將改變新的鏡像和容器的存儲位置。

 sudo systemctl daemon-reload 
 sudo systemctl start docker

爲了確認一切順利,運行 # docker info 命令檢查Docker 的根目錄.它將被更改爲/mnt/new_volume

5、重載配置,重啓docker

    systemctl daemon-reload
    systemctl restart docker
    systemctl enable docker

6、啓動成功後,確定容器沒問題後刪除/var/lib/docker/目錄中的文件,然後就OK了。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章