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.