如何以非 root 用户身份从头开始构建容器映像?

埃里克·斯约兰德

使用buildah,我正在尝试构建一个容器映像,该映像只应包含程序cowsay及其依赖项。我在没有 root 权限Fedora 29计算机上执行此操作。而不是使用 Dockerfile 和命令buildah build-using-dockerfile(又名buildah bud)我想

  1. 创建一个空容器。
  2. 挂载其文件系统。
  3. 使用/usr/bin/dnf我的主机系统上直接安装包到文件系统的挂载点下。
  4. 从文件系统创建容器映像。

该命令buildah from scratch创建了一个空容器,但是当我尝试挂载文件系统时出现错误

[testuser@linux ~]$ container=$(buildah from scratch)
[testuser@linux ~]$ mnt=$(buildah mount $container)
cannot mount using driver overlay in rootless mode
ERRO[0000] exit status 1                                
[testuser@linux ~]$ 

更多信息

[testuser@linux ~]$ cat /etc/redhat-release 
Fedora release 29 (Twenty Nine)
[testuser@linux ~]$ buildah --version
buildah version 1.6 (image-spec 1.0.0, runtime-spec 1.0.0)
[testuser@linux ~]$ 

出了什么问题?如何以非 root 用户身份从头开始构建容器映像?

埃里克·斯约兰德

短篇故事

buildah unshare需要创建一个非共享环境。这是缺失的,导致错误消息无法在无根模式下使用驱动程序覆盖挂载

要构建容器映像,请使用此内容创建文件build.sh

container=$(buildah from scratch)                                                                                                                                                                       
mnt=$(buildah mount $container)                                                                                                                                                                         
LC_ALL=C dnf install --installroot $mnt --release 29 --setopt=install_weak_deps=False -q -y cowsay                                                                                                      
LC_ALL=C dnf --installroot $mnt clean all                                                                                                                                                               
buildah umount $container                                                                                                                                                                               
buildah commit $container cowsay-container1

然后unshare环境中运行脚本build.sh

[testuser@linux ~]$ buildah unshare bash build.sh

列出所有镜像以查看新构建的容器镜像

[testuser@linux ~]$ buildah images                                                                                                                                                                     
IMAGE NAME                                               IMAGE TAG            IMAGE ID             CREATED AT             SIZE                                                                          
localhost/cowsay-container1                              latest               9d9b88a8d5f1         Feb 18, 2019 17:26     307 MB                                                                        
[testuser@linux ~]$ 

尝试运行新构建的容器镜像

[testuser@linux ~]$ podman run localhost/cowsay-container1 cowsay hello                                                                                                                                
 _______                                                                                                                                                                                                
< hello >                                                                                                                                                                                               
 -------                                                                                                                                                                                                
        \   ^__^                                                                                                                                                                                        
         \  (oo)\_______                                                                                                                                                                                
            (__)\       )\/\                                                                                                                                                                            
                ||----w |                                                                                                                                                                               
                ||     ||                                                                                                                                                                               
[testuser@linux ~]$

所述build.sh脚本可以通过加入一些来提高buildah config命令提供一些元数据信息(例如,buildah config --created-bybuildah config --cmd)。

更长的故事

除了使用脚本build.sh构建容器映像之外,还可以进入unshare环境并手动运行构建命令。

[testuser@linux ~]$ cat /etc/redhat-release 
Fedora release 29 (Twenty Nine)
[testuser@linux ~]$ buildah unshare
[root@linux ~]# container=$(buildah from scratch)
[root@linux ~]# mnt=$(buildah mount $container)
[root@linux ~]# LC_ALL=C dnf install --installroot $mnt --release 29 --setopt=install_weak_deps=False -q -y cowsay
warning: /home/testuser/.local/share/containers/storage/overlay/cc67b957fb78eebe6a861a8b69ef4728d0660a636645813224b6ba94fbc80ce0/merged/var/cache/dnf/updates-0b4cc238d1aa4ffe/packages/bash-4.4.23-6.fc29.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 429476b4: NOKEY
Importing GPG key 0x429476B4:
 Userid     : "Fedora 29 (29) <[email protected]>"
 Fingerprint: 5A03 B4DD 8254 ECA0 2FDA 1637 A20A A56B 4294 76B4
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-29-x86_64
[root@linux ~]# LC_ALL=C dnf --installroot $mnt clean all
33 files removed
[root@linux ~]# buildah umount $container
020ee8e3fb29274a306c441770d2458c732e84076cc0487ce6ea06ac957640d4
[root@linux ~]# buildah commit $container cowsay-container2
Getting image source signatures
Copying blob b3fbecd80150: 292.45 MiB / 292.45 MiB [========================] 2s
Copying config 8aa2ad2933ce: 263 B / 263 B [================================] 0s
Writing manifest to image destination
Storing signatures
8aa2ad2933ce33c8ed8b7551c4a3261177ebd811c9b813b40d5ea77536ac6ef5
[root@linux ~]# exit
exit
[testuser@linux ~]$ buildah images
IMAGE NAME                                               IMAGE TAG            IMAGE ID             CREATED AT             SIZE
localhost/cowsay-container1                              latest               9d9b88a8d5f1         Feb 18, 2019 17:26     307 MB
localhost/cowsay-container2                              latest               8aa2ad2933ce         Feb 18, 2019 17:47     307 MB
[testuser@linux ~]$ podman run localhost/cowsay-container2 cowsay hello
 _______
< hello >
 -------
    \   ^__^
     \  (oo)\_______
    (__)\       )\/\
        ||----w |
        ||     ||
[testuser@linux ~]$ 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何以非root用户身份运行root别名?

来自分类Dev

如何以root用户身份(最初)对其他非root用户容器执行某些操作?

来自分类Dev

如何以非root用户身份运行docker image?

来自分类Dev

如何以非root用户身份启动运行级别3?

来自分类Dev

如何以非root用户身份启动“屏幕”会话

来自分类Dev

如何以非root用户身份100%创建KVM guest虚拟机?

来自分类Dev

如何以非root用户身份在Mac OS X上升级File :: Path

来自分类Dev

如何以非root用户身份从自定义webmin模块执行命令

来自分类Dev

如何以root身份登录?

来自分类Dev

如何以root身份登录?

来自分类Dev

如何以root用户身份进入目录?

来自分类Dev

如何以非root用户身份读取和写入USB闪存驱动器的原始设备文件

来自分类Dev

如何以root身份运行Terminal?

来自分类Dev

如何以root身份运行.run文件?

来自分类Dev

如何以root身份运行Terminal?

来自分类Dev

如何以root身份运行jhbuild

来自分类Dev

如何以 root 身份运行 brew?

来自分类Dev

如何从非root用户运行docker容器?

来自分类Dev

以root用户身份运行docker映像,以非root用户身份运行服务

来自分类Dev

如何以root用户身份修改applications.menu文件?

来自分类Dev

如何以root用户身份运行完整的GUI?

来自分类Dev

如何以root用户身份修改applications.menu文件?

来自分类Dev

如何以root用户身份运行完整的GUI?

来自分类Dev

如何以root用户身份运行Visual Studio Code

来自分类Dev

以非root用户身份执行

来自分类常见问题

以非root用户身份连接到docker容器

来自分类Dev

以非 root 用户身份运行 Hyperledger-Fabric 容器

来自分类Dev

以非 root 用户身份运行 docker 容器进程

来自分类Dev

如何从头开始构建TFS多维数据集?

Related 相关文章

  1. 1

    如何以非root用户身份运行root别名?

  2. 2

    如何以root用户身份(最初)对其他非root用户容器执行某些操作?

  3. 3

    如何以非root用户身份运行docker image?

  4. 4

    如何以非root用户身份启动运行级别3?

  5. 5

    如何以非root用户身份启动“屏幕”会话

  6. 6

    如何以非root用户身份100%创建KVM guest虚拟机?

  7. 7

    如何以非root用户身份在Mac OS X上升级File :: Path

  8. 8

    如何以非root用户身份从自定义webmin模块执行命令

  9. 9

    如何以root身份登录?

  10. 10

    如何以root身份登录?

  11. 11

    如何以root用户身份进入目录?

  12. 12

    如何以非root用户身份读取和写入USB闪存驱动器的原始设备文件

  13. 13

    如何以root身份运行Terminal?

  14. 14

    如何以root身份运行.run文件?

  15. 15

    如何以root身份运行Terminal?

  16. 16

    如何以root身份运行jhbuild

  17. 17

    如何以 root 身份运行 brew?

  18. 18

    如何从非root用户运行docker容器?

  19. 19

    以root用户身份运行docker映像,以非root用户身份运行服务

  20. 20

    如何以root用户身份修改applications.menu文件?

  21. 21

    如何以root用户身份运行完整的GUI?

  22. 22

    如何以root用户身份修改applications.menu文件?

  23. 23

    如何以root用户身份运行完整的GUI?

  24. 24

    如何以root用户身份运行Visual Studio Code

  25. 25

    以非root用户身份执行

  26. 26

    以非root用户身份连接到docker容器

  27. 27

    以非 root 用户身份运行 Hyperledger-Fabric 容器

  28. 28

    以非 root 用户身份运行 docker 容器进程

  29. 29

    如何从头开始构建TFS多维数据集?

热门标签

归档