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



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

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

当与podman一起运行docker-compose时,不使用包podman-docker。.

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

RPM包podman-docker提供了一个包装外壳脚本,以便则执行CCD_ 2将实际执行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用于配置backenddocker-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仅在以root身份运行Podman时才支持docker compose。

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

我想21.10将是一个更安全的赌注,让波德曼与docker compose合作。另一种选择是从第三方库Kubic安装一个新的Podman版本。

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

相关内容

  • 没有找到相关文章