本文共 2140 字,大约阅读时间需要 7 分钟。
近期遇到了一个问题,创建的Docker容器磁盘空间不够怎么办?当然是挂载宿主机的目录到容器中了。
[root@e41a457a3580 ~]# df -hFilesystem Size Used Avail Use% Mounted onoverlay 50G 47G 3.6G 93% /tmpfs 64M 0 64M 0% /devtmpfs 16G 0 16G 0% /sys/fs/cgroup/dev/mapper/centos-root 50G 47G 3.6G 93% /jasonshm 64M 0 64M 0% /dev/shmtmpfs 16G 0 16G 0% /proc/asoundtmpfs 16G 0 16G 0% /proc/acpitmpfs 16G 0 16G 0% /proc/scsitmpfs 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 -D3d6bb6e6c4b308fb8fd9b6722d82033aa77a1dc7fdaa09d204962365c9a224fe
其中-p指定映射端口,需要指定多个端口时,可以多次使用-p选项
-v指定目录挂载,其中/data1/test代表宿主机的目录,/data代表容器的目录
[root@localhost ~]# ssh 192.168.0.252 -p 2325root@192.168.0.252's password: Last login: Mon May 6 10:45:39 2019
登录到容器中,查看磁盘信息
[root@3d6bb6e6c4b3 ~]# df -hFilesystem Size Used Avail Use% Mounted onoverlay 50G 47G 3.6G 93% /tmpfs 64M 0 64M 0% /devtmpfs 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/hostsshm 64M 0 64M 0% /dev/shmtmpfs 16G 0 16G 0% /proc/asoundtmpfs 16G 0 16G 0% /proc/acpitmpfs 16G 0 16G 0% /proc/scsitmpfs 16G 0 16G 0% /sys/firmware
在宿主机上创建一个文件
[root@localhost test]# echo "这个是在宿主机上创建的文件">test.txt[root@localhost test]# lltotal 4-rw-r--r-- 1 root root 40 Jul 2 19:53 test.txt
在容器中查看是否有数据
[root@3d6bb6e6c4b3 ~]# ll /datatotal 4-rw-r--r-- 1 root root 40 Jul 2 19:53 test.txt[root@3d6bb6e6c4b3 ~]# cat /data/test.txt 这个是在宿主机上创建的文件
总结:一般挂载目录需要在创建容器的时候挂载,不能创建后再进行挂载。可以采用给容器扩充容量的方式来实现扩容,不过比较复杂,而且在centos7系统上可能会有问题,不推荐
转载地址:http://fodnn.baihongyu.com/