如何阅读/理解 docker-compose.yml 以及“stdin_open: true tty: true”组件的作用?

sel*_*rch 4 yaml docker-compose

参加涉及这些问题的课程;实际细节与课程无关,但我通常有兴趣尝试理解事物。

我有一个 docker-compose.yml 文件,我可以“调用”或“启动”该文件。该文件包含以下信息:

services:
  redis:
    image: redis:latest
    expose:
      - "6379"

  sample0395:
    image: sample0395/base:latest
    stdin_open: true
    tty: true
    expose:
      - "8888"
    ports:
      - "8888:8888"
Run Code Online (Sandbox Code Playgroud)

据我了解,仅基于如图所示的层次结构:

  • redis 和sample0395 是“服务”
  • redis:latest 和 sample0395/base:latest 是 image_name:tag 组合
  • 暴露和端口:列出端口(不确定有什么区别或这两者之间的区别的意义是什么)
  • 我不知道 stdin_open 或 tty 做什么,并且似乎无法通过谷歌获得理解。

jmt*_*b28 10

tty和分别stdin_open类似于命令的-t和参数。-idocker run

stdin_open当您需要在 Docker 容器之外处理项目时可以使用。

tty当您需要在 Docker 容器内处理项目时可以使用。

要测试这一点,请尝试使用docker-compose up其中一个ttystdin_open但不是同时运行,您会发现使用 时stdin_open您不会登录到容器的终端,而使用 时会发生相反的情况tty

至于您关于expose和之间的区别的问题,可以在这里ports找到答案。

  • 这有帮助。您能否分享一下在容器外部与容器内部处理项目的示例? (3认同)