首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Docker Compose的交互式shell

使用Docker Compose的交互式shell
EN

Stack Overflow用户
提问于 2016-03-28 00:25:58
回答 11查看 337.5K关注 0票数 416

有没有办法只使用Docker Compose在容器中启动交互式shell?我在我的docker-compose.yml中尝试过这样的东西:

代码语言:javascript
复制
myapp:
  image: alpine:latest
  entrypoint: /bin/sh

当我使用docker-compose up启动这个容器时,它会立即退出。有没有什么标志可以添加到entrypoint命令中,或者作为myapp的附加选项来启动交互式shell?

我知道有一些本地docker命令选项可以实现这一点,只是好奇是否也可以只使用Docker Compose。

EN

回答 11

Stack Overflow用户

发布于 2016-08-26 00:09:21

您需要在docker-compose.yml中包含以下行:

代码语言:javascript
复制
version: "3"
services:
  app:
    image: app:1.2.3
    stdin_open: true # docker run -i
    tty: true        # docker run -t

第一个对应于docker run中的-i,第二个对应于-t

票数 548
EN

Stack Overflow用户

发布于 2016-03-28 23:54:47

使用docker-compose获得交互式shell的规范方法是:

代码语言:javascript
复制
docker-compose run --rm myapp

你可以设置stdin_open: true, tty: true,但是这实际上不会给你一个合适的up外壳,因为日志是从所有容器中流出的。

您还可以使用

代码语言:javascript
复制
docker exec -ti <container name> /bin/bash

获取正在运行的容器上的shell。

票数 322
EN

Stack Overflow用户

发布于 2017-11-15 06:06:27

在具有以下docker-compose.yml的官方入门示例(https://docs.docker.com/compose/gettingstarted/)中

代码语言:javascript
复制
version: '3'
services:
  web:
    build: .
    ports:
     - "5000:5000"
  redis:
    image: "redis:alpine"

在开始使用docker-compose up之后,您可以使用以下命令轻松地外壳到redis容器或web容器中:

代码语言:javascript
复制
docker-compose exec redis sh
docker-compose exec web sh 
票数 91
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36249744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档