1. 程式人生 > >Docker配置本地映象與容器的儲存位置

Docker配置本地映象與容器的儲存位置

使用find命令找到大於指定大小的檔案:

 find / -type f -size +10G

排除某個目錄

find / -path "/media/xww" -type f -size +10G

修改Docker本地映象與容器的儲存位置的方法

方法一、軟連結

預設情況下Docker的存放位置為:/var/lib/docker
可以通過下面命令檢視具體位置:

sudo docker info | grep "Docker Root Dir"

解決這個問題,最直接的方法當然是掛載分割槽到這個目錄,但是我的資料盤還有其他東西,這肯定不好管理,所以採用修改映象和容器的存放路徑的方式達到目的。

這個方法裡將通過軟連線來實現。

首先停掉Docker服務:

systemctl restart docker
或者
service docker stop

然後移動整個/var/lib/docker目錄到目的路徑:

mv /var/lib/docker /root/data/docker
ln -s /root/data/docker /var/lib/docker

這時候啟動Docker時發現儲存目錄依舊是/var/lib/docker,但是實際上是儲存在資料盤的,你可以在資料盤上看到容量變化。

方法二、可擴充套件邏輯卷

預設情況下docker的存放位置為:
/var/lib/docker
一般根下分割槽我們不會給太大。映象和容器越存越多一般我們有兩種解決方法
1、掛載大分割槽到/var/lib/docker:
一般選擇建立邏輯分割槽lvm,方便後期擴充套件集體。

    a.建立新分割槽,並格式化
         PS: 以下操作建設你已經有現成的卷組,直接可以劃邏輯卷。或者你可以自己建立邏輯卷,或者不適用邏輯卷直接使用分割槽
lvcreate -L 300G lv_docker vg_home  
mkfs.ext4 /dev/vg_home/lv__docker  
    b.掛載新分割槽到臨時掛載點
[plain] view plain copy
mkdir /mnt/docker  
mount /dev/vg_home/lv_docker /mnt/docker/  

    c.停掉docker後拷貝/var/lib/docker下資料到臨時掛載點
[plain] view plain copy
service docker stop  
cp -r /var/lib/docker/
* /mtn/docker d.修改/var/lib/docker 為//var/lib/docker.bak,並建立/var/lib/docker [plain] view plain copy mv /var/lib/docker{,.bak} mkdir /var/lib/docker e.掛載新分割槽到/var/lib/docker,並設定開機自動掛載。 [plain] view plain copy mount /dev/vg_home/lv_docker /var/lib/docker vim /etc/fstab --- /dev/vg_home/lv_docker /docker_data ext4 defaults 0 0 ---- f.檢測docker是否可用,資料是否完整 [plain] view plain copy docker images docker ps -a g.確認無誤後解除安裝臨時掛載點,刪除/var/lib/docker.bak [plain] view plain copy umount /mnt/docker rm -rf /var/lib/docker.bak
方法三、修改映象和容器的存放路徑

指定映象和容器存放路徑的引數是–graph=/var/lib/docker,我們只需要修改配置檔案指定啟動引數即可。

Docker 的配置檔案可以設定大部分的後臺程序引數,在各個作業系統中的存放位置不一致,在 Ubuntu 中的位置是:/etc/default/docker,在 CentOS 中的位置是:/etc/sysconfig/docker。

如果是 CentOS 則新增下面這行:

OPTIONS=--graph="/root/data/docker" --selinux-enabled -H fd://
如果是 Ubuntu 則新增下面這行(因為 Ubuntu 預設沒開啟 selinux):

OPTIONS=--graph="/root/data/docker" -H fd://
# 或者
DOCKER_OPTS="-g /root/data/docker"

最後重新啟動,Docker 的路徑就改成 /root/data/docker 了。
如果沒有生效,按如下操作

vim /etc/default/docker  
新增配置資訊
DOCKER_OPTS="--graph=/home/docker"  
儲存退出
service docker restart  
發現配置並沒有生效
解決方案:
 mkdir -p /etc/systemd/system/docker.service.d  
 cat /etc/systemd/system/docker.service.d/Using_Environment_File.conf  
如果沒有該檔案則自行建立,新增以下內容
[Service]  
EnvironmentFile=-/etc/default/docker  
ExecStart=  
ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS  
載入配置重啟服務
systemctl daemon-reload  
service docker restart  
檢視配置是否生效