Creación de contenedores rootless conectados a la red slirp4netns
Podemos crear contenedor rootless conectados a la red slirp4netns con podman-compose
. Pero en este caso hay que indicar el tipo de red al que se conecta el contenedor, ya que por defecto podman-compose
crea una red bridge definida por el usuario.
Puedes encontrar los ficheros que vamos a utilizar en el directorio modulo7/rootless
del Repositorio con el código de los ejemplos.
Tenemos un fichero compose.yaml
con la siguiente configuración:
version: '3.1'
services:
app:
network_mode: "slirp4netns:port_handler=slirp4netns"
environment:
NETWORK_INTERFACE: tap0
container_name: webserver
image: quay.io/libpod/banner
restart: always
ports:
- 8085:80
- Hemos indicado el modo de red con el parámetro
network_mode
y el valorslirp4netns:port_handler=slirp4netns
para indicar que utilice la red de tipo slirp4netns para realizar la conexión. - También hemos creado una variable de entorno
NETWORK_INTERFACE
para indicar el nombre del dispositivo TAP que se va a utilizar.
A continuación podemos levantar el escenario, sin utilizar sudo
ya que vamos a ejecutar podman-compose
con un usuario sin privilegios:
$ podman-compose up -d
$ podman-compose ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8dc9bf2d75f2 quay.io/libpod/banner:latest nginx -g daemon o... 1 minute ago Up 1 minute 0.0.0.0:8085->80/tcp webserver
Y comprobamos el acceso:
$ curl http://localhost:8085
___ __
/ _ \___ ___/ /_ _ ___ ____
/ ___/ _ \/ _ / ' \/ _ `/ _ \
/_/ \___/\_,_/_/_/_/\_,_/_//_/