这里的 swarm 文档https://docs.docker.com/swarm/告诉我们
由于 Docker Swarm 提供标准 Docker API,因此任何已与 Docker 守护进程通信的工具都可以使用 Swarm 透明地扩展到多个主机。支持的工具包括但不限于以下内容:
Dokku Docker Compose Krane Jenkins
那么如何使用 Dokku 和 docker-swarm 来支持多主机呢?
我们需要通过 Ngnix 和 Swarm 模式来平衡负载吗?
如果是这样,我们为什么需要这样做。Docker swarm 平衡负载。我测试了简单的应用程序。它有多种负载平衡策略。
连docker swarm都可以均衡负载,为什么还有那么多关于swarm模式下用ngnix进行负载均衡的文章呢?
当我创建一个新网络时,docker 使用 172.255.255.255(172.17.1.0、172.18.1.0 等)等地址创建它。但这可能与外部地址冲突,因为我网络中的所有计算机都具有相同的前缀(172.255.255.255)
有没有办法配置 docker 在创建新网络时使用的基本子网地址?
[更新] 我正在自动创建和删除网络,因此,我无法设置 --subnet 选项(因为我不知道哪些地址正在使用或未使用)。我需要 Docker 动态管理地址池,就像它管理入口网络(自动分配和修剪子网)一样。其实我需要的只是自定义入口基地址!
我尝试更新我的服务
\n\nsudo docker service update result --network-add backend --publish-add 5001\n\n并得到错误说明
result\noverall progress: 0 out of 1 tasks \n1/1: starting container failed: OCI runtime create failed: container_linux.go:2\xe2\x80\xa6 \nservice update paused: update paused due to failure or early termination of task gyovus3crd23v3wb22m1lbxf5\nRun Code Online (Sandbox Code Playgroud)\n\nresult但是,我在创建服务时停止了该进程,因为它花了很长时间。现在有什么办法可以完成创建过程吗?
在运行docker stack deploy将一些服务部署到 swarm 后,是否有一种方法可以以编程方式测试所有容器是否正确启动?
目的是在临时 CI/CD 管道中验证容器是否确实正在运行并且在启动时没有失败。通过 禁用重新启动restart_policy。
我在看docker stack services,该replicas专栏对此有用吗?
$ docker stack services --format "{{.ID}} {{.Replicas}}" my-stack-name
lxoksqmag0qb 0/1
ovqqnya8ato4 0/1
Run Code Online (Sandbox Code Playgroud) 我正在运行一个小型 Docker Swarm,运行一个有 2 个副本的服务。在该服务中,该服务的“task-1”需要与同一服务的“task-2”通信,但我没有找到实现此目的的方法
首先,我想避免将服务设置为主机网络模式,因为这样将其放入集群中就没有什么意义了。
其次,我发现您可以设置一个环境变量,其中包含docker-compose.yml我部署到 swarm 的文件中的 TaskName docker stack deply ...:
environment:
- NODENAME={{.Node.Hostname}}
- NODEID={{.Node.ID}}
- SERVICEID={{.Service.ID}}
- SERVICENAME={{.Service.Name}}
- TASKID={{.Task.ID}}
- TASKNAME={{.Task.Name}}
Run Code Online (Sandbox Code Playgroud)
您可以从各种容器 ping $TASKNAME。但它是不可发现的,因为名称中TASKNAME=e2foobar_yada.gq7ygzvp114q2x3t99lasuowc.e6ncft2k14g9o2u4blvhns19包含的 ID 在您重新启动服务时会发生更改。
我可以设置别名吗?或者有什么方法可以让我进行任务通信吗?
我为我的 PHP 应用程序编写了一个 Dockerfile,而不是从 dockerhub 我从头开始创建它。
例如:
FROM ubuntu:18.04
RUN apt-get update && \
apt-get install -y --no-install-recommends apt-utils && \
apt-get -y install sudo
RUN sudo apt-get install apache2 -y
RUN sudo apt-get install mysql-server -y
RUN sudo apt-get install php libapache2-mod-php -y
RUN rm -rf /var/www/html/
COPY . /var/www/html/
WORKDIR /var/www/html/
EXPOSE 80
RUN chmod -R 777 /var/www/html/app/tmp/
CMD systemctl restart apache2
Run Code Online (Sandbox Code Playgroud)
在这一步:
RUN sudo apt-get install php libapache2-mod-php -y
Run Code Online (Sandbox Code Playgroud)
我被卡住了,因为它要求用户输入,比如:
请选择您居住的地理区域。随后的配置问题将通过显示城市列表来缩小范围,代表它们所在的时区。
docker dockerfile docker-compose docker-swarm docker-machine
我正在尝试创建 docker swarm 服务,但出现了一些奇怪的行为:
对于某些图像,它是成功的,对于某些图像,我收到错误消息:
docker service create nginx
89t21k3udf007pvl2ucvmdp9l
overall progress: 1 out of 1 tasks
1/1: running [==================================================>]
verify: Service converged --> 成功
docker service create hello-world
8hhdki32ypfwshh2wvijkkmvb
overall progress: 0 out of 1 tasks
1/1: preparing [=================================> ]
verify: Detected task failure --> 失败
供您参考:docker pull hello-world工作正常。
我的印象是我们可以为所有图像创建服务,是否有任何条款和条件?我错过了什么吗?
注意:这是基本部分,但我的主要目的是为本地注册表镜像创建服务。但是在调试的第一步中发现了问题,即hello-world。
我正在 Docker Swarm 上运行服务。这是我为部署服务所做的:
docker swarm init
docker stack deploy -c docker-compose.yml MyApplication
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml 的内容:
version: "3"
services:
web:
image: myimage:1.0
ports:
- "9000:80"
- "9001:443"
deploy:
replicas: 3
resources:
limits:
cpus: "0.5"
memory: 256M
restart_policy:
condition: on-failure
Run Code Online (Sandbox Code Playgroud)
假设我更新了应用程序并构建了一个新图像myimage:2.0。在不停机的情况下将新版本的映像部署到服务的正确方法是什么?
春季启动 2.1.2。
2 个环境:local(postgres 11)和qa(docker swarm with postgres 10 和应用程序)
后maxLifetime传球,阿光重新创建连接(关闭旧的,创造新的),但对qa环境的连接没有得到关闭:与检查select * from pg_stat_activity wheredataname=...
,并在日志中,我们有:
2019-09-25 12:00:20.694 DEBUG 6 --- [nnection closer] c.z.h.p.PoolBase : HikariPool-1 - Closing connection org.postgresql.jdbc.PgConnection@54d41592: (connection has passed maxLifetime)
2019-09-25 12:00:20.699 DEBUG 6 --- [onnection adder] c.z.h.p.HikariPool : HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@29e14ddb
2019-09-25 12:00:26.372 DEBUG 6 --- [nnection closer] c.z.h.p.PoolBase : HikariPool-1 - Closing connection org.postgresql.jdbc.PgConnection@11684c62: (connection has passed maxLifetime)
2019-09-25 12:00:26.376 DEBUG …Run Code Online (Sandbox Code Playgroud)