在容器中运行Docker脚本应用程序
我是新来的Docker和容器 – 我有一个Python 3脚本,基于命令行参数从网站中提取数据并打印结果。 如果没有可用的networking连接,它使用Redis来caching数据。 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"]
我能够构build图像,但是当我启动容器时,它大概会运行Python命令来在容器中运行脚本并退出,并且作为结果,我看不到主机的结果。
该脚本需要命令行input,否则将失败。 如何将这些指定为可用于从主机运行脚本的单个Docker运行命令的一部分?
或者,我怎样才能启动容器,而无需调用脚本,而是在运行容器内手动运行脚本?
这取决于你想对结果做什么。
假设如下:
-
ENTRYPOINT
行会告诉图像启动容器时应执行的操作。 这将是PID 1
。 - 当该行存在时,
CMD
内容被用作ENTRYPOINT
。 - 泊坞窗容器总是退出时,他们的主要任务(PID 1)退出。
基本上你的docker正在做它被告知要做的事情。 如果你希望它继续运行,你应该给一个不会以ENTRYPOINT
或者CMD
ENTRYPOINT
的任务(如果ENTRYPOINT
不存在)。
要在shell
模式下手动启动容器并查看发生了什么,可以按如下方式运行它:
docker run -ti [OPTIONS] [CONTAINER_NAME] bash
然后你将在shell中“进入”容器,所以你可以手动运行脚本:
#~ python3 pn.py