在使用Docker进行应用布署和管理时,本地文件系统和容器中的文件系统之间的交互是一项必不可少的功能。在许多情况下,我们须要在主机和容器之间共享数据或保持数据的持久性。这么,怎样实现这些互动?实际上docker volume v小型linux系统,Docker容许我们通过目录映射(也被称为volume映射或挂载)来处理这种问题。

在这篇博客中docker volume v,将讲解怎样实现主机上的A目录映射到容器B,以及容器内的C目录映射到主机D。

1.主机上的A目录映射到容器B

要让主机上的某个目录(设为A)才能在Docker容器B中被访问,我们可以在运行容器时使用-v或--mount标志。以-v参数为例,指令如下:

docker volume v_docker volume v_docker volume v

docker run -v /path/to/host/A:/path/in/container/B image_name

其中,/path/to/host/A是主机上的路径,/path/in/container/B是容器内的路径。这个命令会在容器B中创建一个名为B的目录,该目录映射到主机上的目录A。容器B内部对目录B的任何改变就会在主机的目录A中反映下来。

docker volume v_docker volume v_docker volume v

2.容器上面的C目录映射到主机D

对于容器内的目录C映射到主机的目录D,我们可以使用Docker的volume参数进行操作。首先创建一个新的volume:

docker volume v_docker volume v_docker volume v

docker volume create --driver local --opt o=bind --opt type=none --opt device=/path/to/host/D volumeC

之后,在运行容器时将容器中的目录C与此volume进行挂载:

docker volume v_docker volume v_docker volume v

docker run -v volumeC:/path/in/container/C image_name

3.DockerCompose文件配置

docker volume v_docker volume v_docker volume v

这种操作也可以通过DockerCompose来实现,配置文件docker-compose.yml如下:

version: '3'
services:
  containerB:
    image: your-container-image
    volumes:
      - /path/to/host/A:/path/in/container/B
      - volumeC:/path/in/container/C
volumes:#与services同级
  volumeC:
    driver_opts:
      type: none
      device: /path/to/host/D
      o: bind

这样,除了可以将主机上的A目录映射到Docker容器B中,还可以将Docker容器中的C目录映射到主机D上。这两种方式为数据在容器和主机之间的持久化储存以及共享提供了极大的便利。

Docker的目录映射功能为我们提供了极大的便利:它除了可以帮助我们在持久化储存和数据共享方面节约大量时间linux vps,并且还促使我们可以更灵活地管理和使用我们的数据。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复