【问题标题】:Shell into swarm container将壳放入 swarm 容器中
【发布时间】:2016-10-10 21:03:52
【问题描述】:

我无法连接到在 swarm 上运行的容器。似乎以下不起作用:

docker exec -it <container_ID> bash

这是一些输出:

>$ docker service ls
ID            NAME          REPLICAS  IMAGE                              COMMAND
4rliefwe74o5  login         1/1       login-arm64:1.0


>$ docker service ps login
ID                         NAME     IMAGE                       NODE               DESIRED STATE  CURRENT STATE          ERROR
2jk3s2xs7ce62piunbkiptypz  login.1  login-arm64:1.0  odroid64-cluster4  Running        Running 5 minutes ago

那我就跑:

$ docker exec -it 2jk3s2xs7ce62piunbkiptypz bash

$ docker exec -it login.1 bash

并查看以下错误

来自守护程序的错误响应:没有这样的容器:2jk3s2xs7ce62piunbkiptypz

来自守护进程的错误响应:没有这样的容器:login.1

【问题讨论】:

  • 发布错误信息,我猜是bash 而不是bash"
  • 更新了原帖。基本上,docker 是看不到这些容器的

标签: docker docker-swarm


【解决方案1】:

使用docker ps 查找您可以使用的名称。查看CONTAINER IDNAMES 下的任何一个都可以。

>$ docker ps
CONTAINER ID        IMAGE             COMMAND                  CREATED             STATUS              PORTS               NAMES
e53bff8bebfc        login-arm64:1.0   "/bin/sh -c 'node ser"   27 seconds ago      Up 25 seconds                           login.1.cg7fltcu3wfe7ixtnqzg8myy1

>$ docker exec -it e53bff8bebfc bash
root@e53bff8bebfc:/#

长名称的格式为$SERVICE_NAME.$REPLICA_NUMBER.$ID_FROM_SERVICE_PS

>$ docker exec -it login.1.cg7fltcu3wfe7ixtnqzg8myy1 bash
root@e53bff8bebfc:/#

【讨论】:

  • 就我而言,长名称不起作用,但“容器 ID”确实起作用。
  • 这对除了我之外的所有人来说可能都很明显,但是,如果有人以同样的方式被愚弄,docker ps 必须在群 worker 节点上运行,否则在主 docker ps 上对我来说一无所获,因为没有正在运行的容器。
【解决方案2】:

一个相当老的问题,但这里只是我的两分钱:我经常运行:

docker exec -it $(docker ps -q -f name="login*") sh

-q 只返回容器 id

@ 987654323@ 使用正则表达式根据容器名称应用过滤器

这很方便,因为启动一个新容器会更改容器名称,其中包含一些随机字符。重要的是您的过滤器只返回 1 个容器,因此请以只有 1 个结果的方式指定名称。例如:如果您有一个容器“monster”和一个容器“monster”,则需要-f name="moni*" 排除“monster”容器。

该命令将导致类似:

docker exec -it login.1.cg7fltcu3wfe7ixtnqzg8myy1 sh

【讨论】:

  • * 真的有用吗?我得到容器 ID 而不使用它。
  • 也许 docker 二进制文件在基于正则表达式进行过滤时会做一些聪明的事情,我不知道。这正是我使用它的方式:)。
猜你喜欢
  • 2019-04-09
  • 1970-01-01
  • 1970-01-01
  • 2012-08-02
  • 1970-01-01
  • 2015-07-22
  • 2020-06-25
  • 1970-01-01
相关资源
最近更新 更多