【发布时间】:2019-08-09 01:25:48
【问题描述】:
我是 Docker 的新手,所以我需要你的建议。
我尝试在 docker 容器下移动我当前基于 Jboss AS 的 java 应用程序系统。我有不同的主机,有 1、2 或 3 个 jboss。我已经将此系统配置为在群模式下作为堆栈运行,其中每个 jboss 都是单独的服务。我使用具有全局模式的主机网络。我也使用 docker-compose 文件来描述所有系统。
我需要 - 停止特定服务的能力。我可以使用“docker service rm”命令停止服务,但它会完全从堆栈中删除该服务。如果我停止了一些服务,然后我只想从这些服务中启动一个,我找不到任何命令来执行此操作。 有没有使用 docker swarm 的解决方案?或者我需要看一下 Kubernetes?
在一般情况下,我希望通过单点来配置和控制我的系统。
下面是我的 docker-compose 文件示例。
version: '3.5'
x-common-deploy-config:
&common-deploy-config
mode: global
restart_policy:
condition: on-failure
x-default-jboss:
&default-jboss
image: some-image
networks:
hostnet: {}
command: ["./scripts/run.sh"]
x-jboss-c1:
&jboss-c1
<< : *default-jboss
volumes:
- "/data/jboss-docker-test/logs/c1:/data/jboss/server/log"
environment:
- JBOSS_PORT_OFFSET=ports-01
- JBOSS_SERVER_NUMBER=1
x-jboss-c2:
&jboss-c2
<< : *default-jboss
volumes:
- "/data/jboss-docker-test/logs/c2:/data/jboss/server/log"
environment:
- JBOSS_PORT_OFFSET=ports-02
- JBOSS_SERVER_NUMBER=2
services:
jboss-28-c1:
<< : *jboss-c1
env_file: host_1.28.env
deploy:
<< : *common-deploy-config
placement:
constraints:
- node.labels.hostaddress == 192.168.1.28
jboss-28-c2:
<< : *jboss-c2
env_file: host_1.28.env
deploy:
<< : *common-deploy-config
placement:
constraints:
- node.labels.hostaddress == 192.168.1.28
command: ["./scripts/run.sh", "1"]
networks:
hostnet:
external: true
name: host
【问题讨论】:
-
删除服务有什么问题?我不是 Swarm 专家,但我可以肯定地说 Kubernetes 并不真正支持将“停止但留在原地”作为常见操作。
-
删除服务适合我,但我无法通过我的 docker-compose 文件启动特定的已删除服务,只能启动所有已删除的服务。有时我需要手动控制某些服务的生命周期。
标签: java docker jboss kubernetes docker-swarm