Motore Docker in Windows

Si applica a: Windows Server 2022, Windows Server 2019, Windows Server 2016

Il client e il motore Docker non sono inclusi in Windows, quindi sarà necessario installarli e configurarli individualmente. Inoltre, il motore Docker può accettare molte configurazioni personalizzate. Alcuni esempi includono la configurazione del modo in cui il daemon accetta le richieste in ingresso, le opzioni di rete predefinite e le impostazioni di debug/log. In Windows queste configurazioni possono essere specificate in un file di configurazione o tramite Gestione controllo servizi Windows. Questo documento illustra come installare e configurare il motore Docker e presenta alcuni esempi di configurazioni comuni.

Installare Docker

Per usare i contenitori di Windows, è necessario Docker. Docker è costituito dal motore Docker (dockerd.exe) e dal client Docker (docker.exe). Il modo più semplice per installare tutto l'occorrente indicato in questa guida di avvio rapido, che consente di configurare ed eseguire il primo contenitore.

Per le installazioni tramite script, vedere Usare uno script per installare Docker EE .

Prima di poter usare Docker, è necessario installare le immagini del contenitore. Per altre informazioni, vedere la documentazione per le immagini di base del contenitore.

Configurare Docker con un file di configurazione

Il metodo preferito per la configurazione del motore Docker in Windows usa un file di configurazione. Il file di configurazione è disponibile in 'C:\ProgramData\Docker\config\daemon.json'. È possibile creare il file se non esiste già.

Nota

Non tutte le opzioni di configurazione di Docker disponibili sono applicabili a Docker in Windows. L'esempio seguente mostra le opzioni di configurazione applicabili. Per altre informazioni sulla configurazione del motore Docker, vedere File di configurazione daemon di Docker.

{
    "authorization-plugins": [],
    "dns": [],
    "dns-opts": [],
    "dns-search": [],
    "exec-opts": [],
    "storage-driver": "",
    "storage-opts": [],
    "labels": [],
    "log-driver": "",
    "mtu": 0,
    "pidfile": "",
    "data-root": "",
    "cluster-store": "",
    "cluster-advertise": "",
    "debug": true,
    "hosts": [],
    "log-level": "",
    "tlsverify": true,
    "tlscacert": "",
    "tlscert": "",
    "tlskey": "",
    "group": "",
    "default-ulimits": {},
    "bridge": "",
    "fixed-cidr": "",
    "raw-logs": false,
    "registry-mirrors": [],
    "insecure-registries": [],
    "disable-legacy-registry": false
}

È necessario aggiungere al file di configurazione solo le modifiche di configurazione desiderate. L'esempio seguente configura il motore Docker per accettare le connessioni in ingresso sulla porta 2375. Tutte le altre opzioni di configurazione useranno i valori predefiniti.

{
    "hosts": ["tcp://0.0.0.0:2375"]
}

Allo stesso modo, l'esempio seguente configura il daemon Docker per mantenere le immagini e i contenitori in un percorso alternativo. Se non è specificato, il valore predefinito è c:\programdata\docker.

{   
    "data-root": "d:\\docker"
}

L'esempio seguente configura il daemon Docker in modo da accettare solo connessioni protette sulla porta 2376.

{
    "hosts": ["tcp://0.0.0.0:2376", "npipe://"],
    "tlsverify": true,
    "tlscacert": "C:\\ProgramData\\docker\\certs.d\\ca.pem",
    "tlscert": "C:\\ProgramData\\docker\\certs.d\\server-cert.pem",
    "tlskey": "C:\\ProgramData\\docker\\certs.d\\server-key.pem",
}

Configurare Docker nel servizio Docker

Il motore Docker può essere configurato anche modificando il servizio Docker con sc config. Usando questo metodo, i flag del motore Docker vengono impostati direttamente nel servizio Docker. Eseguire il comando seguente in un prompt dei comandi (cmd.exe non PowerShell):

sc config docker binpath= "\"C:\Program Files\docker\dockerd.exe\" --run-service -H tcp://0.0.0.0:2375"

Nota

Non è necessario eseguire questo comando se il file daemon.json contiene già la voce "hosts": ["tcp://0.0.0.0:2375"].

Configurazione comune

Gli esempi di file di configurazione seguenti illustrano le configurazioni comuni di Docker. Questi possono essere combinati in un singolo file di configurazione.

Creazione di una rete predefinita

Per configurare il motore Docker in modo da non creare una rete NAT predefinita, usare la configurazione seguente.

{
    "bridge" : "none"
}

Per altre informazioni, vedere Gestire le reti Docker.

Impostare un gruppo di sicurezza di Docker

Quando si è connessi all'host Docker e si eseguono comandi di Docker in locale, questi comandi vengono eseguiti tramite una named pipe. Per impostazione predefinita, solo i membri del gruppo Amministrazione istrators possono accedere al motore Docker tramite la named pipe. Per specificare un gruppo di sicurezza con questo accesso, usare il group flag .

{
    "group" : "docker"
}

Configurazione proxy

Per impostare le informazioni sul proxy per docker search e docker pull, creare una variabile di ambiente Windows con il nome HTTP_PROXY o HTTPS_PROXYe il valore delle informazioni del proxy. Questa operazione può essere completata con PowerShell usando un comando simile al seguente:

[Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://username:password@proxy:port/", [EnvironmentVariableTarget]::Machine)

Dopo aver impostato la variabile, riavviare il servizio Docker.

Restart-Service docker

Per altre informazioni, vedere File di configurazione di Windows in Docker.com.

Come disinstallare Docker

Questa sezione descrive come disinstallare Docker ed eseguire una pulizia completa dei componenti del sistema Docker dal sistema Windows 10 o Windows Server 2016.

Nota

Tutti i comandi in queste istruzioni devono essere eseguiti da una sessione di PowerShell con privilegi elevati.

Preparare il sistema per la rimozione di Docker

Prima di disinstallare Docker, assicurarsi che nessun contenitore sia in esecuzione nel sistema.

Eseguire i cmdlet seguenti per verificare la presenza di contenitori in esecuzione:

# Leave swarm mode (this will automatically stop and remove services and overlay networks)
docker swarm leave --force

# Stop all running containers
docker ps --quiet | ForEach-Object {docker stop $_}

È anche consigliabile rimuovere tutti i contenitori, le immagini del contenitore, le reti e i volumi dal sistema prima di rimuovere Docker. A tale scopo, usare il cmdlet seguente:

docker system prune --volumes --all

Disinstallare Docker

Sarà quindi necessario disinstallare effettivamente Docker.

Per disinstallare Docker in Windows 10

  • Passare a Impostazioni>App nel computer Windows 10
  • In App e funzionalità trovare Docker per Windows
  • Passare a Docker per Windows>Disinstalla

Per disinstallare Docker in Windows Server 2016:

Da una sessione di PowerShell con privilegi elevati, usare i cmdlet Uninstall-Package e Uninstall-Module per rimuovere dal sistema il modulo Docker e il provider di gestione pacchetti corrispondente, come mostrato nell'esempio seguente:

Uninstall-Package -Name docker -ProviderName DockerMsftProvider
Uninstall-Module -Name DockerMsftProvider

Suggerimento

È possibile trovare il provider di gestione pacchetti usato per installare Docker con PS C:\> Get-PackageProvider -Name *Docker*

Pulire i componenti di sistema e i dati di Docker

Dopo aver disinstallato Docker, è necessario rimuovere le reti predefinite di Docker in modo che la configurazione non rimanga nel sistema una volta eliminato Docker. A tale scopo, usare il cmdlet seguente:

Get-HNSNetwork | Remove-HNSNetwork

Per rimuovere le reti predefinite di Docker in Windows Server 2016.

Get-ContainerNetwork | Remove-ContainerNetwork

Per rimuovere i dati del programma di Docker dal sistema, eseguire il cmdlet seguente:

Remove-Item "C:\ProgramData\Docker" -Recurse

È anche possibile rimuovere le funzionalità facoltative di Windows associate a Docker e ai contenitori in Windows,

ad esempio la funzionalità "Contenitori" che viene abilitata automaticamente in Windows 10 o Windows Server 2016 durante l'installazione di Docker. Può includere anche la funzionalità "Hyper-V", che viene abilitata automaticamente in Windows 10 quando Docker è installato, ma deve essere abilitata in modo esplicito in Windows Server 2016.

Importante

Hyper-V è una funzionalità di virtualizzazione generale che abilita molti elementi oltre ai contenitori. Prima di disabilitare la funzionalità Hyper-V, assicurarsi nel sistema non siano presenti altri componenti virtualizzati che richiedono Hyper-V.

Per rimuovere le funzionalità di Windows in Windows 10:

  • Passare a Pannello di controllo>Programmi>Programmi e funzionalità>Attiva o disattiva funzionalità di Windows.
  • Trovare il nome delle funzionalità da disabilitare, in questo caso Contenitori e, facoltativamente, Hyper-V
  • Deselezionare la casella accanto al nome della funzionalità da disabilitare.
  • Fare clic su "OK".

Per rimuovere le funzionalità di Windows in Windows Server 2016:

Da una sessione di PowerShell con privilegi elevati, eseguire i cmdlet seguenti per disabilitare le funzionalità Contenitori e, facoltativamente, Hyper-V dal sistema:

Remove-WindowsFeature Containers
Remove-WindowsFeature Hyper-V

Riavviare il sistema

Per completare la disinstallazione e la pulizia, eseguire il cmdlet seguente da una sessione di PowerShell con privilegi elevati per riavviare il sistema:

Restart-Computer -Force