imagenes imagen hub crear contenedor docker docker-compose docker-networking

imagen - download docker image



no hay internet dentro del servicio docker-componer (3)

La última vez que tuve un problema así, lo resolví así:

https://github.com/docker/docker/issues/866#issuecomment-19218300

pkill docker iptables -t nat -F ifconfig docker0 down brctl delbr docker0 docker -d

Obligará a Docker a recrear el puente y reiniciar todas las reglas de la red

No puedo acceder a la red externa desde los contenedores docker-componer.

Considere el siguiente archivo docker-compose:

version: ''2'' services: nginx: image: nginx

Utilizando la sencilla función de docker run -it nginx bash , logro alcanzar direcciones IP externas o direcciones IP de Internet ( docker run -it nginx bash ping www.google.com ).

Por otro lado, si uso docker-compose y lo conecto al contenedor, no puedo acceder a las direcciones IP / DNS externas.

información del acoplador:

Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 1 Server Version: 1.12.1 Storage Driver: aufs Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs Dirs: 7 Dirperm1 Supported: true Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge null host overlay Swarm: inactive Runtimes: runc Default Runtime: runc Security Options: apparmor seccomp Kernel Version: 4.4.0-38-generic Operating System: Ubuntu 16.04.1 LTS OSType: linux Architecture: x86_64 CPUs: 2 Total Memory: 3.859 GiB Name: *** ID: **** Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): false Registry: https://index.docker.io/v1/ WARNING: No swap limit support WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled Insecure Registries: 127.0.0.0/8

docker-componer 1.8.1, compilación 878cff1

archivo daemon.json:

{ "iptables" : false, "dns" : ["8.8.8.8","8.8.4.4"] }


Los contenedores Docker tienen la capacidad de acceder a Internet de forma predeterminada. Así es como resolví el problema la semana pasada: el contenedor docker solo puede acceder a Internet con el host de red

O simplemente deja el contenedor en modo de host:

version: ''2'' service: nginx: image: nginx network_mode: host

Pero como @peedee señaló en los comentarios, esta solución perderá la separación de red entre el host y los contenedores.


La imagen nginx que está arrancando no tiene ping instalado por defecto. Entonces, si realmente está usando ping para probar su conexión, primero debe instalarlo.

Creé un Dockerfile personalizado para tenerlo instalado:

FROM nginx:latest RUN apt update && apt -y install iputils-ping

Luego lo construí localmente y mynginx como mynginx .

Luego cambié docker-compose.yml para usar la imagen personalizada mynginx :

version: ''2'' services: nginx: image: mynginx

Finalmente, disparé docker-compose up , hice un docker exec y probé ping. Todo funcionó bien. También hice un docker run -ti ... y funcionó.

Lo que me molesta en su pregunta es cómo docker run puede darle un contenedor con un comportamiento diferente al creado por docker-compose up .

Sin embargo, sería útil tener más claridad sobre cómo verificar el acceso a Internet.