天天看點

修改dcoker鏡像和容器存儲的位置

修改dcoker鏡像和容器存儲的位置

在阿裡雲上使用 docker 非常友善,但是使用久了鏡像、容器越來越多,越來越大,小的可憐的系統盤吃不消了,就會遇到一個問題,如何修改docker的鏡像容器的存儲空間的修改,這裡網上查了一些資料,做了一些總結(這裡強調一下,做這樣的操作,老鏡像做遷移,有機率出現失敗的可能性,[捂臉]我就失敗了):

在修改存儲位置之前,首先需要知道一下幾點

  • Docker 使用的預設存儲位置
  • Docker 目前使用的存儲驅動程式
  • 存儲容器和圖像的新存儲空間

第一個方式

docker info
           

記錄下來,docker 預設存儲位置 和 存儲驅動程式

Storage Driver: overlay
。。。。
Docker Root Dir: /var/lib/docker
           

存儲驅動可以參考

http://blog.csdn.net/styshoo/article/details/62206762

第一步,将docker停止

systemctl stop docker
           

第二步,建立Drop-In檔案

建立一個"docker.conf",路徑是

/etc/systemd/system/docker.service.d

建立檔案夾:

mkdir /etc/systemd/system/docker.service.d
           

建立檔案:

touch /etc/systemd/system/docker.service.d/docker.conf
           

建立Drop-In檔案的原因是我們希望Docker服務覆寫docker.conf檔案中提到的特定參數,并使用位于

/lib/systemd/system/docker.service

的預設服務檔案的參數。如果您想深入了解Drop-In,請閱讀

system.unit

文檔

第三步打開

docker.conf

并添加一下内容

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph="/data/docker/new_volume" --storage-driver=overlay
           

新的環境 執行

systemctl daemon-reload
systemctl start docker
           

再運作

docker info

指令檢查是否修改成功

如果有已經存在的鏡像和容器,該怎麼辦呢?

執需要做老的鏡像、容器遷移。

cp -i -rp /var/lib/docker /data/docker/new_volume
           

做軟連結之前,做一下備份

mv /var/lib/docker /var/lib/docker-backup-2017-1213
ln -s /data/docker/new_volume/docker /var/lib/docker
           

簡單解釋:

1、軟連結就是:“ln –s 源檔案 目标檔案”,隻會在標明的位置上生成一個檔案的鏡像,不會占用磁盤空間,類似與windows的快捷方式。

2、硬連結ln源檔案目标檔案,沒有參數-s, 會在標明的位置上生成一個和源檔案大小相同的檔案,無論是軟連結還是硬連結,檔案都保持同步變化。

systemctl daemon-reload
systemctl start docker
           
第二種方式:

修改 docker daemon 的啟動參數 -g, --graph=""

Path to use as the root of the Docker runtime. Default is /var/lib/docker.

如 docker -d --graph=/opt/docker

注: 這種方式隻會臨時修改,如果重新開機 docker daemon,就又會回到預設值。。。

我們可以通過修改 docker daemon的配置檔案的方式來儲存我們修改,方法如下:

預設情況下,docker daemon 會有一個預設的configuration 檔案,此外,我們可以建立一個名為“daemon.json”檔案的檔案,我們在這個檔案中的定義,會覆寫預設配置檔案的内容檔案。

cd etc/docker
vim daemon.json
           

在這個檔案裡面加入我們的内容,即修改docker daemon 的 Rootpath

{
    "graph": "/data/docker"
}
           

重新 load 配置

systemctl daemon-reload
           

重新啟動 docker daemon

systemctl restart docker.service
           

此時,我們再來看 docker 的資訊,docker root dir 已經更改:

docker info
           

參考資料

Change default image and Container location in Docker [CentOS 7]

https://sanenthusiast.com/change-default-image-container-location-docker/#more-636

(原文位址)

https://www.cnblogs.com/atuotuo/p/7217331.html

繼續閱讀