Docker 存儲設置


docker默認單個容器可以使用數據空間大小10GB,docker可用數據總空間100GB,元數據可用總空間2GB。用docker info信息可以查看Data Space Total、Metadata Space Total等信息:

[root@docker-01 sysconfig] # docker info
Containers: 23
Images: 45
Storage Driver: devicemapper
  Pool Name: docker-8:36-13501344-pool
  Pool Blocksize: 65.54 kB
  Data file : /var/lib/docker/devicemapper/devicemapper/data
  Metadata file : /var/lib/docker/devicemapper/devicemapper/metadata
  Data Space Used: 1.684 GB
  Data Space Total: 107.4 GB
  Metadata Space Used: 2.699 MB
  Metadata Space Total: 2.147 GB
  Library Version: 1.02.89-RHEL6 (2014-09-01)
Execution Driver: native-0.2
Kernel Version: 2.6.32-504.el6.x86_64
Operating System: <unknown>
CPUs: 24
Total Memory: 47.09 GiB
Name: docker-01
ID: S3F6:VR2L:WH7X:QLQO:RH6P:EVBT:QRUW:NNMV:4MQ7:YADK:Q6OV:Q2IQ
[root@docker-01 sysconfig] #

占用本地文件系統空間大小如下(data存放的是image和container數據,metadata存放的是tag、name、status等基本信息):

[root@docker-01 ~] # ll /var/lib/docker/devicemapper/devicemapper/ -h
total 35G
-rw------- 1 root root 100G Jun  5 13:43 data
-rw------- 1 root root 2.0G Jun  5 13:43 metadata
[root@docker-01 ~] #

可以使用df -hT查看容器可以使用的空間大小,下面的大約是10GB(同一數據塊,不同文件系統大小存在差異)

[root@docker-01 ~] # docker exec zhijie df -hT
Filesystem           Type    Size  Used Avail Use% Mounted on
rootfs               rootfs  9.8G  1.8G  7.5G  20% /
/dev/mapper/docker-8 :3-61079671-9623cd0329b8e2a093cae0911ce6dabe515397391252ed410d6dd9b5c06da77f
                      ext4    9.8G  1.8G  7.5G  20% /
tmpfs                tmpfs    24G     0   24G   0% /dev
shm                  tmpfs    64M     0   64M   0% /dev/shm
/dev/sda3            ext4    1.1T  228G  800G  23% /etc/resolv .conf
/dev/sda3            ext4    1.1T  228G  800G  23% /etc/hostname
/dev/sda3            ext4    1.1T  228G  800G  23% /etc/hosts
[root@docker-01 ~] #

當一個容器的數據空間大於10GB后,那么這個容器將不能寫入新的數據文件。如果容器需要很大的數據空間,可以使用數據卷掛在到宿主機或存儲上。當容器太多使用數據卷掛載方式后,所有容器使用的數據空間已經大於100GB,這時將不能新建或運行容器。如何突破這種限制,這篇文章給出了解答:https://github.com/docker/docker/tree/master/daemon/graphdriver/devmapper
分兩種情況討論:
1、如果docker第一次啟動,在啟動docker前,可以使用參數–storage-opt分別指定dm.basesize、dm.loopdatasize、dm.loopmetadatasize等項,指定單個容器可用數據空間、docker可用數據空間、元數據可用數據空間。以centos6.6為例(修改配置文件/etc/sysconfig/docker):

[root@docker-02 ~] # cat /etc/sysconfig/docker
# /etc/sysconfig/docker
#
# Other arguments to pass to the docker daemon process
# These will be parsed by the sysv initscript and appended
# to the arguments list passed to docker -d
 
other_args= "--storage-opt dm.basesize=20G --storage-opt dm.loopdatasize=200G --storage-opt dm.loopmetadatasize=4G -H tcp://127.0.0.1:2345 -H unix:///var/run/docker.sock"
DOCKER_CERT_PATH= /etc/docker
 
# Location used for temporary files, such as those created by
# # docker load and build operations. Default is /var/lib/docker/tmp
# # Can be overriden by setting the following environment variable.
# # DOCKER_TMPDIR=/var/tmp
[root@docker-02 ~] #

分別指定單個容器可用數據空間20GB、docker可用數據空間200GB、元數據可用空間4GB。然后啟動docker,用docker info可以查看配置已生效:

2、如果是正在運行的docker,需要導出鏡像docker commit、docker push、docker save等操作,然后停止docker服務,刪除docker的數據文件(centos6.6是rm -rf /var/lib/docker/)。再修改docker的配置文件/etc/sysconfig/docker,重啟docker服務生效。最后導入備份的鏡像啟動容器。
文章出處:http://www.xiaomastack.com/2015/06/05/docker-storage/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM