English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Uso del container Docker

Client Docker

Il client Docker è molto semplice, possiamo semplicemente inserire il comando docker per vedere tutte le opzioni dei comandi del client Docker.

w3codebox@w3codebox:~# docker

Puoi passare il comando docker command --help Per ottenere una comprensione più approfondita dell'uso specifico di un comando Docker.

Ad esempio, per vedere docker stats Metodo di utilizzo specifico dell'istruzione:

w3codebox@w3codebox:~# docker stats --help

Uso del container

Ottieni l'immagine

Se non abbiamo l'immagine ubuntu locale, possiamo utilizzare il comando docker pull per caricare l'immagine ubuntu:

$ docker pull ubuntu

Avvia il container

I seguenti comandi utilizzano l'immagine ubuntu per avviare un container, i parametri sono per entrare nel container in modalità a riga di comando:

$ docker run -it ubuntu /bin/bash

Spiegazione dei parametri:

  • -i: operazione interattiva.

  • -t: terminale.

  • ubuntu: immagine ubuntu.

  • /bin/bashIl comando dopo il nome dell'immagine è il comando, qui desideriamo avere uno Shell interattivo, quindi usiamo /bin/bash.

Per uscire dal terminale, inserisci direttamente exit:

root@ed09e4490c57:/# exit

Avvia un container fermato

Ecco come vedere tutti i comandi dei container:

$ docker ps -a

Clicca sull'immagine per visualizzare la versione più grande:

Utilizza docker start per avviare un container fermato:

$ docker start b750bbbcfd88

Esecuzione in background

Nella maggior parte delle situazioni, desideriamo che il servizio di docker sia in esecuzione in background, possiamo utilizzare -d per specificare il modo di esecuzione del container.

$ docker run -itd --name ubuntu-test ubuntu /bin/bash

Clicca sull'immagine per visualizzare la versione più grande:

Nota:}Con il parametro -d di default non si entra nel container, per entrare nel container è necessario utilizzare l'istruzione docker exec(Verrà illustrato di seguito).

Fermare un container

Il comando per fermare un container è il seguente:

$ docker stop <ID_container>

I container fermi possono essere riavviati con docker restart:

$ docker restart <ID_container>

Accedi al container

Utilizzando -d Quando si utilizza il parametro, il container si avvierà in background. Per accedere al container, utilizzare le seguenti istruzioni:

  • docker attach

  • docker exec:Si consiglia di utilizzare il comando docker exec, perché l'uscita dal terminale del container non causerebbe la fermata del container.

Comando attach

Di seguito è riportato un esempio di utilizzo del comando docker attach.

$ docker attach 1e560fca3906

Attenzione: Se esce da questo container, il container si fermerà.

Comando exec

Di seguito è riportato un esempio di utilizzo del comando docker exec.

docker exec -it 243c32535da7 /bin/bash

Attenzione: Se esce da questo container, il container non si fermerà, ecco perché si consiglia di utilizzare docker exec del motivo.

Per ulteriori dettagli sui parametri, utilizzare il comando docker exec --help.

Esportazione e importazione del container

Esporta container

Se si desidera esportare un container locale, si può utilizzare docker export Comando.

$ docker export 1e560fca3906 > ubuntu.tar

Esporta lo snapshot del container 1e560fca3906 in un file locale ubuntu.tar.

In questo modo esporti lo snapshot del container in un file locale.

Importazione snapshot del container

Puoi utilizzare docker import per importare di nuovo un'immagine da un file di snapshot del container. Esempio seguente: il file di snapshot ubuntu.tar viene importato nell'immagine test/ubuntu:v1:

$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1

Inoltre, è anche possibile importare specificando un URL o una directory, ad esempio:

$ docker import http://example.com/exampleimage.tgz example/imagerepo

Rimuovi container

Utilizzo per rimuovere il container docker rm Comando:

$ docker rm -f 1e560fca3906

Il comando seguente può pulire tutti i container in stato di terminazione.

$ docker container prune

Esegui un'applicazione web

Il container che abbiamo eseguito prima non ha alcun uso speciale.

Procediamo a tentare di costruire un'applicazione web utilizzando Docker.

Stiamo eseguendo un'applicazione Python Flask in un container Docker per eseguire una web application.

w3codebox@w3codebox:~# docker pull training/webapp  # Carica l'immagine
w3codebox@w3codebox:~# docker run -d -P training/webapp python app.py

Spiegazione dei parametri:

  • -d:Fai eseguire il container in background.

  • -P:Mappa casualmente il porto di rete interno del container al nostro host.

Visualizza il container dell'applicazione WEB

Usa docker ps per visualizzare i container in esecuzione:

w3codebox@w3codebox:~#  docker ps
ID_CONTAINER  IMMAGINE  COMMAND  ...  PORTI                 
d3d5e39ed9d3  training/webapp  "python app.py"  ...  0.0.0.0:32769->5000/tcp

Ecco le informazioni aggiuntive sui porti.

PORTI
0.0.0.0:32769->5000/tcp

Docker ha aperto il porto 5000 (porto predefinito di Python Flask) e lo ha mappato al porto 32769 del host.

In questo caso possiamo accedere all'applicazione WEB tramite il browser

Possiamo anche impostare un porto diverso tramite il parametro -p:

w3codebox@w3codebox:~$ docker run -d -p 5000:5000 training/webapp python app.py

docker psVisualizza i container in esecuzione

w3codebox@w3codebox:~#  docker ps
CONTAINER ID        IMAGE                             PORTS                     NAMES
bf08b7f2cd89        training/webapp     ...        0.0.0.0:5000->5000/tcp    wizardly_chandrasekhar
d3d5e39ed9d3  training/webapp  ...  0.0.0.0:32769->5000/tcp  xenodochial_hoov

Il porto 5000 interno del container viene mappato al porto 5000 del nostro host locale.

il modo rapido del porto di rete

attraverso docker ps Il comando può visualizzare la mappatura dei porti dei container,docker e ha fornito un altro modo rapido docker port,fornisce anche un altro modo rapido docker port Puoi visualizzare la mappatura di un porto specifico (ID o nome) del container al porto dell'host.

Il container web che abbiamo creato sopra ha l'ID bf08b7f2cd89  Il nome è wizardly_chandrasekhar.

Posso usare docker port bf08b7f2cd89  o docker port wizardly_chandrasekhar per visualizzare la mappatura dei porti del container.

w3codebox@w3codebox:~$ docker port bf08b7f2cd89
5000/tcp -> 0.0.0.0:5000
w3codebox@w3codebox:~$ docker port wizardly_chandrasekhar
5000/tcp -> 0.0.0.0:5000

Visualizza i log dell'applicazione WEB

docker logs [ID o nome] può visualizzare l'output standard del container interno.

w3codebox@w3codebox:~$ docker logs -f bf08b7f2cd89
 * In esecuzione su http://0.0.0.0:5000/ (Press CTRL+C to quit)
192.168.239.1 - - [09/May/2016 16:30:37] "GET / HTTP/1.1" 200 -
192.168.239.1 - - [09/May/2016 16:30:37] "GET favicon.ico HTTP/1.1" 404 -

-f: Fai docker logs Come usare tail -f Così come esportare l'output standard del container interno.

Da qui, possiamo vedere che l'applicazione utilizza il porto 5000 e possiamo vedere i log di accesso dell'applicazione.

Visualizza i processi del container dell'applicazione WEB

Possiamo anche utilizzare docker top per visualizzare i processi in esecuzione all'interno del container

w3codebox@w3codebox:~$ docker top wizardly_chandrasekhar
UID     PID         PPID          ...       TIME                CMD
root    23245       23228         ...       00:00:00            python app.py

Controlla l'applicazione WEB

使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。

w3codebox@w3codebox:~$ docker inspect wizardly_chandrasekhar
[
    {
        "Id": "bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85",
        "Created": "2018-09-17T01:41:26.174228707Z",
        "Path": "python",
        "Args": [
            "app.py"
        ],
        "State": {
            
            
            
            
            
            
            
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2018-09-17T01:41:26.494185806Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        ,
......

停止 WEB 应用容器

w3codebox@w3codebox:~$ docker stop wizardly_chandrasekhar   
wizardly_chandrasekhar

重启WEB应用容器

已经停止的容器,我们可以使用命令 docker start 来启动。

w3codebox@w3codebox:~$ docker start wizardly_chandrasekhar
wizardly_chandrasekhar

docker ps -l 查询最后一次创建的容器:

#  docker ps -l 
CONTAINER ID        IMAGE                             PORTS                     NAMES
bf08b7f2cd89        training/webapp     ...        0.0.0.0:5000->5000/tcp    wizardly_chandrasekhar

Per i container in esecuzione, possiamo utilizzare il comando docker restart per riavviare.

Rimozione del container dell'applicazione WEB

Possiamo utilizzare il comando docker rm per eliminare i container non necessari

w3codebox@w3codebox:~$ docker rm wizardly_chandrasekhar  
wizardly_chandrasekhar

Quando si elimina un container, deve essere in stato di arresto; altrimenti, viene restituito l'errore seguente

w3codebox@w3codebox:~$ docker rm wizardly_chandrasekhar
Risposta di errore dal demone: Non puoi rimuovere un container in esecuzione bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85. Stoppa il container prima di tentare la rimozione o rimuovi forzatamente