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/