Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以Ubuntu为基础在Dockerfile中配置git_Git_Docker_Ubuntu_Dockerfile - Fatal编程技术网

以Ubuntu为基础在Dockerfile中配置git

以Ubuntu为基础在Dockerfile中配置git,git,docker,ubuntu,dockerfile,Git,Docker,Ubuntu,Dockerfile,我知道Ubuntu的官方图像没有内置git。因此,我以Ubuntu为基础创建了一个Dockerfile,然后构建了一个新图像,如下所示: # Base image is Ubuntu 18.04 FROM ubuntu:18.04 # Update software repository RUN apt-get update # Install git, then remove cache RUN apt-get install -y git 但我不认为这是一种可持续的方式,因为Docke

我知道Ubuntu的官方图像没有内置git。因此,我以Ubuntu为基础创建了一个Dockerfile,然后构建了一个新图像,如下所示:

# Base image is Ubuntu 18.04
FROM ubuntu:18.04

# Update software repository
RUN apt-get update

# Install git, then remove cache
RUN apt-get install -y git

但我不认为这是一种可持续的方式,因为Dockerfile最终会变得更大。同时,它也是非常缓慢和手动的。我想知道是否有一些方法可以在一个基本的Ubuntu Docker映像中更快地安装git或其他必要的软件包。谢谢!

现在有一种最简单的方法可以将包安装到容器映像中。另一种方法是从源代码构建包,这需要更多的手动配置

还有其他可以从注册表中免费获取的映像,例如,其中可能包含您已经想要的包。然后,您所需要做的就是提取图像并开始使用它

关于构建速度,请记住特定的构建说明,即Dockerfile中图像的每一行通常仅在以下情况下运行:

这是指令第一次运行。 构建说明中的某些内容发生了更改,例如,您向列表中添加了一个新包 构建过程使用-no cache标志运行,该标志始终从头构建整个映像。
因此,一旦构建了一次映像,Dockerfile中未更改的任何行都不会再次执行。构建过程从最后一条未更改的构建指令开始

docker中的build命令是否相对独立,即使它们是按顺序写入到单个文件中?是的-运行docker build而不使用-no cache标志实际上为Dockerfile中的每个构建指令行构建一个中间容器映像。下一条指令基于上一个中间映像构建另一个中间映像。检查命令的输出-您应该看到它执行的Dockerfile的每一行的图像哈希值…alpine提供了一个图像。我可以在一个Dockerfile中使用两个基本图像吗?但是,我不明白为什么在这种情况下会这样做。如果您的需求是拥有git,那么基本映像实际上并不重要。而且,alpine比ubuntu小。