【问题标题】:How to run a Docker Compose file in Ubuntu system which has Podman as the Container Engine如何在以 Podman 作为容器引擎的 Ubuntu 系统中运行 Docker Compose 文件
【发布时间】:2021-08-27 18:49:20
【问题描述】:

我知道我们需要从 RPM 安装 podman-docker 软件包才能在 Redhat 系统中使用 Docker Compose。

但是这样的包在 APT 的 Ubuntu 系统上是不可用的。那么如何运行 Docker Compose 文件呢?

【问题讨论】:

    标签: docker ubuntu docker-compose podman


    【解决方案1】:

    podman-docker 包在 docker-composePodman 一起运行时不使用。 .

    关于 RPM 包的一些注意事项 podman-docker

    RPM 包podman-docker 提供了一个包装外壳脚本,以便 执行docker实际上会执行podman

    $ cat /etc/fedora-release 
    Fedora release 34 (Thirty Four)
    $ rpm -ql podman-docker | grep bin
    /usr/bin/docker
    $ file /usr/bin/docker 
    /usr/bin/docker: a /usr/bin/sh script, ASCII text executable
    $ cat /usr/bin/docker
    #!/usr/bin/sh
    [ -f /etc/containers/nodocker ] || \
    echo "Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg." >&2
    exec /usr/bin/podman "$@"
    $ 
    

    使用 Podman 运行 docker-compose 时不需要此功能。相反,环境变量DOCKER_HOST 用于配置什么 后端 docker-compose 将连接到。 Podman 了解 Docker REST API,可用作 docker-compose 的后端。

    在 Ubuntu 上使用 Podman 运行 docker-compose

    (未测试说明,因为我没有 Ubuntu 系统)

    1. 安装可执行文件docker-compose

      curl -sL -o ~/docker-compose https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)
      chmod 755 ~/docker-compose
      
    2. 运行

      systemctl --user start podman.socket
      

      (以root身份运行时删除--user

    3. 设置环境变量DOCKER_HOST

      export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/podman/podman.sock
      
    4. 运行

      ~/docker-compose up -d
      

    您也可以跳过安装 docker-compose 可执行文件和 而是在容器 docker.io/docker/compose

    中运行 docker-compose

    更多详情见我的回答https://stackoverflow.com/a/65670037/757777

    Ubuntu 21.04 有 Podman 3.0.1。 该软件包包含以下文件列表:https://packages.ubuntu.com/hirsute/amd64/podman/filelist

    例如

    • /lib/systemd/system/podman.service
    • /lib/systemd/system/podman.socket
    • /usr/lib/systemd/user/podman.service
    • /usr/lib/systemd/user/podman.socket

    需要这些文件 systemctl --user start podman.socketsystemctl start podman.socket 上班。

    注意,Podman 3.0.1 仅在 Podman 以 root 身份运行时支持 docker-compose。

    计划于 2021 年 10 月发布的 Ubuntu 21.10 目前包含 Podman 3.2.1。 Podman 3.2.1 支持在 Podman 以普通用户身份运行时运行 docker-compose。

    我猜想 21.10 将是让 Podman 使用 docker-compose 的更安全的选择。另一种方法是从 3rd 方存储库 Kubic 安装更新的 Podman 版本。

    https://podman.io/getting-started/installation

    【讨论】:

    猜你喜欢
    • 2019-11-15
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    相关资源
    最近更新 更多