docker-compose run和exec:找不到容器

Jua*_*blo 4 docker-compose

我试图用docker-compose在docker上打开第二个终端。

首先使用

docker-compose run my-centos bash
Run Code Online (Sandbox Code Playgroud)

当我尝试打开第二个终端时

docker-compose exec my-centos bash
Run Code Online (Sandbox Code Playgroud)

我收到消息

ERROR:No container found for my_centos_1
Run Code Online (Sandbox Code Playgroud)

如果我搜索正在运行的容器的名称,则会得到

CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS                    PORTS                    NAMES
34a95b44f0a2        centos6   "bash"                   9 minutes ago       Up 9 minutes                                       docker_my-centos_run_1
Run Code Online (Sandbox Code Playgroud)

为什么docker-compose exec search docker_my_centos_1而不是docker_my-centos_run_1

Vin*_*o97 7

docker-compose旨在运行多容器应用程序,并应与一起使用docker-compose up。使用时docker-compose run,您会创建一个并非真正适合正常使用的特殊容器。

由于docker-compose只是docker的包装,因此您仍然可以通过常规docker命令访问此“ specia”容器:

docker exec docker_my-centos_run_1 bash

否则,建议您从开始使用容器docker-compose up。这样就可以以指定的方式运行第二个bash:

docker-compose exec my-centos bash

注意:我不知道您是否可以直接用附加一个TTY docker-compose up,因此您可能需要额外运行docker-compose exec my-centos bash才能获得两个TTY。