初始化集群模式:
root@ip-172-31-44-207:/home/ubuntu# docker swarm init --advertise-addr 172.31.44.207 Swarm initialized: current node (4mj61oxcc8ulbwd7zedxnz6ce) is now a manager. To add a worker to this swarm, run the following command:
加入第二个节点:
docker swarm join \ --token SWMTKN-1-4xvddif3wf8tpzcg23tem3zlncth8460srbm7qtyx5qk3ton55-6g05kuek1jhs170d8fub83vs5 \ 172.31.44.207:2377
要向此 swarm 添加管理器,请运行“docker swarm join-token manager”并按照说明进行操作。
# start 2 services
docker service create continuumio/miniconda3
docker service create --name redis redis:3.0.6
root@ip-172-31-44-207:/home/ubuntu# docker service ls
ID NAME REPLICAS IMAGE COMMAND
2yc1xjmita67 miniconda3 0/1 continuumio/miniconda3
c3ptcf2q9zv2 redis 1/1 redis:3.0.6
如上所示,redis 有其副本,而 miniconda 没有似乎复制。
我通常会登录 miniconda 容器来键入这些命令:
/opt/conda/bin/conda install jupyter -y --quiet && mkdir /opt/notebooks && /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --port=8888 --no-browser
问题是 docker exec -it XXX bash
命令不适用于 Swarm 模式。
最佳答案
您可以通过过滤容器名称来执行命令,而无需传递整个 swarm 容器哈希,只需通过服务名称即可。像这样:
docker exec $(docker ps -q -f name=servicename) ls
关于docker-swarm - 在 docker swarm 服务中执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39362363/