【问题标题】:Docker container stops after create commandDocker 容器在创建命令后停止
【发布时间】:2020-03-15 09:08:03
【问题描述】:

我正在尝试创建一个 shell 脚本来构建映像,然后运行容器并执行我传递给它的命令,例如 npm install 等。

我现在有

#!/bin/bash

docker container create -it --name testt <image_name>
docker container start testt
winpty docker container exec -it testt bash


read -rsp $'Press any key to continue...\n' -n1 key

第一个创建命令执行了,但是当我尝试启动它时,它说容器没有运行。

编辑以添加 Dockerfile:

FROM node:8.16.2-alpine 

RUN apk add --no-cache --upgrade bash

WORKDIR /home/build

COPY . .

【问题讨论】:

  • 如果您只是要跳入 bash shell,是否需要运行它?如果确实需要它运行,那么 Dockerfile 中的 CMDENTRYPOINT 是什么?它能让你的容器保持活力吗?如果您在此处解释您要做什么,也许会有所帮助。
  • 我不需要让它运行,但我确实需要按顺序运行几个命令,安装文件,从中删除某个文件夹,然后 tar.gz 将其压缩并 SFTP它。我目前没有 CMD 或入口点,据我了解,我可以运行这些命令来创建容器并对其运行命令。
  • 如果您在要运行的每个命令前加上 RUN 一词,您就描述了一个 Dockerfile,这是构建预安装软件的映像的标准方法。使用docker exec 在容器中安装软件并不是最佳做法:容器会被极其频繁地删除,您的所有工作都会丢失。

标签: bash shell docker dockerfile sh


【解决方案1】:

如果你想运行你的镜像,你需要使用 docker run 而不是 docker start

docker run -d -it <image name>

一旦你退出容器,-d 会让它在后台运行

编辑 从终端尝试使用以下代码构建图像 sn-p

docker build -t <imageName>:<tag>

然后尝试使用

运行图像
docker run -d -it <imageName>:<tag>

下一次运行

docker ps -a

检查容器是否仍在运行

如果它还在运行,像这样进入容器

docker exec -it <container name> /bin/bash

【讨论】:

  • 这个我也试过了,结果还是一样,“容器没有运行。”所以我不确定发生了什么。
  • FROM node:8.16.2-alpine RUN apk add --no-cache --upgrade bash WORKDIR /home/build COPY . . 抱歉,不知道如何正确格式化评论。
  • 您是否尝试过按照我上面的建议而不是从 bash 脚本运行图像?
  • 是的,它会运行它,但它会立即退出容器并且不再运行。
  • 你能不能做一个 docker ps -a 并获取容器 ID,然后运行 ​​docker logs 确保容器正常启动和运行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-29
  • 2021-03-06
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
  • 1970-01-01
  • 2015-02-07
相关资源
最近更新 更多