修改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