我有一个python代码并将其转换为docker image,我可以使用下面的命令:
sudo docker build -t customdocker .
这会将python代码转换为docker镜像。要转换它,我使用带有以下命令的Dockerfile:
FROM python:3
ADD my_script.py /
ADD user.conf /srv/config/conf.d/
RUN pip3 install <some-package>
CMD [ "python3", "./my_script.py" ]
在此,我们有RUN
命令安装所需的包。让我们说如果我们因某种原因删除了图像并想再次构建它,那么我们是否可以跳过这个RUN
步骤以节省一些时间,因为我认为这已经安装了。
同样在我的代码中,我使用的是其他目录中的文件user.conf
。因此,我将其包含在DOckerfile中,并将其副本保存在当前目录中。在docker中是否有一种方法可以定义我的工作目录,以便docker镜像搜索这些目录中的文件。
由于
答案 0 :(得分:1)
是的,如果要在删除后再次构建docker镜像,则无法删除dockerfile中的RUN或其他语句。
您在dockerfile中使用命令WORKDIR,但其范围将在docker镜像中,即当您从图像workdir创建容器时,将设置为WORKDIR中提到的容器
例如:
WORKDIR /srv/config/conf.d/
此/srv/config/conf.d/将设置为workingdir,但您必须在dockerfile中使用以下内容,同时按顺序构建以在指定位置复制该文件
ADD user.conf /srv/config/conf.d/
答案 1 :(得分:1)
回答您的第一个问题:docker镜像包含与您的python环境相关的所有内容,包括您安装的软件包。删除图像后,也会从图像中删除包。因此,不能不跳过这一步。
现在回到第二个问题,您可以在启动容器时绑定一个指令:
docker run -v /directory-you-want-to-mount:/src/config/ customdocker
您还可以使用-w
标志设置工作目录。
docker run -w /path/to/dir/ -i -t customdocker
https://docs.docker.com/v1.10/engine/reference/commandline/run/