简体   繁体   English

Docker 容器在启动后立即关闭

[英]Docker container closes immediately after start

I want to setup learning development container for VSCode on my Windows 10 machine, but when I press "Open Folder in a Container" in VSCode I get an error:我想在我的 Windows 10 机器上为 VSCode 设置学习开发容器,但是当我在 VSCode 中按“打开容器中的文件夹”时,出现错误:

[2020-11-24T10:21:22.963Z] [PID 8208] 
[2020-11-24T10:21:23.070Z] [PID 8208] [8794 ms] Start: Run: docker ps -q -a --filter label=com.docker.compose.project=lecture2 --filter label=com.docker.compose.service=development
[2020-11-24T10:21:23.762Z] [PID 8208] [9486 ms] Start: Run: docker inspect --type container 03d485c0d0b0
[2020-11-24T10:21:24.630Z] [PID 8208] [10354 ms] Start: Inspecting container
[2020-11-24T10:21:24.631Z] [PID 8208] [10355 ms] Start: Run: docker inspect --type container 03d485c0d0b08ae5af7bc81124f9205d933ce77441829cfcf176a6dd767ab291
[2020-11-24T10:21:25.656Z] [PID 8208] [11380 ms] Start: Run: docker exec -i -u root -e VSCODE_REMOTE_CONTAINERS_SESSION=663b838f-c06e-4178-ae10-5f48efb218811606213272822 03d485c0d0b08ae5af7bc81124f9205d933ce77441829cfcf176a6dd767ab291 /bin/sh
[2020-11-24T10:21:25.678Z] [PID 8208] [11402 ms] Start: Run in container: uname -m
[2020-11-24T10:21:26.558Z] [PID 8208] [12282 ms] Start: Run in container: cat /etc/passwd
[2020-11-24T10:21:26.558Z] [PID 8208] [12282 ms] Stdin closed!
[2020-11-24T10:21:26.570Z] [PID 8208] [12294 ms] Shell server terminated (code: 1, signal: null)

Error response from daemon: Container 03d485c0d0b08ae5af7bc81124f9205d933ce77441829cfcf176a6dd767ab291 is not running

And if I just issue command:如果我只是发出命令:

docker-compose up

The container is started and stopped immediately without any errors in console.容器立即启动和停止,控制台中没有任何错误。

My setting is like this: Dockerfile:我的设置是这样的:Dockerfile:

FROM erlang:latest

WORKDIR /project

CMD tail -f /dev/null

docker-compose.yml: docker-compose.yml:

version: '3'
services:
  development:
    build:
      context: .
    volumes:
      - ./:/project
      - build:/project/_build
      - deps:/project/deps

volumes:
  build:
  deps:

.devcontainer/devcontainer.json: .devcontainer/devcontainer.json:

{
    "name": "Erlang dev container",

    "service": "development",
  
    "context": "..",

    "dockerComposeFile": "..\\docker-compose.yml",

    "workspaceFolder": "/project",

    "settings": { 
        "terminal.integrated.shell.linux": "/bin/bash"
    },

    "extensions": []  
}

Why doesn't it work?为什么不起作用?

PS.附注。 I even changed my Dockerfile like this:我什至像这样更改了我的 Dockerfile:

FROM erlang:latest

WORKDIR /project

COPY . .

And my docker-compose.yml to this:我的 docker-compose.yml 是这样的:

version: '3'
services:
  development:
    build:
      context: .

And it still doesn't work.它仍然不起作用。

PS PS. PS PS。 But!但! When after that I changed in devcontainer.json line:之后我在 devcontainer.json 行中更改:

"dockerComposeFile": "..\\docker-compose.yml",

to:到:

"dockerFile": "..\\Dockerfile",

Only then my folder was opened in the container by VSCode.直到那时我的文件夹才被 VSCode 在容器中打开。 But I don't want to COPY .但我不想 COPY 。 . . inside my Dockerfile, I want to add my project's folder as a volume in my docker-compose.yml file.在我的 Dockerfile 中,我想将我的项目文件夹作为一个卷添加到我的 docker-compose.yml 文件中。 How do I manage this?我该如何管理?

I solved my problem by adding tty:true to my docker-compose service definition, like this:我通过将 tty:true 添加到我的 docker-compose 服务定义中解决了我的问题,如下所示:

version: '3'
services:
  development:
    build:
      context: .
    tty: true
    volumes: 
      - ./:/project

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM