Cau*_*hon 17 docker docker-compose
我像这样使用Docker ClamAV 图像docker-compose.yml:
version: '3.7'
services:
clamav_updater:
image: quay.io/ukhomeofficedigital/clamav:latest
ports:
- "3310:3310"
volumes:
- type: bind
source: /home/misc/docker/efs_clamav
target: /var/lib/clamav
Run Code Online (Sandbox Code Playgroud)
此服务计划成为“更新程序”/“编写程序”。这意味着它会将更新下载到 中/var/lib/clamav,并且由于这是一个已安装的卷,source: /home/misc/docker/efs_clamav因此读取器节点(不会运行更新命令)将能够从该文件夹中获取更新的文件。
这都是理论上的。实际上,当我运行这个图像时,我收到以下错误:
错误:对于 clamav_writer 无法为服务 clamav_writer 创建容器:重复挂载点:/var/lib/clamav
我知道这是因为Dockerfile已经设置了与 a 相同的目录volume:
VOLUME /var/lib/clamav
Run Code Online (Sandbox Code Playgroud)
无论如何我仍然可以在我的docker-compose.yml文件中设置该卷(以便我可以设置source其他读者读取的目录?
以防万一有人仍然遇到这个问题,看起来这是一个错误修复,它可能会在 Docker Desktop v3.4.0 之后的版本中发布:
https://github.com/docker/compose-cli/pull/1782
在进入生产 docker compose cli 之前,解决方法是确保在 Dockerfile 和 docker-compose.yml 中使用完全相同的路径(带或不带尾部斜杠)
当您在 docker-compose.yml 和 Dockerfile 中有多个卷声明时,就会出现此问题。解决方案是删除 Dockerfile 或 docker-compose.yml 中的 VOLUME 声明,例如。
version: '3.5'
services:
test:
build: .
volumes:
- /mnt/tmpfs
Run Code Online (Sandbox Code Playgroud)
Docker 文件:
FROM alpine:3.4
VOLUME /mnt/tmpfs
CMD /bin/sh
Run Code Online (Sandbox Code Playgroud)
我从 Dockerfile 中删除了该文件。
| 归档时间: |
|
| 查看次数: |
25306 次 |
| 最近记录: |