And*_*Jay 9 docker docker-swarm
我无法连接到在群上运行的容器.似乎以下不起作用:
docker exec -it <container_ID> bash
Run Code Online (Sandbox Code Playgroud)
这是一些输出:
>$ 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
Run Code Online (Sandbox Code Playgroud)
然后我会跑:
$ docker exec -it 2jk3s2xs7ce62piunbkiptypz bash
Run Code Online (Sandbox Code Playgroud)
要么
$ docker exec -it login.1 bash
Run Code Online (Sandbox Code Playgroud)
并看到以下错误
来自守护程序的错误响应:没有这样的容器:2jk3s2xs7ce62piunbkiptypz
来自守护程序的错误响应:没有这样的容器:login.1
Sam*_*ers 12
使用docker ps找到你可以使用的名称.看看下面这两个CONTAINER ID和NAMES,要么将工作.
>$ 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:/#
Run Code Online (Sandbox Code Playgroud)
长名称是形式 $SERVICE_NAME.$REPLICA_NUMBER.$ID_FROM_SERVICE_PS
>$ docker exec -it login.1.cg7fltcu3wfe7ixtnqzg8myy1 bash
root@e53bff8bebfc:/#
Run Code Online (Sandbox Code Playgroud)
相当老的问题,但这里只有我的两分钱:我经常运行:
docker exec -it $(docker ps -q -f name="login*") sh
-q只返回容器 id
-f name="login*"应用基于容器名称的过滤器,使用正则表达式
这很方便,因为启动一个新容器会随机更改容器名称其中的字符。重要的是您的过滤器只返回 1 个容器,因此以只有 1 个结果的方式指定名称。例如:如果您有一个容器“monster”和一个容器“monitor”,则需要-f name="moni*"排除“monster”容器。
该命令将导致类似:docker exec -it login.1.cg7fltcu3wfe7ixtnqzg8myy1 sh
| 归档时间: |
|
| 查看次数: |
7231 次 |
| 最近记录: |