没有 root 的 podman 容器之间的通信
Communication between podman containers without root
我正在尝试使用两个 podman 容器部署一个网络应用程序。一个是 运行ning gunicorn,另一个 运行 作为反向代理的 Web 服务器。
但是,容器之间的通信只有在我 运行 在具有 root 权限的主机上时才能成功。有解决办法吗?
这是一个没有 root 的例子(returns 一个空的 IP 地址):
$ podman run -dt --name test --rm -p 8000:8000 python:3.9 python -m http.server
$ podman container inspect test | grep IPAddress
"IPAddress": "",
使用 root,可以做到:
$ sudo podman run -dt --name test --rm -p 8000:8000 python:3.9 python -m http.server
$ sudo podman container inspect test | grep IPAddress
"IPAddress": "10.88.0.11",
"IPAddress": "10.88.0.11",
$ cat Dockerfile
FROM caddy:2
COPY Caddyfile /etc/caddy/Caddyfile
$ cat Caddyfile
:8001 {
reverse_proxy * 10.88.0.11:8000
}
$ sudo podman build . -t revproxy
$ sudo podman run -dt --rm -p 8001:8001 revproxy
并且代理在端口 8001 上成功运行。
两个容器必须在同一个 pod 或同一个网络中。
使用 pod,可以执行以下操作:
$ podman pod create -n test
$ podman run --rm --pod test python:3 python3 -m http.server
在另一个 shell 中:
$ podman run --rm --pod test python:3 curl localhost:8000
我正在尝试使用两个 podman 容器部署一个网络应用程序。一个是 运行ning gunicorn,另一个 运行 作为反向代理的 Web 服务器。
但是,容器之间的通信只有在我 运行 在具有 root 权限的主机上时才能成功。有解决办法吗?
这是一个没有 root 的例子(returns 一个空的 IP 地址):
$ podman run -dt --name test --rm -p 8000:8000 python:3.9 python -m http.server
$ podman container inspect test | grep IPAddress
"IPAddress": "",
使用 root,可以做到:
$ sudo podman run -dt --name test --rm -p 8000:8000 python:3.9 python -m http.server
$ sudo podman container inspect test | grep IPAddress
"IPAddress": "10.88.0.11",
"IPAddress": "10.88.0.11",
$ cat Dockerfile
FROM caddy:2
COPY Caddyfile /etc/caddy/Caddyfile
$ cat Caddyfile
:8001 {
reverse_proxy * 10.88.0.11:8000
}
$ sudo podman build . -t revproxy
$ sudo podman run -dt --rm -p 8001:8001 revproxy
并且代理在端口 8001 上成功运行。
两个容器必须在同一个 pod 或同一个网络中。
使用 pod,可以执行以下操作:
$ podman pod create -n test
$ podman run --rm --pod test python:3 python3 -m http.server
在另一个 shell 中:
$ podman run --rm --pod test python:3 curl localhost:8000