Imansible scaricare i pacchetti python sull'image Docker

Ho seguito i Documenti ufficiali qui .

Il mio Dockerfile , app.py e requirements.txt sono uguali a quelli indicati nel tutorial.
Quando cerco di build la mia image Docker utilizzando il docker build -t friendlyhello . Ottengo il seguente errore mentre il docker esegue la sezione RUN pip install -r requirements.txt :

Ripetere (Riprova (totale = 4, connettere = Nessuno, leggere = Nessuno, redirect = Nessuno)) dopo il collegamento interrotto da 'NewConnectionError (': Imansible stabilire una nuova connessione: [Errno -2] Nome o servizio non noto ' ': / semplice / flask /

Ho già controllato questo e provato tutte le soluzioni proposte nessuno sembra funzionare.

Grazie in anticipo.

Modifica 1: I miei requisiti.txt

Flask Redis

L'output completa

 Sending build context to Docker daemon 4.608 kB Step 1/7 : FROM python:2.7-slim ---> 4ba53c70eb04 Step 2/7 : WORKDIR /app ---> Using cache ---> bebf675fc3bd Step 3/7 : ADD . /app ---> Using cache ---> 435299812b68 Step 4/7 : RUN pip install -r requirements.txt ---> Running in 97465239272f Collecting Flask (from -r requirements.txt (line 1)) Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f29c8b33910>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /simple/flask/ Retrying (Retry(total=3, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f29c8bb9f90>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /simple/flask/ Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f29c9aa69d0>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /simple/flask/ Retrying (Retry(total=1, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f29c9aa6190>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /simple/flask/ Retrying (Retry(total=0, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f29c9aa6510>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /simple/flask/ Could not find a version that satisfies the requirement Flask (from -r requirements.txt (line 1)) (from versions: ) No matching distribution found for Flask (from -r requirements.txt (line 1)) The command '/bin/sh -c pip install -r requirements.txt' returned a non-zero code: 1 

Modifica 2: ho scoperto che la mia azienda utilizza un DNS specifico con cui posso risolvere il docker run --dns [DNS] busybox nslookup google.com

Se è necessario aggiornare il demone per utilizzare un diverso indirizzo DNS, è ansible creare (o modificare) il file /etc/docker/daemon.json con i seguenti elementi:

 { "dns": ["8.8.8.8", "8.8.2.2"] } 

Basta sostituire i suddetti IP con i propri requisiti e, al termine, puoi eseguire un ricaricamento o riavviare sul tuo demone per rileggere il file.

 sudo systemctl reload docker 

Questo dovrebbe cambiare il DNS predefinito per tutti i nuovi contenitori, inclusi quelli utilizzati durante la costruzione.

Vedere il seguente collegamento per ulteriori informazioni su ciò che è ansible impostare in questo file: https://docs.docker.com/engine/reference/commandline/dockerd/#linux-configuration-file

Il problema sta nel risolvere il DNS nei contenitori. Per risolvere che segue la procedura che consente di risolvere il DNS nei container docker:

Scopri il server DNS utilizzato nella tua macchina:

 # nm-tool |grep DNS DNS: 172.24.100.50 DNS: 10.1.100.50 

Eseguirlo nuovamente usando il DNS DNS trovato nel passaggio precedente che risolve il problema DNS:

 # docker run --dns 172.24.100.50 busybox nslookup google.com Server: 172.24.100.50 Address 1: 172.24.100.50 indc01.radisys.com Name: google.com Address 1: 2607:f8b0:4009:80c::200e ord36s01-in-x0e.1e100.net Address 2: 172.217.4.110 ord36s04-in-f14.1e100.net 

Per risolvere il problema, aggiungete in modo definitivo i seguenti contenuti al di sotto di un nuovo file:

 # cat /etc/docker/daemon.json { "dns" : ["172.24.100.50", "8.8.8.8"] } 

Maggiori informazioni sulla configuration DNS di Docker: https://docs.docker.com/engine/userguide/networking/configure-dns/

Riavviare il servizio docker e controllarlo di nuovo:

 # docker run busybox nslookup google.com Server: 172.24.100.50 Address 1: 172.24.100.50 indc01.radisys.com Name: google.com Address 1: 2607:f8b0:4009:801::200e ord30s31-in-x0e.1e100.net Address 2: 172.217.4.238 ord30s31-in-f14.1e100.net 

Controllare l'esecuzione del contenitore:

 [email protected]:/home/labadmin# docker run -it e02e811dd08f / # ping google.com PING google.com (172.217.4.238): 56 data bytes 64 bytes from 172.217.4.238: seq=0 ttl=47 time=251.506 ms 64 bytes from 172.217.4.238: seq=1 ttl=47 time=245.621 ms ^C --- google.com ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 245.621/257.113/272.586 ms / #