如何在以 Podman 作为容器引擎的 Ubuntu 系统中运行 Docker Compose 文件

Avi*_*vik 3 ubuntu docker docker-compose podman

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

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

Eri*_*und 7

Podman一起运行docker-compose时,不会使用podman-docker包。。

关于 RPM 包podman-docker的一些说明

RPM 包podman-docker提供了一个包装 shell 脚本,以便执行时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 "$@"
$ 
Run Code Online (Sandbox Code Playgroud)

使用 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
    
    Run Code Online (Sandbox Code Playgroud)
  2. 跑步

    systemctl --user start podman.socket
    
    Run Code Online (Sandbox Code Playgroud)

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

  3. 设置环境变量DOCKER_HOST

    export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/podman/podman.sock
    
    Run Code Online (Sandbox Code Playgroud)
  4. 跑步

    ~/docker-compose up -d
    
    Run Code Online (Sandbox Code Playgroud)

您还可以跳过安装docker-compose可执行文件,而是docker-compose在容器docker.io/docker/compose中运行

有关更多详细信息,请参阅我的答案/sf/answers/4596902621/

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 以普通用户身份运行(即无 root 运行)时运行 docker-compose。

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

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