我是码头工人的新手,因此我心里有这个天真的怀疑。我想要一种方法,每当我创建一个服务时,它都会在特定节点上创建,但如果我扩展它,它应该扩展到 docker swarm 中也存在的其他节点。我知道 --mode global 和 --constraints node.hostname!=node-1。但这并不能解决我的问题。如果我的问题不清楚,请告诉我,我会尽力以更好的方式解释。
我使用以下命令创建了一个覆盖网络:
docker network create --driver overlay --internal --subnet 192.168.0.0/24 test
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用一项服务部署堆栈。堆栈的 yaml 文件如下所示:
---
version: "3.0"
services:
web1:
image: "test"
ports:
- "12023:22"
hostname: "ard014-web1"
networks:
- test
networks:
test:
driver: overlay
Run Code Online (Sandbox Code Playgroud)
我使用以下命令部署堆栈:
docker stack deploy -c test.yaml test
Run Code Online (Sandbox Code Playgroud)
如果我使用 docker network ls 检查网络,我会发现新的覆盖网络以名称 test_test 创建,并且容器使用该网络而不是已创建的网络。这是预期的行为吗?我希望堆栈使用我手动创建的网络而不是创建新网络,因为我想控制覆盖网络使用的 ip CIDR 范围。我怎样才能做到这一点?
我有 Spring Boot docker 镜像。我在 application.properties 文件中提供了所有参数(环境变量)。如何在通过 docker image 作为输入运行应用程序时提供此文件。
请帮我。
我即将第一次配置我的 DTR“Docker TrustedRegistry”,它看起来很复杂。
因此,在做出整个决定之前,我想知道“Docker Hub”和“Docker TrustedRegistry”之间有什么区别?
谢谢
我有一个带有使用最新标签的容器的 docker compose 文件:
code_site:
image: code_site:latest
deploy:
restart_policy:
condition: any
volumes:
- ../../data_to_backup/code_site/drupal_sites:/drupal_www/sites
- drupal_core:/drupal_www/core
- php_fpm_socket:/var/run/php-fpm7
networks:
- main_net
我有一个过程可以重建容器。当我想对我的网站进行更改时,我会使用它。
我正在调查 docker stack deploy 命令的问题:(
docker stack deploy --compose-file=docker-compose.yml code_site
堆栈名称恰好与图像名称匹配,但这是一个巧合。)
如果我经过以下过程: 删除 code_site:latest image (rmi code_site:latest) 重建一个新的 code_site:latest image 重新部署堆栈
它将调出容器的旧版本。这令人困惑,尤其是因为我删除了旧版本。
我更进一步,删除了 code_site 映像,然后运行了 stack deploy 命令。堆栈部署成功仍然运行旧版本的容器。
我可以使用 docker images 命令并验证没有名为 code_site:latest 的容器,所以我不知道堆栈可能如何部署。
任何人都可以解释图像是如何从死里复活的,我应该使用什么方法来永久摆脱它并强制 docker stack 使用真实图像?
谢谢罗伯特
code_site 是一个本地构建的映像,我在 swarm 上运行,但 swarm 中只有一个节点
我有一个詹金斯管道,它在 NUC 服务器上构建和运行各种容器。此 NUC 与另一个 NUC 位于集群 (Swarm) 上。我最近在我的设置和该集群上添加了几个树莓派,所以现在我想知道是否有一种方法可以命令 Jenknis 在x86_x64 or armhf设备上部署。
我尝试了-e constraint:node==<node_name>在其他问题上找到的解决方案,但没有运气。
x86_x64我尝试了从一个节点指向另一个节点以及从一个x86_x64节点指向另一个armhf节点的上述命令
我不想将这些容器作为服务运行,也不关心任何负载均衡器,我只想在特定架构上运行容器(x86_x64 or armhf取决于我想要部署的内容)
我想使用PHP Image和Apache Image创建一个 Docker 容器,这是我的 dockerfile。
Docker 文件名: single-container.dockerfile
# PHP image from docker hub
FROM php:7.2-cli
# Apache image from docker hub
FROM httpd:2.4
# public-html is path for my local codebase
COPY ./public-html/ /usr/local/apache2/htdocs/
Run Code Online (Sandbox Code Playgroud)
在 docker CLI 中,当我运行此命令时:docker build -f single-container.dockerfile . -t mysinglecontainer:latest
我遇到以下错误。
请指教,需要修改哪些内容?
docker dockerfile docker-compose docker-swarm docker-machine
我正在尝试对docker -compose和swarm使用相同的 docker-compose.yml和.env文件。变量来自通过在启动时运行 run.sh 脚本,.env文件中应该通过 sed 解析到配置文件中。使用该docker-compose up命令时,此设置工作正常,但当我使用该docker stack deploy命令时,它们没有通过。
如何将变量传递到容器中,以便run.sh脚本在启动时解析它们?
environment-variables docker docker-compose docker-swarm docker-stack
我正在尝试使用 docker 堆栈部署应用程序。建立与泊坞窗,撰写(已运行测试后完全确定),我创建了一个群,加入它,并试图逃跑
docker stack deploy --compose-file docker-compose.yml default
Run Code Online (Sandbox Code Playgroud)
出现以下错误:
failed to create service default_sharkcop-api: Error response from daemon: rpc error: code = InvalidArgument desc = ContainerSpec: image reference must be provided
Run Code Online (Sandbox Code Playgroud)
这是我的 docker-compose.yml
version: "3"
services:
# Define the api web application
sharkcop-api:
# Build the Dockerfile that is in the web directory
build:
context: ./sharkcop-api
dockerfile: Dockerfile
# Always restart the container regardless of the exit status; try and restart the container indefinitely
restart: always
# …Run Code Online (Sandbox Code Playgroud) 我目前正在学习 docker 并且已经建立了一个具有一个管理器和一个集群的群。
我运行一个有 2 个副本的堆栈......一切都很好。当容器无法运行时,swarm 将停止它并重新创建它。那太棒了,但停止的容器不会被删除。有没有办法自动删除停止/未使用的容器?
docker ×10
docker-swarm ×10
containers ×1
docker-stack ×1
dockerfile ×1
dockerhub ×1
jenkins ×1
spring-boot ×1
swarm ×1