Docker-02-Docker基础之挂载宿主机的目录到容器的目录中

时间:2025-05-11 08:34:05

近期遇到了一个问题,创建的Docker容器磁盘空间不够怎么办?当然是挂载宿主机的目录到容器中了。

  1. [root@e41a457a3580 ~]# df -h
  2. Filesystem Size Used Avail Use% Mounted on
  3. overlay 50G 47G 3.6G 93% /
  4. tmpfs 64M 0 64M 0% /dev
  5. tmpfs 16G 0 16G 0% /sys/fs/cgroup
  6. /dev/mapper/centos-root 50G 47G 3.6G 93% /jason
  7. shm 64M 0 64M 0% /dev/shm
  8. tmpfs 16G 0 16G 0% /proc/asound
  9. tmpfs 16G 0 16G 0% /proc/acpi
  10. tmpfs 16G 0 16G 0% /proc/scsi
  11. tmpfs 16G 0 16G 0% /sys/firmware

为了缓解根目录空间不够,我们需要把宿主机的目录,比如/data1/test文件挂载到容器的/data目录下,示例如下,如果宿主机上没有/data1/test目录,那么会自动创建该目录

  1. [root@localhost ~]# docker run -d -p 2325:22 -p 2326:80 -v /data1/test/:/data/ --name test_no_1 centos7 /usr/sbin/sshd -D
  2. 3d6bb6e6c4b308fb8fd9b6722d82033aa77a1dc7fdaa09d204962365c9a224fe

其中-p指定映射端口,需要指定多个端口时,可以多次使用-p选项

-v指定目录挂载,其中/data1/test代表宿主机的目录,/data代表容器的目录

  1. [root@localhost ~]# ssh 192.168.0.252 -p 2325
  2. root@192.168.0.252's password:
  3. Last login: Mon May 6 10:45:39 2019

登录到容器中,查看磁盘信息

  1. [root@3d6bb6e6c4b3 ~]# df -h
  2. Filesystem Size Used Avail Use% Mounted on
  3. overlay 50G 47G 3.6G 93% /
  4. tmpfs 64M 0 64M 0% /dev
  5. tmpfs 16G 0 16G 0% /sys/fs/cgroup
  6. /dev/sdb1 2.8T 29G 2.6T 2% /data
  7. /dev/mapper/centos-root 50G 47G 3.6G 93% /etc/hosts
  8. shm 64M 0 64M 0% /dev/shm
  9. tmpfs 16G 0 16G 0% /proc/asound
  10. tmpfs 16G 0 16G 0% /proc/acpi
  11. tmpfs 16G 0 16G 0% /proc/scsi
  12. tmpfs 16G 0 16G 0% /sys/firmware

在宿主机上创建一个文件

  1. [root@localhost test]# echo "这个是在宿主机上创建的文件">
  2. [root@localhost test]# ll
  3. total 4
  4. -rw-r--r-- 1 root root 40 Jul 2 19:53

在容器中查看是否有数据

  1. [root@3d6bb6e6c4b3 ~]# ll /data
  2. total 4
  3. -rw-r--r-- 1 root root 40 Jul 2 19:53
  4. [root@3d6bb6e6c4b3 ~]# cat /data/
  5. 这个是在宿主机上创建的文件

总结:一般挂载目录需要在创建容器的时候挂载,不能创建后再进行挂载。可以采用给容器扩充容量的方式来实现扩容,不过比较复杂,而且在centos7系统上可能会有问题,不推荐