Are the consul and docker swarm configuration backends compatible?
My requirement is that I need to start N traefik containers as a docker service, where they get their dynamic frontends/backends via docker swarm but I also need all N of the traefik containers to use a shared ACME config (i.e. sourced from consul).
I'd like it so that Frontends/backends info should come from the docker swarm, while the ACME config should come from consul. As far as any other static …
我已经创建了3个节点群簇Virtualbox使用docker-machine。这三个都在运行,我可以使用“ docker-machine ssh”连接每个。存在一个问题,我重新启动物理机,集群似乎无法正常工作,为什么?以下是详细信息。感谢您的指导和建议。
san @ san-System-Product-Name:〜$ docker-machine ls
Run Code Online (Sandbox Code Playgroud)NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS first - virtualbox Running tcp://192.168.99.100:2376 v17.06.0-ce second - virtualbox Running tcp://192.168.99.101:2376 v17.06.0-ce third - virtualbox Running tcp://192.168.99.102:2376 v17.06.0-ce第一个是领导者,第二个是管理者,第三个是工人。我试图使用“ docker-machine ssh first docker node ls”。
Error response from daemon:
`rpc error: code = 2 desc = The swarm does not have a leader`.
It's possible that too few managers are online. Make sure more than
half of the managers are …Run Code Online (Sandbox Code Playgroud) 我是 docker swarm 模式的新手。如您所知,可以启动/停止 docker 容器,但我认为不可能在 swarm 中执行此操作。
例如,我已经部署了 swarm 并使用副本(2/2)创建了新任务:
docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
2o3a6z30q9df contactactivity replicated 2/2 myimage/live-springboot-myservice:19ff0be1f0087asd1dasdb52c345151e9985b4a5a2 *:111->1111/tcp
Run Code Online (Sandbox Code Playgroud)
是否可以在不移除一个 swarm 容器的情况下停止它并在将来将其带回来?
PS我只是想澄清删除或重新创建 - 在我的情况下不是选项。
让 Q 清楚:如果你停止容器然后启动 - 这个容器不会成为 swarm 的一部分。我无法相信在 swarm 模式下无法进行简单的重启或启动/停止。
我有一个使用nginx和PHP的堆栈在Docker Swarm Cluster上运行.
在我的PHP应用程序中,我需要获取remote_addr($ _SERVER ['REMOTE_ADDR']),其中包含访问我的webapp的客户端主机的真实IP.
但问题是IP通过docker swarm集群通知了nginx.它显示了内部IP,如10.255.0.2,但真正的IP是来自客户端主机的外部IP(如192.168.101.151).
我怎么解决这个问题?
我的docker-compose文件:
version: '3'
services:
php:
image: php:5.6
volumes:
- /var/www/:/var/www/
- ./data/log/php:/var/log/php5
networks:
- backend
deploy:
replicas: 1
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- /var/www/:/var/www/
- ./data/log/nginx:/var/log/nginx
networks:
- backend
networks:
backend:
Run Code Online (Sandbox Code Playgroud)
我的default.conf(vhost.conf)文件:
server {
listen 80;
root /var/www;
index index.html index.htm index.php;
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log error;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
try_files $uri $uri/ /index.php;
} …Run Code Online (Sandbox Code Playgroud) 事情是这样的:我有一个堆栈,其中节点js后端将消息发送到队列,而perl worker(cron作业)使用该队列中的消息。我已经“ dockerized”了节点js后端,但是现在我正尝试对Perl Workers执行相同的操作。
但是,已经在docker化了Perl应用程序本身,因为队列的“作业”是基于crontab消耗的(即每2分钟),所以我的问题是:
从docker-compose文件构建堆栈时,实现此目标的最佳方法是什么?
让我知道是否需要提供更多详细信息。谢谢!
当前,我通过使用以下文件运行一个简单的Docker容器。
Docker文件
FROM microsoft/aspnet:4.7.1
WORKDIR /inetpub/wwwroot
EXPOSE 80
COPY index.html .
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml
version: '3.4'
services:
testapp:
image: mytestapp:${TAG:-latest}
build:
context: .
dockerfile: Dockerfile
Run Code Online (Sandbox Code Playgroud)
docker-compose.override.yml
version: '3.4'
services:
testapp:
ports:
- "9091:80"
Run Code Online (Sandbox Code Playgroud)
我使用Windows映像通过以下命令创建容器,并且可以通过http:// localhost:9091 /访问它。
docker-compose -f docker-compose.yml -f docker-compose.override.yml build
Run Code Online (Sandbox Code Playgroud)
我想使用HTTPS而非http访问我的应用程序。
我需要遵循哪些步骤?
我正在尝试从主机运行一个四节点群集,我的计算机是管理器,并将三个Hyper-V VM作为工作程序节点。我试图在所有节点hnsCall failed in Win32: An adapter was not found上将静态网页作为服务运行,但是始终在主机和No such image虚拟机上接收错误(尝试从私有注册表中提取服务映像)。在部署堆栈或使用时会发生这种情况service create。但是,我可以通过容器实例运行静态页面,并且可以正常工作。
我按照本指南设置和创建了我的VM,我怀疑这是我的问题所在。我通过HyperV虚拟交换机管理器创建的虚拟交换机(名为thevswitch)既在外部,又在正确的适配器上设置。我初始化用我的主机的IPv4下一个群thevswitch为--advertise-addr标志,并成功加入了虚拟机的工作节点到这个IP,同时使用驱动程序。无论如何,Docker似乎都看不到我创建的虚拟交换机。
PS C:\Docker\swarm-test> docker version
Client: Docker Engine - Community
Version: 18.09.2
API version: 1.39
Go version: go1.10.8
Git commit: 6247962
Built: Sun Feb 10 04:12:31 2019
OS/Arch: windows/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.2
API version: 1.39 (minimum version 1.24)
Go version: go1.10.6
Git commit: 6247962
Built: Sun …Run Code Online (Sandbox Code Playgroud) docker docker-swarm docker-machine docker-networking docker-for-windows
Docker 镜像可以指定它可以使用哪个操作系统吗?比如说一个使用 Windows 的映像,另一个使用 RHEL 的映像?这种情况下Docker将如何维护两个不同的操作系统呢?
我找不到关于 Docker sleep 命令的作用的明确解释,有人可以解释一下吗?例如:
docker container run -d alpine sleep 1d
Run Code Online (Sandbox Code Playgroud)
我在网上查了一下,但找不到简单的解释。
docker dockerfile docker-compose docker-swarm docker-machine
我有 9 个堆栈的生产 docker swarm,其中大多数都有卷。目前docker正在单节点运行。
我必须添加第二个节点,这是问题开始的地方。尤其是 portainer 的问题是——它变得非常滞后,几乎无法使用。此外,当我将一些容器移动到新节点时,我的项目似乎完全陷入困境 - 问题在于不同节点上的容器之间的通信。有些请求是可以的,但大多数请求似乎都被破坏了。
经过一番研究,我发现问题似乎出在 MTU 上。eth1的MTU是1450,docker默认是1500。
问题是,是否可以即时将 docker 的 MTU 更改为 1450?
我试过:
如何更改工作生产服务器上的 mtu?可能的停机时间为 10-15 分钟是可以的,但我不想删除所有堆栈并重新创建它们。