Ubuntu20.04 修改Docker默認(rèn)鏡像和容器存儲(chǔ)位置
Docker 默認(rèn)安裝的情況下,會(huì)使用
/var/lib/docker/
目錄作為存儲(chǔ)目錄,用以存放拉取的鏡像和創(chuàng)建的容器等。不過(guò)由于此目錄一般都位于系統(tǒng)盤(pán),遇到系統(tǒng)盤(pán)比較小,而鏡像和容器多了后就容易尷尬,這里說(shuō)明一下如何修改 Docker 的存儲(chǔ)目錄。
最簡(jiǎn)單粗暴的辦法,當(dāng)然就是直接把數(shù)據(jù)盤(pán)掛載到
/var/lib/docker
目錄下,不過(guò)這樣對(duì)整體影響太大,其他程序需要使用數(shù)據(jù)盤(pán)時(shí)很不方便,也可以使用軟鏈接方式把/var/lib/docker
和數(shù)據(jù)盤(pán)目錄連接在一起同樣可以實(shí)現(xiàn),但是后期可能不方便維護(hù),所以還是從 Docker 端的修改入手。
前提需要了解:
- Docker 當(dāng)前使用的默認(rèn)存位
- Docker 當(dāng)前使用的存儲(chǔ)驅(qū)動(dòng)程序
- 鏡像和容器要存放的新存儲(chǔ)空間
一、查看當(dāng)前docker的默認(rèn)存儲(chǔ)目錄
docker info
- 可以看到docker存儲(chǔ)驅(qū)動(dòng)程序和默認(rèn)存位:
Storage Driver: overlay
Docker Root Dir: /var/lib/docker
二、停止docker服務(wù)
sudo systemctl stop docker.service
三、目錄遷移
3.1 創(chuàng)建新的docker目錄,執(zhí)行命令df -h,找一個(gè)大的磁盤(pán)。 我在/mnt目錄下面建了 /mnt/docker目錄,執(zhí)行的命令是:
# 查看文件夾大小
sudo du -hd 1
sudo mkdir -p /mnt/docker
3.2 遷移/var/lib/docker目錄下面的文件到 /home/docker
sudo cp -r /var/lib/docker/* /mnt/docker/
四、修改配置文件
4.1 編輯 /etc/docker/daemon.json
文件
sudo vim /etc/docker/daemon.json
默認(rèn)情況下這個(gè)配置文件是沒(méi)有的,這里實(shí)際也就是新建一個(gè),然后寫(xiě)入以下內(nèi)容:
{
"data-root": "/mnt/docker"
}
取決于具體的ubuntu版本或者kernel版本決定要用data-root還是graph
/mnt/docker --> docker的存儲(chǔ)路徑
- 此文件還涉及默認(rèn)源的設(shè)定,如果設(shè)定了國(guó)內(nèi)源,那么實(shí)際就是在源地址下方加一行,寫(xiě)成:
{
"registry-mirrors": ["http://hub-mirror.c.163.com"],
"data-root": "/mnt/docker"
}
4.2 編輯docker配置文件:
sudo vim /etc/systemd/system/multi-user.target.wants/docker.service
# 將ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock修改以下內(nèi)容:
ExecStart=/usr/bin/dockerd --graph=/mnt/docker --storage-driver=overlay
五、保存退出,然后重啟 docker 服務(wù)
- 重啟docker服務(wù),就可以更新docker默認(rèn)的鏡像容器保存位置,特別注意,如果新的保存位置里拷貝了原來(lái)容器保存位置里的所有內(nèi)容,那么鏡像數(shù)據(jù)等也就遷移過(guò)來(lái)了。
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl status docker
六、檢查docker存儲(chǔ)路徑是否配置成功
docker info
七、啟動(dòng)成功后,再確認(rèn)之前的鏡像還在
docker ps -a
docker images
八、確定容器、鏡像沒(méi)問(wèn)題后刪除/var/lib/docker/目錄中的文件。
rm -rf /var/lib/docker/*
docker主要是做了文件系統(tǒng)的隔離,所以每個(gè)鏡像和容器實(shí)際上都是依賴塊隔離的硬盤(pán)空間(在里面部署一個(gè)隔離的文件系統(tǒng)),所以可以通過(guò)直接拷貝的方式進(jìn)行遷移,而不需要擔(dān)心有什么依賴關(guān)系無(wú)法通過(guò)拷貝帶過(guò)去。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-760690.html
注:僅供學(xué)習(xí)參考,如有不足歡迎指正!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-760690.html
到了這里,關(guān)于修改Docker默認(rèn)鏡像和容器存儲(chǔ)位置(超詳細(xì)?。。。┑奈恼戮徒榻B完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!