一尘不染

最佳做法-匿名卷与绑定挂载

docker

在一个容器里

可以创建匿名卷

在语法(VOLUME /build)中Dockerfile

要么

volumes具有/build输入的以下语法

cache:
  build: ../../
  dockerfile: docker/dev/Dockerfile
  volumes:
    - /tmp/cache:/cache
    - /build
  entrypoint: "true"

我的理解是,/build在容器进入Exited状态后,两种方法都可以使音量也可用。

卷是匿名的,因为/build指向/var/lib/docker/volumesDocker主机中某个随机的新位置(目录中)

我看到匿名卷比命名卷(如/tmp/cache:/cache)更安全。

因为/tmp/cache位置很容易受到攻击,因为该位置被多个Docker容器使用的可能性更大。


1)

为什么不鼓励匿名使用卷?

2)

VOLUME /buildDockerfile

与…不同

volumes: 
 - /build

docker-compose.yml文件中?是否有一种情况,我们需要同时提及两者?


阅读 350

收藏
2020-06-17

共1个答案

一尘不染

实际上,鼓励/build使用匿名卷()而不是使用绑定装载():/tmp/cache:/cache

与绑定安装相比,卷具有几个优点:

  • 与绑定安装相比,卷更易于备份或迁移。
  • 您可以使用Docker CLI命令或Docker API管理卷。
  • 卷在Linux和Windows容器上均可工作。
  • 可以在多个容器之间更安全地共享卷。
  • 卷驱动程序使您可以将卷存储在远程主机或云提供商上,以加密卷内容或添加其他功能。
  • 新卷的内容可以由容器预先填充。

关于第二个问题,是的。您可以在docker-compose文件或Dockerfile中创建匿名卷。无需在两个地方都指定。

2020-06-17