我是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运行命令的一部分?
或者,如何在不调用脚本的情况下启动容器,而是在正在运行的容器内手动运行脚本?
答案 0 :(得分:1)
这取决于你想对结果做些什么。
假设如下:
?paste
行告诉图像启动容器时应该执行的操作。那将是label_vector
。label_vector = paste( "(" , x, ", " , y , ", " , z , ")", sep = "")
内容将用作ENTRYPOINT
的参数。基本上你的码头工人正在按照它所做的去做。如果您希望它继续运行,您应该提供一个不会以PID 1
或CMD
退出的任务(如果ENTRYPOINT
不存在)。
要在ENTRYPOINT
模式下手动启动容器并查看会发生什么,您可以将其运行为:
CMD
然后你将进入一个贝壳"进入"容器,因此您可以手动运行脚本:
ENTRYPOINT