如何在以 Podman 作为容器引擎的 Ubuntu 系统中 运行 编写 Docker 文件
How to run a Docker Compose file in Ubuntu system which has Podman as the Container Engine
我知道我们需要从 RPM 安装 podman-docker
包才能在 Redhat 系统中使用 Docker Compose。
但是APT中的Ubuntu系统没有这样的包。那我怎么才能运行一个Docker Compose文件呢?
包podman-docker在运行ningdocker-compose[=88=时没有使用] 连同 Podman。
.
关于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 "$@"
$
使用 Podman 运行ning docker-compose 时不需要此功能。相反,环境变量 DOCKER_HOST
用于配置什么
后端 docker-compose 将连接到。 Podman 理解 Docker REST API 并且可以用作 docker-compose.
的后端
运行ning docker-compose 与 Podman on Ubuntu
(未经测试的说明,因为我没有 Ubuntu 系统)
安装可执行文件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
运行
systemctl --user start podman.socket
(删除 --user
当 运行ning 为 root 时)
设置环境变量DOCKER_HOST
export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/podman/podman.sock
运行
~/docker-compose up -d
您也可以跳过安装 docker-compose
可执行文件和
而不是容器 docker.io/docker/compose
中的 运行 docker-compose
详情请看我的回答
Ubuntu 21.04 有 Podman 3.0.1。
该包包含以下文件列表:https://packages.ubuntu.com/hirsute/amd64/podman/filelist
例如
- /lib/systemd/system/podman.服务
- /lib/systemd/system/podman.套接字
- /usr/lib/systemd/user/podman.服务
- /usr/lib/systemd/user/podman.套接字
需要这些文件
systemctl --user start podman.socket
和
systemctl start podman.socket
上班。
注意,Podman 3.0.1 仅支持 docker-compose 当 Podman 是 运行 作为 root 时。
即将发布的 Ubuntu 21.10 计划于 2021 年 10 月发布,目前包含 Podman 3.2.1。
Podman 3.2.1 支持 运行ning docker-compose 当 Podman 是 运行 作为普通用户时(即 运行ning rootless)。
我猜 21.10 将是让 Podman 使用 docker-compose 的更安全的选择。另一种方法是从第 3 方存储库 Kubic 安装更新的 Podman 版本。
我知道我们需要从 RPM 安装 podman-docker
包才能在 Redhat 系统中使用 Docker Compose。
但是APT中的Ubuntu系统没有这样的包。那我怎么才能运行一个Docker Compose文件呢?
包podman-docker在运行ningdocker-compose[=88=时没有使用] 连同 Podman。 .
关于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 "$@"
$
使用 Podman 运行ning docker-compose 时不需要此功能。相反,环境变量 DOCKER_HOST
用于配置什么
后端 docker-compose 将连接到。 Podman 理解 Docker REST API 并且可以用作 docker-compose.
运行ning docker-compose 与 Podman on Ubuntu
(未经测试的说明,因为我没有 Ubuntu 系统)
安装可执行文件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
运行
systemctl --user start podman.socket
(删除
--user
当 运行ning 为 root 时)设置环境变量
DOCKER_HOST
export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/podman/podman.sock
运行
~/docker-compose up -d
您也可以跳过安装 docker-compose
可执行文件和
而不是容器 docker.io/docker/compose
docker-compose
详情请看我的回答
Ubuntu 21.04 有 Podman 3.0.1。 该包包含以下文件列表:https://packages.ubuntu.com/hirsute/amd64/podman/filelist
例如
- /lib/systemd/system/podman.服务
- /lib/systemd/system/podman.套接字
- /usr/lib/systemd/user/podman.服务
- /usr/lib/systemd/user/podman.套接字
需要这些文件
systemctl --user start podman.socket
和
systemctl start podman.socket
上班。
注意,Podman 3.0.1 仅支持 docker-compose 当 Podman 是 运行 作为 root 时。
即将发布的 Ubuntu 21.10 计划于 2021 年 10 月发布,目前包含 Podman 3.2.1。 Podman 3.2.1 支持 运行ning docker-compose 当 Podman 是 运行 作为普通用户时(即 运行ning rootless)。
我猜 21.10 将是让 Podman 使用 docker-compose 的更安全的选择。另一种方法是从第 3 方存储库 Kubic 安装更新的 Podman 版本。