Docker-我们需要在Dockerfile中包含RUN命令

我有一个Python代码,并将其转换为泊坞窗图像,我可以使用下面的命令:

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命令安装所需的软件包。 比方说,如果我们删除了图像出于某种原因,并希望再次构build它,那么有什么办法可以跳过这个RUN步骤来节省一些时间,因为我认为这已经安装了。

另外在我的代码中,我正在使用其他目录中的文件user.conf 。 所以为此,我将其包含在DOckerfile中,并将其保存在当前目录中。 在docker中有没有一种方法可以定义我的工作目录,以便docker imagesearch这些目录中的文件。

谢谢

是的,如果要在删除后再次构build泊坞窗图像,则无法删除dockerfile中的RUN或其他语句。

你在你的dockerfile中使用WORKDIR命令,但是它的作用域将在docker镜像中,也就是说当你从镜像创build容器时,workdir将被设置为WORKDIR

例如:

 WORKDIR /srv/config/conf.d/ 

这个/srv/config/conf.d/将被设置为workingdir,但是你必须在dockerfile中使用下面的命令,而按顺序构build在指定位置复制该文件

 ADD user.conf /srv/config/conf.d/ 

回答你的第一个问题:docker镜像包含了与你的python环境相关的所有东西,包括你安装的软件包。 当你删除图像时,包也从图像中删除。 所以,不,你不能跳过这一步。

现在回到第二个问题,您可以在启动容器时通过以下方式绑定一个direectory:

 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/