繁体   English   中英

在容器内运行Docker脚本应用程序

[英]Running Docker script application inside a container

我是Docker和容器的新手-我有一个Python 3脚本,该脚本根据命令行参数从网站中提取数据并打印结果。 如果没有可用的网络连接,它将使用Redis缓存数据。 我拥有的Dockerfile看起来像这样

FROM ubuntu:latest
RUN apt-get update -y && apt-get -y install redis-server && apt-get install -y python3-pip python3.5-dev build-essential
COPY . /app
WORKDIR /app
RUN pip3 install -r requirements.txt
ENTRYPOINT ["python3"]
CMD ["pn.py"]

我能够构建图像,但是当我启动容器时,它大概运行了Python命令来在容器内运行脚本并退出,因此,我无法从主机看到结果。

该脚本需要命令行输入,否则将失败。 如何将它们指定为我可以用来从主机运行脚本的单个Docker运行命令的一部分?

或者,如何在不调用脚本的情况下启动容器,而是在正在运行的容器中手动运行脚本?

这取决于您要如何处理结果。

假设以下内容:

  • ENTRYPOINT行告诉图像启动容器时应执行的操作。 那将是PID 1
  • 当该行存在时, CMD内容用作ENTRYPOINT
  • docker容器始终在其主要任务(PID 1)退出时退出。

基本上,您的码头工人正在执行被告知要做的事情。 如果希望它继续运行,则应给出不会以ENTRYPOINTCMD退出的任务(如果不存在ENTRYPOINT )。

要以shell模式手动启动容器并查看会发生什么,可以按以下方式运行它:

docker run -ti [OPTIONS] [CONTAINER_NAME] bash

然后您将进入一个“进入”容器的外壳程序中,因此可以手动运行脚本:

#~ python3 pn.py

暂无
暂无

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

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