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