我有Docker命令来创建一个容器,然后使用该容器的名称与-卷-从运行另一个容器,它工作正常-
docker create -v /home/dev/docker/my/config:/home/myuser/4.0/config --name shared-config my/configurator:4.0.0
以上内容将从映像my/configurator:4.0.0创建一个名为shared config的新容器
当试图运行任何其他容器(比如my/oms:4.0.0)时,我可以简单地使用名为shared config的容器中的卷,使用--volumes from
docker run --volumes-from shared-config -p 8083:8080 -d my/oms:4.0.0
使用--volumes from我们可以多次使用这个卷,无论它在哪个容器中都是必需的。
直到这里,一切似乎都很好。
现在,我正试图在docker compose中使用文件格式版本“3”执行上述操作,但我无法理解在创建数据卷后如何重新使用它。因为按照docker compose在版本3中的说法,他们已经停止使用--卷。他们说-
若要在服务之间共享卷,请使用顶级卷选项定义该卷,并使用服务级别卷选项从共享该卷的每个服务引用该卷。
在上述声明中,他们指的是命名卷,请从这里参考。
但是我只想挂载一个主机目录作为一个数据卷并重新使用该数据卷。我的问题是如何通过docker-comuse文件版本“3”重用这个数据卷。最简单的是,对于我想通过docker-comuse运行的每个服务,我可以在服务级别使用卷键
version: "3"
services:
my-oms:
image: my/oms:4.0.0
ports:
- "8083:8080"
volumes:
- /home/dev/docker/my/config:/home/myuser/4.0/config
但是,如果我想在不同的服务中将主机目录(/home/dev/docker/my/config)用作数据卷,该怎么办呢。我应该拥有每个服务的卷密钥,还是在docker compose版本“3”中有更好的方法可以在其他服务中重复使用数据卷(我们如何使用--卷)。
我错过了什么建议或建议吗?
避免重复语法的最佳选择是扩展docker compose。yml使用扩展选项:
所以你可以有一个共同的服务。yml看起来像:
version: "3"
services:
generic-vol:
volumes:
- /home/dev/docker/my/config:/home/myuser/4.0/config
然后你的码头工人开始作曲。yml将更新为:
version: "3"
services:
my-oms:
extends:
file: common-services.yml
service: generic-vol
image: my/oms:4.0.0
ports:
- "8083:8080"
请注意,docker堆栈部署-cdocker-compose.yml
可能不支持所有这些选项,我遇到了在项目中使用变量和多个docker撰写文件的问题。解决方案是使用docker撰写将文件解析成堆栈部署可以与docker撰写配置一起使用的东西
第二种选择是利用yml语法本身的特性。它允许锚定和对这些锚定的引用。这种语法看起来像:
version: "3"
services:
my-oms:
image: my/oms:4.0.0
ports:
- "8083:8080"
volumes: &common-vol
- /home/dev/docker/my/config:/home/myuser/4.0/config
my-xyz:
image: my/xyz:4.0.0
ports:
- "8888:8080"
volumes: *common-vol
第一个<代码>
问题内容: 我们可以在docker中拥有一个数据量: 但是,如果数据量存在,则与使用装入文件夹中的数据有什么不同? 问题答案: 它与使用-v / path / to / data / in / container:/ home / user / a_good_place_to_have_data装入文件夹中的数据有何不同? 这是因为,如“ 将主机目录装载为数据卷 ”中所述 主机目录从本质上说是依赖
我想确保我的Postgres数据(使用基于Linux图像)保持,即使在我的Windows主机重启后。 我尝试按照以下步骤操作如何使用卷将数据持久化到dockerize postgres数据库中 然而,我发现了一个错误 然后,我试着跟着插手https://forums.docker.com/t/trying-to-get-postgres-to-work-on-persistent-windows-
本文向大家介绍使用npm安装最新版本nodejs,包括了使用npm安装最新版本nodejs的使用技巧和注意事项,需要的朋友参考一下 # 安装 nodejs 以下介绍的是命令行安装方法,读者也可以到 nodejs官网 上下载安装最新版。 升级npm为最新版本 sudo npm install npm@latest -g 往往用命令行安装的nodejs不是最新版本,而且升级nodejs并不是件非常简
问题内容: 我有一个在定义的多个Docker容器上运行的应用程序。我的用户一切正常,输出如下所示: 现在,我试图运行与(见相关部分以下),问题是,容器现在命名,并且,这是他们创造了从无到有,并在原容器的所有自定义都将丢失。 我尝试重命名容器,但是它给出一个错误消息,指出已经有一个使用该名称的容器。 问: 是否有某种方法可以强制重用现有容器,而不是根据各自的映像创建新容器? 主管 问题答案: 只要容
当我遇到伪造的问题时,我正在Raspberry Pi上设置一个改装的Minecraft服务器。我之前设置了一个运行1.17的香草服务器,这需要Java16,但我需要Java15或更低的伪造。我之前安装了Java16 JDK从https://adoptopenjdk.net/releases.htmlarm32架构,它运行得非常好。我试图安装服务器的伪造版本是1.16.5。我下载了安装程序,它运行得