首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker创建从守护进程发出的错误响应:没有指定命令

docker创建从守护进程发出的错误响应:没有指定命令
EN

Stack Overflow用户
提问于 2019-08-03 20:19:48
回答 1查看 5.3K关注 0票数 0

附在那是我的Dockerfile。我打算使用以下命令:

代码语言:javascript
复制
docker build -t fbprophet . && \
docker create --name=awslambda fbprophet && \
docker cp awslambda:/var/task/venv/lib/python3.7/site-packages/lambdatest.zip . \
docker rm awslambda

但是,我总是在这里收到这个错误:

来自守护进程的错误响应:未指定命令

在这里运行这些命令时,它可以工作。我必须在不同的shell中运行它,这样在完成导出之前容器就不会停止运行。

代码语言:javascript
复制
docker build -t fbprophet . && docker container rm awslambda && docker run -it --name=awslambda fbprophet bash
docker cp awslambda:/var/task/venv/lib/python3.7/site-packages/lambdatest.zip .

Dockerfile:

代码语言:javascript
复制
FROM lambci/lambda:build-python3.7

ENV VIRTUAL_ENV=/venv
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"

COPY requirements.txt .
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

WORKDIR /var/task/venv/lib/python3.7/site-packages

COPY lambda_function.py .
COPY .lambdaignore .

RUN echo "Package size: $(du -sh | cut -f1)"

RUN zip -9qr lambdatest.zip *
RUN cat .lambdaignore | xargs zip -9qr /var/task/lambdatest.zip * -x
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-03 21:13:09

从您构建的映像中获取文件的最简单方法可能是将卷挂载到容器上,并使主容器进程成为cp命令:

代码语言:javascript
复制
docker run \
  --rm \
  -v $PWD:/export \
  fbprophet \
  cp lambdatest.zip /export

(如果您已经构建了一个使用ENTRYPOINT ["python"]之类的应用程序,则需要在图像名称之前指定--entrypoint /bin/cp,然后将参数放在图像名称之后。使用CMD可以避免这种复杂的情况。)

通常,Docker映像有一个打包的应用程序(或者一个合理的基础应用程序可以在其上构建应用程序),而运行容器实际上运行了该应用程序。图像是传递文件的一种不方便的方式。您可能会发现在您的主机上运行同一组命令在Docker之外创建虚拟环境是更容易和更安全的,并且您可以在完成之后直接将文件从其中cp出来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57341815

复制
相关文章

相似问题

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