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

Docker镜像使用

Quando si esegue un container, se l'immagine utilizzata non esiste localmente, Docker la scarica automaticamente dal deposito delle immagini Docker, per default dal deposito pubblico Docker Hub.

Ora esaminiamo:

  • 1、Gestire e utilizzare le immagini locali del host Docker

  • 2、Creare un'immagine

Elenca l'elenco delle immagini

Possiamo utilizzare docker images per elencare le immagini presenti sul nostro host locale.

w3codebox@w3codebox:~$ docker images           
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               90d5884b1ee0        5 days ago          188 MB
php                 5.6                 f40e9e0f10c8        9 days ago          444.8 MB
nginx               latest              6f8d099c3adc        12 days ago         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago         324.6 MB
httpd               latest              02ef73cf1bc0        3 weeks ago         194.4 MB
ubuntu              15.10               4e3b13c8a266        4 weeks ago         136.3 MB
hello-world         latest              690ed74de00f        6 months ago        960 B
training/webapp	latest				6fae60ef3446			11 mesi fa			348.8 MB

Spiegazione delle opzioni:

  • REPOSITORY:Rappresenta il deposito dell'immagine

  • TAG:Tag dell'immagine

  • IMAGE ID:ID dell'immagine

  • CREATED:Data di creazione dell'immagine

  • SIZE:Dimensione dell'immagine

Un deposito può avere più TAG, che rappresentano diverse versioni di questo deposito. Ad esempio, nel deposito ubuntu ci sono diverse versioni come 15.10, 14.04, ecc. Usiamo REPOSITORY:TAG per definire diverse immagini.

Quindi, se vogliamo eseguire un container utilizzando l'immagine di sistema ubuntu con versione 15.10, il comando è il seguente:

w3codebox@w3codebox:~$ docker run -t -i ubuntu:15.10 /bin/bash 
root@d77ccb2e5cca:/#

参数说明:

  • -i: Operazioni interattive.

  • -t: Terminale.

  • ubuntu:15.10: Questo indica che il container viene avviato con l'immagine di versione ubuntu 15.10.

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

Se vuoi eseguire un container utilizzando l'immagine di sistema ubuntu con versione 14.04, il comando è il seguente:

w3codebox@w3codebox:~$ docker run -t -i ubuntu:14.04 /bin/bash 
root@39e968165990:/#

Se non specifichi un tag di versione dell'immagine, ad esempio usi solo ubuntu, Docker utilizzerà per default l'immagine ubuntu:latest.

Ottenere una nuova immagine

Quando utilizziamo un'immagine non esistente sul nostro host locale, Docker scarica automaticamente questa immagine. Se vogliamo scaricare preventivamente questa immagine, possiamo utilizzare il comando docker pull per farlo.

Cw3codebox@w3codebox:~$ docker pull ubuntu:13.10
13.10: Trazione da library/ubuntu
6599cadaf950: Scaricamento completato 
23eda618d451: Scaricamento completato 
f0be3084efe9: Scaricamento completato 
52de432f084b: Scaricamento completato 
a3ed95caeb02: Scaricamento completato 
Digest: sha256:15b79a6654811c8d992ebacdfbd5152fcf3d165e374e264076aa435214a947a3
Stato: Nuova immagine scaricata per ubuntu:13.10

Dopo il completamento del download, possiamo utilizzare direttamente questa immagine per eseguire il container.

Cerca immagine

Possiamo cercare immagini sul sito Docker Hub, l'indirizzo di Docker Hub è:https://hub.docker.com/

Possiamo anche utilizzare il comando docker search per cercare immagini. Ad esempio, se abbiamo bisogno di un'immagine httpd come servizio web, possiamo cercare httpd utilizzando il comando docker search per trovare l'immagine adatta a noi.

w3codebox@w3codebox:~$ docker search httpd

NOME: Nome della sorgente del deposito delle immagini

DESCRIZIONE: Descrizione dell'immagine

UFFICIALE: Pubblicato ufficialmente da docker

stars: Simile a star su Github, significa like e preferito.

AUTOMATICO: Costruzione automatica.

Scaricare l'immagine

Abbiamo deciso di utilizzare l'immagine ufficiale httpd dell'immagine sopra, scaricare l'immagine utilizzando il comando docker pull.

w3codebox@w3codebox:~$ docker pull httpd
Utilizzando il tag predefinito: ultimo
Ultimo: Trazione da library/httpd
Trazione dello strato fs 
Scaricamento completato 
Scaricamento completato 
Scaricamento completato 
ea7c1f032b5c: In attesa 
be44112b72c7: In attesa

Dopo aver completato il download, possiamo utilizzare questa immagine.

w3codebox@w3codebox:~$ docker run httpd

Eliminazione immagine

Utilizzo per eliminare l'immagine docker rmi Il comando, ad esempio, possiamo eliminare l'immagine hello-world:

$ docker rmi hello-world

Creazione immagine

Quando l'immagine scaricata dal deposito delle immagini docker non soddisfa le nostre esigenze, possiamo modificare l'immagine attraverso due modi seguenti.

  • 1、Aggiornare l'immagine dal container già creato e inviare questa immagine

  • 2、Utilizzare l'istruzione Dockerfile per creare una nuova immagine

Aggiornamento immagine

Prima di aggiornare l'immagine, dobbiamo utilizzare l'immagine per creare un container.

w3codebox@w3codebox:~$ docker run -t -i ubuntu:15.10 /bin/bash
root@e218edb10161:/#

Usare nel container in esecuzione apt-get update Il comando esegue l'aggiornamento.

Dopo aver completato l'operazione, digitare il comando exit per uscire dal container.

In questo momento, il container con ID e218edb10161 è stato modificato secondo le nostre esigenze. Possiamo utilizzare il comando docker commit per inviare una copia del container.

w3codebox@w3codebox:~$ docker commit -m="has update" -a="w3codebox" e218edb10161 w3codebox/ubuntu:v2
sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8

descrizione dei vari parametri:

  • -m: descrizione delle informazioni inviate

  • -a: specificare l'autore dell'immagine

  • e218edb10161:ID del container

  • w3codebox/ubuntu:v2: specificare il nome dell'immagine da creare

Possiamo utilizzare docker images il comando per visualizzare i nostri nuovi immagine w3codebox/ubuntu:v2:

w3codebox@w3codebox:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
w3codebox/ubuntu       v2                  70bf1840fd7c        15 secondi fa      158.5 MB
ubuntu              14.04               90d5884b1ee0        5 days ago          188 MB
php                 5.6                 f40e9e0f10c8        9 days ago          444.8 MB
nginx               latest              6f8d099c3adc        12 days ago         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago         324.6 MB
httpd               latest              02ef73cf1bc0        3 weeks ago         194.4 MB
ubuntu              15.10               4e3b13c8a266        4 weeks ago         136.3 MB
hello-world         latest              690ed74de00f        6 months ago        960 B
training/webapp     latest              6fae60ef3446        12 months ago       348.8 MB

usando la nostra nuova immagine w3codebox/ubuntu per avviare un container

w3codebox@w3codebox:~$ docker run -t -i w3codebox/ubuntu:v2 /bin/bash                            
root@1a9fbdeb5da3:/#

costruire l'immagine

Usiamo il comando docker build , dal principio per creare una nuova immagine. Per fare questo, dobbiamo creare un file Dockerfile che contenga una serie di istruzioni per dire a Docker come costruire la nostra immagine.

w3codebox@w3codebox:~$ cat Dockerfile 
DAL                   centos:6.7
MAINTENITORE                     Fisher "[email protected]"
ESEGUITO             /bin/echo 'root:123456' |chpasswd
ESEGUITO             useradd w3codebox
ESEGUITO             /bin/echo 'w3codebox:123456' |chpasswd
ESEGUITO             /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
ESPOSA               22
ESPOSA               80
CMD                 /usr/sbin/sshd -D

每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。

第一条FROM,指定使用哪个镜像源

RUN指令告诉docker在镜像内执行命令,安装了什么。。。

然后,我们使用Dockerfile文件,通过docker build命令来构建一个镜像。

w3codebox@w3codebox:~$ docker build -t w3codebox/centos:6.7 .
Sending build context to Docker daemon 17.92 kB
Step 1 : FROM centos:6.7
 ---> d95b5ca17cc3
Step 2 : MAINTAINER Fisher "[email protected]"
 ---> Using cache
 ---> 0c92299c6f03
Step 3 : RUN /bin/echo 'root:123456' |chpasswd
 ---> Using cache
 ---> 0397ce2fbd0a
Step 4 : RUN useradd w3codebox
......

参数说明:

  • -t :指定要创建的目标镜像名

  • . :Dockerfile文件所在目录,可以指定Dockerfile的绝对路径

使用docker images查看创建的镜像已经在列表中存在,镜像ID为860c279d2fec

w3codebox@w3codebox:~$ docker images 
REPOSITORY                                         TAG                                         IMAGE ID                                 CREATED                                 SIZE
w3codebox/centos                                 6.7                                         860c279d2fec                         About a minute ago                     190.6 MB
w3codebox/ubuntu                                   v2                                         70bf1840fd7c                         17 hours ago                             158.5 MB
ubuntu                                         14.04                                         90d5884b1ee0                         6 days ago                                 188 MB
php                 5.6                 f40e9e0f10c8        10 days ago          444.8 MB
nginx               latest              6f8d099c3adc        12 days ago          182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago          324.6 MB
httpd               latest              02ef73cf1bc0        3 weeks ago          194.4 MB
ubuntu              15.10               4e3b13c8a266        5 weeks ago          136.3 MB
hello-world         latest              690ed74de00f        6 months ago         960 B
centos              6.7                 d95b5ca17cc3        6 months ago         190.6 MB
training/webapp     latest              6fae60ef3446        12 months ago        348.8 MB

Possiamo utilizzare l'immagine nuova per creare il container

w3codebox@w3codebox:~$ docker run -t -i w3codebox/centos:6.7  /bin/bash
[root@41c28d18b5fb /]# id w3codebox
uid=500(w3codebox) gid=500(w3codebox) groups=500(w3codebox)

Dal di sopra si vede che il nuovo immagine contiene l'utente che abbiamo creato, w3codebox.

Impostare l'etichetta dell'immagine

Possiamo utilizzare il comando docker tag per aggiungere un nuovo etichetta all'immagine.

w3codebox@w3codebox:~$ docker tag 860c279d2fec w3codebox/centos:dev

docker tag 镜像ID,qui 860c279d2fec, nome utente, nome repository (repository name) e il nuovo nome etichetta (tag).

Utilizzando il comando docker images è possibile vedere che l'immagine con ID 860c279d2fec ha un etichetta in più.

w3codebox@w3codebox:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
w3codebox/centos       6.7                    860c279d2fec        5 hours ago         190.6 MB
w3codebox/centos       dev                    860c279d2fec        5 hours ago         190.6 MB
w3codebox/ubuntu       v2                    70bf1840fd7c        22 hours ago        158.5 MB
ubuntu              14.04                90d5884b1ee0        6 days ago          188 MB
php                 5.6                 f40e9e0f10c8        10 days ago         444.8 MB
nginx               latest                6f8d099c3adc        13 days ago         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago         324.6 MB
httpd               latest              02ef73cf1bc0        3 weeks ago         194.4 MB
ubuntu              15.10               4e3b13c8a266        5 weeks ago         136.3 MB
hello-world         latest              690ed74de00f        6 months ago        960 B
centos              6.7                 d95b5ca17cc3        6 months ago        190.6 MB
training/webapp     latest              6fae60ef3446        12 months ago       348.8 MB