修改Docker鏡像默認存儲位置的方法(解決方法)

由於系統初始分區的原因,導致操作系統中對應 / 分區不會太大,通過 /var 目錄不會單獨分區。如果上面運行 Docker 服務,經過長時間的使用,會使原本就比較大的分區越來越不夠用。如何更好地的處理這個問題呢?

1. 使用軟鏈接

我們知道在操作系統當中,默認情況下 Docker 容器的存放位置在 /var/lib/docker 目錄下面,可以通過下面命令查看具體位置。

# 默認存放位置  
$ sudo docker info | grep "Docker Root Dir" 

解決默認存儲容量不足的情況,最直接且最有效的方法就是掛載新的分區到該目錄。但是在原有系統空間不變的情況下,所以采用軟鏈接的方式,修改鏡像和容器的存放路徑達到同樣的目的。

# 停掉Docker服務  
$ systemctl restart docker  
# 停掉Docker服務  
$ service docker stop 

然後移動整個 /var/lib/docker 目錄到空間不較大的目的路徑。這時候啟動 Docker 時發現存儲目錄依舊是 /var/lib/docker 目錄,但是實際上是存儲在數據盤 /data/docker 上瞭。

# 移動原有的內容  
$ mv /var/lib/docker /data/docker  
# 進行鏈接  
$ ln -sf /data/docker /var/lib/docker 

2. 指定容器啟動參數

在配置文件中指定容器啟動的參數 –graph=/var/lib/docker 來指定鏡像和容器存放路徑。Docker 的配置文件可以設置大部分的後臺進程參數,在各個操作系統中的存放位置不一致。在 Ubuntu 中的位置是 /etc/default/docker 文件,在 CentOS 中的位置是 /etc/sysconfig/docker 文件。

# CentOS6  
# 因為Ubuntu默認開啟瞭selinux機制  
OPTIONS=--graph="/data/docker" --selinux-enabled -H fd://  
# CentOS7  
# 修改docker.service文件,使用-g參數指定存儲位置  
$ vi /usr/lib/systemd/system/docker.service  
ExecStart=/usr/bin/dockerd --graph /new-path/docker 
# Ubuntu  
# 因為Ubuntu默認沒開啟selinux機制  
OPTIONS=--graph="/data/docker" -H fd:// 

重新啟動之後,Docker 的路徑就改成 /data/docker 瞭。

# 重新reload配置文件  
$ sudo systemctl daemon-reload  
# 重啟docker服務  
$ sudo systemctl restart docker.service 

如果 Docker 的版本是 1.12 或以上的,可以修改或新建 daemon.json 文件。修改後會立即生效,不需重啟 Docker 服務。

# 修改配置文件  
$ vim /etc/docker/daemon.json  
{  
    "registry-mirrors":  
        ["http://7e61f7f9.m.daocloud.io"],  
    "graph": "/new-path/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 文件中的參數進行覆蓋。

# 定義新的存儲位置  
$ 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 是當前 Docker 所使用的存儲驅動。如果你的存儲驅動有所不同,請輸入之前第一步查看並記下的值。現在,你可以重新加載服務守護程序,並啟動 Docker 服務瞭,這將改變新的鏡像和容器的存儲位置。為瞭確認一切順利,運行 docker info 命令檢查 Docker 的根目錄。

# 重新reload配置文件  
$ sudo systemctl daemon-reload  
# 重啟docker服務  
$ sudo systemctl start docker  

到此這篇關於修改Docker鏡像默認存儲位置的方法的文章就介紹到這瞭,更多相關Docker鏡像默認存儲位置內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!