标签: docker-stack

如何在docker-compose中更改Docker堆栈生成的服务名称

在使用以下方式部署此撰写文件的堆栈时:

docker stack deploy -c docker-compose.yml myapp

service-name:
    image: service-image
    namelike-property: my-custom-service-name // here I would like to know the property
Run Code Online (Sandbox Code Playgroud)

生成的服务名称将为myapp_service-name

我希望它由my-custom-service-name命名和引用

docker docker-compose docker-swarm docker-stack

6
推荐指数
2
解决办法
5304
查看次数

docker stack部署在repo中更改代码后不部署正在构建的映像

我已经为构建部署创建了作业.

作业运行正常,没有错误,项目已成功部署.

问题是虽然存储库已更改,但在浏览器中测试时,构建未显示更改,尽管工作区已成功提取带有更改的最新代码.

很少尝试解决方案

  1. 使得docker镜像构建不使用缓存

  2. 在开始构建之前使工作区清晰

似乎没什么用.哪里可能出错了.

我的项目结构:

项目目录: 哪个将包含所有laravel项目

Dockerfile: 构建映像

docker-compose.yml: docker 堆栈中部署服务

我正在使用docker stack deploy命令在docker stack中运行该服务

我试图删除以前构建的docker堆栈.通过buildID命名docker stack unique并重新创建一个新堆栈,但它也没有解决.

在尝试删除堆栈并再次生成时.我遇到了这个问题.

Failed to remove network 7bkf0kka11s08k3vnpfac94q8: Error response from daemon: rpc error: code = FailedPrecondition desc = network 7bkf0kka11s08k3vnpfac94q8 is in use by task lz2798yiviziufc5otzjv5y0gFailed to remove some resources from stack: smstake43
Run Code Online (Sandbox Code Playgroud)
  1. 为什么由于摘要问题,docker堆栈没有采用更新的图像.它是如何解决的.虽然更改被推送到bitbucket代码库,但部署并未因此而显示更改.如果我完全完成所有设置而不是只获取最新代码.

这是用于构建jenkins作业的bash脚本

#!/bin/sh

docker build -t smstake:latest .
docker stack deploy -c docker-compose.yml smstake
Run Code Online (Sandbox Code Playgroud)

jenkins docker docker-compose docker-stack

6
推荐指数
0
解决办法
460
查看次数

简单的docker容器:构建专用映像或mount配置为卷?

我正在整理一个docker-compose.yml文件来为我正在进行的项目运行多个服务.该项目有一个Magento和Wordpress网站,位于同一个域下,"同一域"方面需要一个非常简单的nginx容器来将请求路由到任一服务.

所以我将这个架构设计为4个容器(可视化):

  • 一个"magento"容器,使用内部项目特定的图像.
  • 一个"wordpress"容器,使用内部项目特定的图像.
  • 运行"db"容器mysql:5.6,其中安装了init db dumps /docker-entrypoint-initdb.d.
  • 运行nginx:alpine自定义配置的"路由器"容器/etc/nginx/nginx.conf.这用作反向代理,设置了两个位置指令.location /到"magento"的location /blog路线,以及到"wordpress"的路线.

我想保持简单并避免构建不必要的自定义图像,但在"路由器"的上下文中,我不确定我所做的是最好的方法,或者如果作为项目特定的图像更好.

我倾向于当前将自定义配置安装到nginx:alpine容器中的方法,因为配置特定于正在运行的堆栈 - 作为单个独立容器没有意义.

所以这两种方法,没有自定义图像我们有以下内容 docker-compose.yml

      router:
        image: nginx:alpine
        networks:
          - projectnet
        ports:
          - "80:80"
        volumes:
           - "./router/nginx.conf:/etc/nginx/nginx.conf"
Run Code Online (Sandbox Code Playgroud)

否则,我们有一个Dockerfile包含以下内容,正如我在互联网和其他StackOverflow响应中看到的那样.

    FROM nginx:alpine

    ADD nginx.conf /etc/nginx/
Run Code Online (Sandbox Code Playgroud)

有没有人支持/反对这两种方法?

docker dockerfile docker-compose docker-stack

5
推荐指数
1
解决办法
249
查看次数

在 shellscript 上使用 docker-compose 文件版本 3 的优势?

我创建 docker-compose.yml 的最初原因是为了利用诸如build:depends-on:制作一个文件来构建我的所有图像并在容器中运行它们。但是,我注意到版本 3 贬低了大多数这些函数,我很好奇为什么我会使用它来构建 shellscript。

这是当前运行我所有容器的 shellscript(我假设这是版本 3 docker-compose 文件将替换的内容,如果我要使用它):

echo "Creating docker network net1"
docker network create net1

echo "Running api as a container with port 5000 exposed on net1"
docker run --name api_cntr --net net1 -d -p 5000:5000 api_img

echo "Running redis service with port 6379 exposed on net1"
docker run --name message_service --net net1 -p 6379:6379 -d redis

echo "Running celery worker on net1"
docker run --name celery_worker1 --net net1 -d celery_worker_img …
Run Code Online (Sandbox Code Playgroud)

docker dockerfile docker-compose docker-swarm docker-stack

5
推荐指数
1
解决办法
606
查看次数

Docker:如何控制/定义默认网关设置

谁能解释一下 Docker Compose YML 文件是什么?我想做的就是能够控制各个容器的IP地址。我正在使用版本 3.1(但也尝试过 3.3,因为我最近升级到版本 17.06)。文档说:

A full example:

ipam:
  driver: default
  config:
    - subnet: 172.28.0.0/16
Note: Additional IPAM configurations, such as gateway, are only honored for version 2 at the moment.
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我需要在检查网络时尊重该子网。然而,网关完全不同[请阅读上面的注释],因此容器不会启动。为什么他们在版本 3 中失去了(目前)在版本 2 中有效的功能?更糟糕的是,为什么在 3.2 或 3.3 版本中没有恢复这一点?

也许我在这里离基地很远——当然不是第一次!对我来说最重要的是:有没有办法修改撰写文件以允许命令docker stack deploy(在 a 中Docker Swarm)提供对所使用的网关和子网的控制?

docker docker-compose docker-swarm docker-stack

5
推荐指数
1
解决办法
1万
查看次数

连接到远程docker主机/部署堆栈

我创建了一个 docker 堆栈来部署到集群。现在我\xc2\xb4m有点困惑将其部署到真实服务器的正确方法是什么样的?

\n\n

当然,我可以

\n\n
    \n
  1. scp我的docker-stack.yml文件到我的集群的一个节点
  2. \n
  3. ssh进入节点
  4. \n
  5. 跑步docker stack deploy -c docker-stack.yml stackname
  6. \n
\n\n

所以就有了docker-machine我想到的工具。\n我尝试过

\n\n
docker-machine -d none --url=tcp://<RemoteHostIp>:2375 node1\n
Run Code Online (Sandbox Code Playgroud)\n\n

只有在没有 TLS 的情况下打开端口时,什么才有效?\n我收到以下内容:

\n\n
$ docker-machine env node1\nError checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host "192.168.178.49:2375": dial tcp 192.168.178.49:2375: connectex: No connection could be made because the target machine actively refused it.\nYou can attempt to regenerate …
Run Code Online (Sandbox Code Playgroud)

docker docker-swarm docker-stack

5
推荐指数
1
解决办法
5387
查看次数

如何动态更改docker-compose图像字段

我有一个像下面这样的docker-compose.yml:

networks:
  smstake: 
    ipam:
      config:
        - subnet: 10.0.10.0/24
services:
    app:

        image: smstake:latest
        ports:
          - 8000:80
        networks:
          - smstake

        depends_on:
          - db
        deploy:
          mode: replicated
          replicas: 1
          placement:
            constraints:
              - node.role == manager
Run Code Online (Sandbox Code Playgroud)

我正在使用它在以群集模式运行的节点中部署服务。

每次构建映像时,映像名称可能会根据用户传递的用作映像标签的分支名称或标记名而有所不同。我正在从詹金斯那里运行它。例如

如何将图像名称动态添加到服务的图像参数。由于docker stack不支持构建。我什至不能使用它。我无法找出正确的方法。

我正在尝试与 docker stack deploy -c docker-compose.yml stackname

我的确切要求是:

  1. 在詹金斯(Jenkins)从事建筑工作,为我们建立形象。
  2. 如果标签或分支名称更改,则图像名称会有所不同或更改
  3. 我们有一个构建作业,可以使用新创建的映像再次部署作业。

为新的TAG创建新映像的原因是,我可以回滚到以前生成的映像。

进行一些编辑: 添加了映像名称以添加到configuration.env文件中,该文件将在部署命令运行之前在部署作业中使用echo命令传递。比docker-compose看起来像以下

version: '3.4'
networks:
  smstake: 

services:

    db:
        image: mysql:5.7
        networks:
          - smstake
        ports:
          - "3306"
        env_file:
          - configuration.env
        environment:
          MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
          MYSQL_DATABASE: ${DB_NAME}
          MYSQL_USER: ${DB_USER}
          MYSQL_PASSWORD: ${DB_PASSWORD}
        volumes:
          - mysql_data:/var/lib/mysql …
Run Code Online (Sandbox Code Playgroud)

jenkins docker docker-compose docker-swarm docker-stack

5
推荐指数
1
解决办法
4824
查看次数

堆栈服务容器动态主机名

我正在从Docker Cloud迁移到纯粹的Docker Swarm设置.我遗漏的一件事是容器如何将主机名设置为$ SERVICE_NAME- $ SLOT_NUMBER的好方法.

是否可以在群组堆栈服务中动态设置主机名/容器名称?

docker docker-swarm docker-stack

5
推荐指数
1
解决办法
1155
查看次数

如何更新docker服务/堆栈使用的最新映像?

.yml定义中,我一直在拉latest我的服务形象。

当我将新映像推送到注册表时,我想更新堆栈中的服务使用的映像。我没有看到任何--pull标志,并且docker服务更新的文档中没有明确提及这一点。

如何使用最近推送的latest图像重新部署?

docker docker-swarm docker-stack portainer

5
推荐指数
3
解决办法
4642
查看次数

如何为其他 Docker 容器和堆栈制作 Docker VPN 网关?

我们正在将 CI 基础设施实现为 Docker 堆栈。

堆栈中的一些容器现在需要访问外部服务,只能通过 OpenVPN 连接使用,比如说在192.168.2.0/24子网上。

为了尽可能保持容器的“单一用途”,我们最好添加一个 Docker 容器作为 VPN 网关,其他容器可以通过它与192.168.2.0/24子网通信。

这首先带来了一个复杂性:VPN 客户端容器需要cap-addof NET_ADMIN,这在我们用于部署堆栈的 swarm 模式中不可用。是否有解决方法,从单独启动 VPN 客户端容器到docker run

更重要的是,一旦我们vpnclient运行并连接了容器,我们如何配置 swarm 中的其他容器以实际将其用作网关以访问192.168.2.0/24子网上的所有 IP ?

openvpn docker docker-stack

5
推荐指数
0
解决办法
953
查看次数