搜索

第 20 章 使用 podman RHEL 系统角色管理容器

download PDF

使用 podman RHEL 系统角色,您可以管理 Podman 配置、容器以及运行 Podman 容器的 systemd 服务。

20.1. 创建一个带有绑定挂载的无根容器

您可以通过运行 Ansible playbook 并使用它来管理应用程序配置,使用 podman RHEL 系统角色创建带有绑定挂载的无根容器。

先决条件

步骤

  1. 创建包含以下内容的 playbook 文件,如 ~/playbook.yml

    - hosts: managed-node-01.example.com
      vars:
        podman_create_host_directories: true
        podman_firewall:
          - port: 8080-8081/tcp
            state: enabled
          - port: 12340/tcp
            state: enabled
        podman_selinux_ports:
          - ports: 8080-8081
            setype: http_port_t
        podman_kube_specs:
          - state: started
            run_as_user: dbuser
            run_as_group: dbgroup
            kube_file_content:
              apiVersion: v1
              kind: Pod
              metadata:
                name: db
              spec:
                containers:
                  - name: db
                    image: quay.io/db/db:stable
                    ports:
                      - containerPort: 1234
                        hostPort: 12340
                    volumeMounts:
                      - mountPath: /var/lib/db:Z
                        name: db
                volumes:
                  - name: db
                    hostPath:
                      path: /var/lib/db
          - state: started
            run_as_user: webapp
            run_as_group: webapp
            kube_file_src: /path/to/webapp.yml
      roles:
        - linux-system-roles.podma

    此流程创建一个有两个容器的 pod。podman_kube_specs 角色变量描述了 pod。

    • run_as_userrun_as_group 字段指定容器是无根的。
    • 包含 Kubernetes YAML 文件的 kube_file_content 字段定义了名为 db 的第一个容器。您可以使用 podman kube generate 命令生成 Kubernetes YAML 文件。

      • db 容器是基于 quay.io/db/db:stable 容器镜像。
      • db 绑定挂载将主机上的 /var/lib/db 目录映射到容器中的 /var/lib/db 目录。Z 标志使用私有的 unshared 标签标记内容,因此只有 db 容器才能访问内容。
    • kube_file_src 字段定义第二个容器。控制器节点上 /path/to/webapp.yml 文件的内容将复制到受管节点上的 kube_file 字段中。
    • 设置 podman_create_host_directories: true 以在主机上创建目录。这指示角色检查 hostPath 卷的 kube 规格,并在主机上创建这些目录。如果您需要对所有权和权限有更多的控制,请使用 podman_host_directories
  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml

    请注意,这个命令只验证语法,不会防止错误但有效的配置。

  3. 运行 playbook:

    $ ansible-playbook --ask-vault-pass ~/playbook.yml

其他资源

  • /usr/share/ansible/roles/rhel-system-roles.podman/README.md 文件
  • /usr/share/doc/rhel-system-roles/podman/ directory
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.