docker-swarm - 在 docker swarm 服务中执行命令

标签 docker-swarm

  1. 初始化集群模式:

    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:
    
  2. 加入第二个节点:

    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/

相关文章:

docker - 为什么要为 docker swarm 集群中的节点选择工作角色?

docker - 修改docker容器内的sysctl参数

Docker swam 模式 - --advertise-addr 和 --listen-addr 之间有什么区别?

docker - Docker Compose和本地缓存的镜像

mysql - docker swarm集群之间MySQL数据库的复制

docker - 保存并稍后还原Docker堆栈状态

docker - docker stack deploy不使用创建的覆盖网络

Docker swarm加入linux容器错误-远程CA与指纹不匹配

docker - 按需启动容器

Docker 群 : a node is not joining the ingress network