近期遇到了一个问题,创建的Docker容器磁盘空间不够怎么办?当然是挂载宿主机的目录到容器中了。
-
[root@e41a457a3580 ~]# df -h
-
Filesystem Size Used Avail Use% Mounted on
-
overlay 50G 47G 3.6G 93% /
-
tmpfs 64M 0 64M 0% /dev
-
tmpfs 16G 0 16G 0% /sys/fs/cgroup
-
/dev/mapper/centos-root 50G 47G 3.6G 93% /jason
-
shm 64M 0 64M 0% /dev/shm
-
tmpfs 16G 0 16G 0% /proc/asound
-
tmpfs 16G 0 16G 0% /proc/acpi
-
tmpfs 16G 0 16G 0% /proc/scsi
-
tmpfs 16G 0 16G 0% /sys/firmware
为了缓解根目录空间不够,我们需要把宿主机的目录,比如/data1/test文件挂载到容器的/data目录下,示例如下,如果宿主机上没有/data1/test目录,那么会自动创建该目录
-
[root@localhost ~]# docker run -d -p 2325:22 -p 2326:80 -v /data1/test/:/data/ --name test_no_1 centos7 /usr/sbin/sshd -D
-
3d6bb6e6c4b308fb8fd9b6722d82033aa77a1dc7fdaa09d204962365c9a224fe
其中-p指定映射端口,需要指定多个端口时,可以多次使用-p选项
-v指定目录挂载,其中/data1/test代表宿主机的目录,/data代表容器的目录
-
[root@localhost ~]# ssh 192.168.0.252 -p 2325
-
root@192.168.0.252's password:
-
Last login: Mon May 6 10:45:39 2019
-
登录到容器中,查看磁盘信息
-
[root@3d6bb6e6c4b3 ~]# df -h
-
Filesystem Size Used Avail Use% Mounted on
-
overlay 50G 47G 3.6G 93% /
-
tmpfs 64M 0 64M 0% /dev
-
tmpfs 16G 0 16G 0% /sys/fs/cgroup
-
/dev/sdb1 2.8T 29G 2.6T 2% /data
-
/dev/mapper/centos-root 50G 47G 3.6G 93% /etc/hosts
-
shm 64M 0 64M 0% /dev/shm
-
tmpfs 16G 0 16G 0% /proc/asound
-
tmpfs 16G 0 16G 0% /proc/acpi
-
tmpfs 16G 0 16G 0% /proc/scsi
-
tmpfs 16G 0 16G 0% /sys/firmware
在宿主机上创建一个文件
-
[root@localhost test]# echo "这个是在宿主机上创建的文件">
-
[root@localhost test]# ll
-
total 4
-
-rw-r--r-- 1 root root 40 Jul 2 19:53
在容器中查看是否有数据
-
[root@3d6bb6e6c4b3 ~]# ll /data
-
total 4
-
-rw-r--r-- 1 root root 40 Jul 2 19:53
-
[root@3d6bb6e6c4b3 ~]# cat /data/
-
这个是在宿主机上创建的文件
总结:一般挂载目录需要在创建容器的时候挂载,不能创建后再进行挂载。可以采用给容器扩充容量的方式来实现扩容,不过比较复杂,而且在centos7系统上可能会有问题,不推荐