Docker mount无法正常工作...我在这里想念什么?

时间:2018-09-24 02:00:03

标签: containers devops

我的Dockerfile如下所示;

FROM python:2.7
COPY . /temp
WORKDIR /temp
CMD ["python", "app.py", "100"]

我的Python文件如下:

import sys
print "This is the name of the script: ", sys.argv[0]
print "Number of arguments: ", len(sys.argv)
print "The arguments are: " , str(sys.argv)
file = open("log.log", "a")

x = int(sys.argv[1])
print "received value of x is: ", x

if x < 100:
    file.write('entered value is less than 100: Exiting with exit code 0; SUCEESS')
elif x == 100:
    file.write('entered value is equal to 100: Exiting with exit code 1; SUCEESS')
else:
    file.write('entered value is more than 100: Exiting with exit code 2; FAILED')

我构建此容器的方式如下: docker build python-container .

我运行容器的方式如下: docker run -v ~/logs/:app python-container

我想要的是将容器目录挂载到主机中,以便在其中生成登录名,以便在主机计算机上可以使用python生成的日志文件。

但是不幸的是,这没有发生

我完成的调试:

  1. 我最初在ENTRYPOINT中使用python,但似乎ENTRYPOINT中的命令已压缩并捆绑在容器中,然后安装了容器,因此失败了。

  2. 我使用ENTRYPOINT ["tail", "-f", "/dev/null"]使容器永远运行,但仍然失败。

  3. 我还使用了卷宗卷,创建了卷,装入了卷,然后运行了容器,但仍然无法从外部获得日志。

我的问题是我想念什么?

最终,我的目标是让不同的容器运行不同的python作业,并在主机的特定目录中生成不同的日志文件...

在此方面的任何帮助,我将非常感谢...

1 个答案:

答案 0 :(得分:0)

COPY命令不是您想要的,它只是将目录复制到容器中。

您要查找的是挂载卷。

https://docs.docker.com/storage/volumes/

在下面编辑评论:

只需尝试:

在主机上:

mkdir /tmp/stack_demo touch /tmp/stack_demo/log.txt docker run -ti -v /tmp/stack_demo:/tmp/stack_demo alpine:latest /bin/sh

在容器中 echo "log from inside container" > /tmp/stack_demo/log.txt

使用ctrl + D退出容器,然后在主机上:

cat /tmp/stack_demo/log.txt => log from inside container