PodMan

环境

Centos8

安装podman

Podman 是一个容器环境,首先在主机上安装 Podman。执行下面命令来安装podman:
  1. [root@localhost ~]# yum -y install podman
然后修改一下用户命名空间的大小:
  1. [root@localhost ~]# echo "user.max_user_namespaces=28633" >> /etc/sysctl.d/userns.conf
  2. [root@localhost ~]# sysctl -p /etc/sysctl.d/userns.conf
  3. user.max_user_namespaces = 28633
下面创建一个podman容器来看一下吧,下面使用的是RHEL的UBI镜像:
  1. [root@localhost ~]# podman run ubi8/ubi cat /etc/os-release
  2. Resolved "ubi8/ubi" as an alias (/etc/containers/registries.conf.d/001-rhel-shortnames.conf)
  3. Trying to pull registry.access.redhat.com/ubi8/ubi:latest...
  4. Getting image source signatures
  5. Checking if image destination supports signatures
  6. Copying blob ce3c6836540f done
  7. Copying blob 63f9f4c31162 done
  8. Copying config cc06568478 done
  9. Writing manifest to image destination
  10. Storing signatures
  11. NAME="Red Hat Enterprise Linux"
  12. VERSION="8.5 (Ootpa)"
  13. ID="rhel"
  14. ID_LIKE="fedora"
  15. VERSION_ID="8.5"
  16. PLATFORM_ID="platform:el8"
  17. PRETTY_NAME="Red Hat Enterprise Linux 8.5 (Ootpa)"
  18. ANSI_COLOR="0;31"
  19. CPE_NAME="cpe:/o:redhat:enterprise_linux:8::baseos"
  20. HOME_URL="https://www.redhat.com/"
  21. DOCUMENTATION_URL="https://access.redhat.com/documentation/red_hat_enterprise_linux/8/"
  22. BUG_REPORT_URL="https://bugzilla.redhat.com/"
  23. REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 8"
  24. REDHAT_BUGZILLA_PRODUCT_VERSION=8.5
  25. REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
  26. REDHAT_SUPPORT_PRODUCT_VERSION="8.5"

快速建立一个 PodMan 环境 - 图1

创建Dockerfile

现在可以创建一个 Dockerfile 来指定如何构建新的镜像。首先需要为 Dockerfile 文件创建一个目录:
  1. [root@localhost ~]# mkdir ~/myc
  2. [root@localhost ~]# cd ~/myc
创建一个文件Dockerfile文件,来建立一个新镜像:
  1. [root@localhost myc]# vim Dockerfile
  2. FROM ubi8/ubi:latest
  3. RUN dnf install -y nano

快速建立一个 PodMan 环境 - 图2
开始使用<font style="color:rgb(34, 34, 34);">podman build</font>来创建容器:

  1. [root@localhost myc]# podman build -f Dockerfile -t ubi-with-nano
  2. [root@localhost myc]# podman build -f Dockerfile -t ubi-with-nano
  3. STEP 1/2: FROM ubi8/ubi:latest
  4. STEP 2/2: RUN dnf install -y nano
  5. Updating Subscription Management repositories.
  6. Unable to read consumer identity
  7. ...

快速建立一个 PodMan 环境 - 图3
使用<font style="color:rgb(34, 34, 34);">podman images</font>来确认是否创建新镜像:

  1. [root@localhost myc]# podman images

快速建立一个 PodMan 环境 - 图4
现在可以运行容器了,检查nano编辑器是否可用:

  1. [root@localhost myc]# podman run localhost/ubi-with-nano /usr/bin/which nano
  2. /usr/bin/nano
通过查看nano执行文件的位置,来检查是否安装。 Nano 现在已安装在自定义容器中。还可以交互式的运行容器:
  1. [root@localhost myc]# podman run -it localhost/ubi-with-nano /bin/bash
  2. [root@d1f0e46f2b6d /]# ls
  3. bin dev home lib64 media opt root sbin sys usr
  4. boot etc lib lost+found mnt proc run srv tmp var
  5. [root@d1f0e46f2b6d /]#

快速建立一个 PodMan 环境 - 图5
在容器中运行exit来退出容器。

可以使用<font style="color:rgb(34, 34, 34);">podman ps</font>来查看运行的容器,如果需要查看以停止的容器,可以添加<font style="color:rgb(34, 34, 34);">-a</font>选项:
  1. [root@localhost myc]# podman ps
  2. [root@localhost myc]# podman ps -a

快速建立一个 PodMan 环境 - 图6

存储

经常让新用户感到困惑的一件事是它们的短暂性。例如进入容器里创建的文件,退出之后,再次进入发现文件没有了。下面将容器中需要存储永久性文件的文件夹挂载到系统的某个文件夹中。下面在本机创建一个存储位置:
  1. [root@localhost ~]# mkdir /pod_data
然后使用您的存储目录作为一些相关的挂载点来启动容器。此示例将本地目录/pod_data绑定到容器中名为/storage 的位置,必须在目录位置附加 :Z,以便 SELinux 可以在主机和 Podman 之间转换上下文。
  1. [root@localhost ~]# podman run -it --volume /pod_data:/storage:Z localhost/ubi-with-nano
  2. [root@d590bc344b76 /]# echo "hello podman" >> /storage/msg.txt
  3. [root@d590bc344b76 /]# exit
  4. exit
  5. [root@localhost ~]# cat /pod_data/msg.txt
  6. hello podman

快速建立一个 PodMan 环境 - 图7
可以看到目录绑定之后,在容器中写入数据,退出容器,在本机的/pod_data可以看到写入的内容。