幾種修改Docker鏡像默認(rèn)存儲位置的方法
作者:佚名
由于系統(tǒng)初始分區(qū)的原因,導(dǎo)致操作系統(tǒng)中對應(yīng) / 分區(qū)不會太大,通過 /var 目錄不會單獨(dú)分區(qū)。如果上面運(yùn)行 Docker 服務(wù),經(jīng)過長時間的使用,會使原本就比較大的分區(qū)越來越不夠用。
由于系統(tǒng)初始分區(qū)的原因,導(dǎo)致操作系統(tǒng)中對應(yīng) / 分區(qū)不會太大,通過 /var 目錄不會單獨(dú)分區(qū)。如果上面運(yùn)行 Docker 服務(wù),經(jīng)過長時間的使用,會使原本就比較大的分區(qū)越來越不夠用。如何更好地的處理這個問題呢?
1. 使用軟鏈接
- 我們知道在操作系統(tǒng)當(dāng)中,默認(rèn)情況下 Docker 容器的存放位置在 /var/lib/docker 目錄下面,可以通過下面命令查看具體位置。
- # 默認(rèn)存放位置
- $ sudo docker info | grep "Docker Root Dir"
- 解決默認(rèn)存儲容量不足的情況,最直接且最有效的方法就是掛載新的分區(qū)到該目錄。但是在原有系統(tǒng)空間不變的情況下,所以采用軟鏈接的方式,修改鏡像和容器的存放路徑達(dá)到同樣的目的。
- # 停掉Docker服務(wù)
- $ systemctl restart docker
- # 停掉Docker服務(wù)
- $ service docker stop
- 然后移動整個 /var/lib/docker 目錄到空間不較大的目的路徑。這時候啟動 Docker 時發(fā)現(xiàn)存儲目錄依舊是 /var/lib/docker 目錄,但是實(shí)際上是存儲在數(shù)據(jù)盤 /data/docker 上了。
- # 移動原有的內(nèi)容
- $ mv /var/lib/docker /data/docker
- # 進(jìn)行鏈接
- $ ln -sf /data/docker /var/lib/docker
2. 指定容器啟動參數(shù)
- 在配置文件中指定容器啟動的參數(shù) --graph=/var/lib/docker 來指定鏡像和容器存放路徑。Docker 的配置文件可以設(shè)置大部分的后臺進(jìn)程參數(shù),在各個操作系統(tǒng)中的存放位置不一致。在 Ubuntu 中的位置是 /etc/default/docker 文件,在 CentOS 中的位置是 /etc/sysconfig/docker 文件。
- # CentOS6
- # 因?yàn)閁buntu默認(rèn)開啟了selinux機(jī)制
- OPTIONS=--graph="/data/docker" --selinux-enabled -H fd://
- # CentOS7
- # 修改docker.service文件,使用-g參數(shù)指定存儲位置
- $ vi /usr/lib/systemd/system/docker.service
- ExecStart=/usr/bin/dockerd --graph /new-path/docker
- # Ubuntu
- # 因?yàn)閁buntu默認(rèn)沒開啟selinux機(jī)制
- OPTIONS=--graph="/data/docker" -H fd://
- 重新啟動之后,Docker 的路徑就改成 /data/docker 了。
- # 重新reload配置文件
- $ sudo systemctl daemon-reload
- # 重啟docker服務(wù)
- $ sudo systemctl restart docker.service
- 如果 Docker 的版本是 1.12 或以上的,可以修改或新建 daemon.json 文件。修改后會立即生效,不需重啟 Docker 服務(wù)。
- # 修改配置文件
- $ vim /etc/docker/daemon.json
- {
- "registry-mirrors":
- ["http://7e61f7f9.m.daocloud.io"],
- "graph": "/new-path/docker"
- }
3. System 下創(chuàng)建配置文件
- 在 /etc/systemd/system/docker.service.d 目錄下創(chuàng)建一個 Drop-In 文件 docker.conf,默認(rèn) docker.service.d 文件夾不存在,必須先創(chuàng)建它。創(chuàng)建 Drop-In 文件的原因,是我們希望 Docker服務(wù)使用 docker.conf 文件中提到的特定參數(shù),將默認(rèn)服務(wù)所使用的位于 /lib/systemd/system/docker.service 文件中的參數(shù)進(jìn)行覆蓋。
- # 定義新的存儲位置
- $ sudo vi /etc/systemd/system/docker.service.d/docker.conf
- [Service]
- ExecStart=/usr/bin/dockerd --graph="/data/docker" --storage-driver=devicemapper
- 保存并退出 vim 編輯器 /data/docker 就是新的存儲位置,而 devicemapper 是當(dāng)前 Docker 所使用的存儲驅(qū)動。如果你的存儲驅(qū)動有所不同,請輸入之前第一步查看并記下的值?,F(xiàn)在,你可以重新加載服務(wù)守護(hù)程序,并啟動 Docker 服務(wù)了,這將改變新的鏡像和容器的存儲位置。為了確認(rèn)一切順利,運(yùn)行 docker info 命令檢查 Docker 的根目錄。
- # 重新reload配置文件
- $ sudo systemctl daemon-reload
- # 重啟docker服務(wù)
- $ sudo systemctl start docker
責(zé)任編輯:龐桂玉
來源:
奇妙的Linux世界