在容器

时间:2017-01-26 16:06:48

标签: python docker redis

我是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命令来运行容器内的脚本并退出,并且作为一个序列,我无法看到来自主机的结果。 / p>

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

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

1 个答案:

答案 0 :(得分:1)

这取决于你想对结果做些什么。

假设如下:

  • ?paste行告诉图像启动容器时应该执行的操作。那将是label_vector
  • 当该行存在时,label_vector = paste( "(" , x, ", " , y , ", " , z , ")", sep = "") 内容将用作ENTRYPOINT的参数。
  • docker containers在其主要任务(PID 1)退出时始终退出。

基本上你的码头工人正在按照它所做的去做。如果您希望它继续运行,您应该提供一个不会以PID 1CMD退出的任务(如果ENTRYPOINT不存在)。

要在ENTRYPOINT模式下手动启动容器并查看会发生什么,您可以将其运行为:

CMD

然后你将进入一个贝壳"进入"容器,因此您可以手动运行脚本:

ENTRYPOINT