Me gustaría iniciar un contenedor Docker normalmente, ejecutarlo, instalar algunas cosas en él y luego me gustaría deshabilitar la red para ejecutar algunos comandos más, pero no deberían tener acceso a la red. ¿Cómo puedo hacer eso para un contenedor en ejecución?
Uso docker-py y sé que puedo usar network_disabled para deshabilitar la red para todo el contenedor. Pero no estoy seguro de cómo puedo deshabilitar la red después de que ya se haya creado el contenedor. Idealmente, ejecutaría el contenedor con el comando sleep infinity , luego docker exec algunos comandos en él, luego deshabilitaría la red, luego ejecutaría algunos comandos más usando docker exec .
Tal vez una opción seríala desconexión de la red docker
Descripción
Desconectar un contenedor de una red
Uso
docker network disconnect [OPTIONS] NETWORK CONTAINER
Ejemplo:
Crear un contenedor adjunto a la red de puente predeterminada
docker container run --rm -it alpine ping 8.8.8.8y después de un tiempo desconectarlo con:
docker network disconnect bridge <container-name>El patrón estándar que debe usar aquí es escribir un Dockerfile que haga cualquier instalación de software que necesite y cree una imagen a partir de él. En realidad, esto se ajusta bastante bien a su necesidad inmediata, ya que una vez que haya creado la imagen, puede ejecutarla sin red.
Un esqueleto típico de Dockerfile podría parecerse más o menos a
FROM ubuntu:18.04 RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive \ apt-get install --no-install-recommends --assume-yes \ thing-to-run-without-network CMD ["/usr/bin/thing-to-run-without-network"]Y luego lo construirías y ejecutarías como
docker build -t no-net-test . docker run --rm --net none no-net-test En general, debe configurar su imagen para que docker run haga todo lo que el contenedor necesita hacer, sin necesidad de ejecutar docker exec nunca (excepto para la depuración manual). Nunca debe instalar cosas en un contenedor en ejecución: su trabajo se perderá tan pronto como docker rm el contenedor, y eliminar y reiniciar sus contenedores es extremadamente rutinario.