云网牛站
所在位置:首页 > Linux教程 > 构建Fedora容器映像的方法

构建Fedora容器映像的方法

2019-09-07 09:50:49作者:申仲稿源:云网牛站

随着容器和容器技术的兴起,现在所有主要的Linux发行版都提供了容器基础映像,本文介绍Fedora项目如何构建其基本映像,它还向你展示了如何使用它来创建分层图像。

构建Fedora容器映像的方法

 

基础和分层图像

在我们看看如何构建Fedora容器基础映像之前,让我们定义一个基本映像和一个分层映像,定义基本图像的简单方法是没有父图层的图像,但这具体意味着什么呢?这意味着基本映像通常只包含操作系统的根文件系统(rootfs),基本映像通常提供安装软件以创建分层映像所需的工具。

分层图像在基础映像的顶部添加了一组图层,以便安装、配置和运行应用程序,分层图像使用FROM指令在Dockerfile中引用基本图像:

FROM fedora:latest

 

如何构建基本映像

Fedora有一整套可用于构建容器映像的工具,这包括podman,它不需要以root用户身份运行,参考使用Podman运行Docker容器的方法

 

构建rootfs

基本图像主要包括tarball,这个tarball包含一个rootfs,有不同的方法来构建此rootfs, Fedora项目使用kickstart安装方法和imagefactory软件来创建这些tarball。

在创建Fedora基本映像期间使用的kickstart文件可以在Fedora的构建系统Koji中找到,Fedora-Container-Base软件包重新组合了所有基本映像构建,如果选择构建,则可以访问所有相关工件,包括kickstart文件,以下示例,文件末尾的%packages部分定义了要安装的所有软件包,这就是你在基本映像中使用软件的方法。

构建Fedora容器映像的方法

 

使用rootfs构建基本映像

一旦rootfs可用,构建基本映像很容易,它只需要一个具有以下指令的Dockerfile:

FROM scratch

ADD layer.tar /

CMD ["/bin/bash"]

这里的重要部分是FROM scratch指令,它创建一个空图像,然后,以下说明将rootfs添加到映像,并设置在运行映像时要执行的默认命令。

让我们使用Koji内置的Fedora rootfs构建一个基本映像:

$ curl -o fedora-rootfs.tar.xz https://kojipkgs.fedoraproject.org/packages/Fedora-Container-Base/Rawhide/20190902.n.0/images/Fedora-Container-Base-Rawhide-20190902.n.0.x86_64.tar.xz

$ tar -xJvf fedora-rootfs.tar.xz 51c14619f9dfd8bf109ab021b3113ac598aec88870219ff457ba07bc29f5e6a2/layer.tar 

$ mv 51c14619f9dfd8bf109ab021b3113ac598aec88870219ff457ba07bc29f5e6a2/layer.tar layer.tar

$ printf "FROM scratch\nADD layer.tar /\nCMD [\"/bin/bash\"]" > Dockerfile

$ podman build -t my-fedora .

$ podman run -it --rm my-fedora cat /etc/os-release

需要从下载的存档中提取包含rootfs的layer.tar文件,这只是需要,因为Fedora生成的图像已经准备好被容器运行时使用。

因此,使用Fedora生成的图像,获得基本图像会更容易,让我们看看它是如何工作的:

$ curl -O https://kojipkgs.fedoraproject.org/packages/Fedora-Container-Base/Rawhide/20190902.n.0/images/Fedora-Container-Base-Rawhide-20190902.n.0.x86_64.tar.xz

$ podman load --input Fedora-Container-Base-Rawhide-20190902.n.0.x86_64.tar.xz

$ podman run -it --rm localhost/fedora-container-base-rawhide-20190902.n.0.x86_64:latest cat /etc/os-release

 

构建分层图像

要构建使用Fedora基本映像的分层映像,只需在FROM行指令中指定fedora:

FROM fedora:latest

最新的标签引用了最新的Fedora版本(选写本文时是:Fedora 30),但是可以使用image标签获得其他版本,例如FROM fedora:31将使用Fedora 31基本映像。

注:Fedora支持构建和发布软件作为容器,这意味着你可以维护Dockerfile以使其他人可以使用你的软件。

 

相关主题

搜索/下载/构建自定义/删除Docker镜像,运行和删除Docker容器的方法

精选文章
热门文章