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

Uso de Imagens Docker

Quando você executa um contêiner, se a imagem usada não existir localmente, o Docker automaticamente baixará da biblioteca de imagens Docker, o padrão é baixar do repositório público 'Docker Hub'.

Vamos aprender agora:

  • 1、Gerenciar e usar imagens do host local do Docker

  • 2、Criar imagem

Listar lista de imagens

Podemos usar docker images Para listar as imagens no host local.

w3codebox@w3codebox:~$ docker images           
REPOSITORY         TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               90d5884b1ee0        5 dias atrás          188 MB
php                 5.6                 f40e9e0f10c8        9 dias atrás          444.8 MB
nginx               última              6f8d099c3adc        12 dias atrás         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 semanas atrás         324.6 MB
httpd               última              02ef73cf1bc0        3 semanas atrás         194.4 MB
ubuntu              15.10               4e3b13c8a266        4 semanas atrás         136.3 MB
hello-world         última              690ed74de00f        6 meses atrás        960 B
treinamento/webapp     última              6fae60ef3446        11 meses atrás       348.8 MB

Descrição dos vários opções:

  • REPOSITORY:Representa o repositório da imagem

  • TAG:Etiqueta da imagem

  • IMAGE ID:ID da imagem

  • CREATED:Data de criação da imagem

  • SIZE:Tamanho da imagem

Um repositório pode ter várias TAGs, representando diferentes versões do repositório, por exemplo, no repositório 'ubuntu', há 15.10、14.04 E podemos usar REPOSITORY:TAG para definir diferentes imagens.

Portanto, se quisermos usar várias versões, como15.10Para executar contêineres usando a imagem do sistema 'ubuntu', o comando é o seguinte:

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

参数说明:

  • -i: Operação interativa.

  • -t: Terminal.

  • ubuntu:15.10Isso significa usar 'ubuntu' 15.10 Para iniciar um contêiner com uma imagem de versão específica.

  • /bin/bashO que está após o nome da imagem é o comando, aqui queremos um Shell interativo, então usamos /bin/bash.

Se você quiser usar a versão 14.04 Para executar contêineres usando a imagem do sistema 'ubuntu', o comando é o seguinte:

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

Se você não especificar uma etiqueta de versão de imagem, por exemplo, se você usar apenas 'ubuntu', o Docker usará a imagem padrão 'ubuntu:latest'.

Obter uma nova imagem

Quando usamos uma imagem inexistente no host local, o Docker baixa automaticamente essa imagem. Se quisermos baixar essa imagem previamente, podemos usá-la com o comando docker pull.

Cw3codebox@w3codebox:~$ docker pull ubuntu:13.10
13.10: Puxando do repositório library/ubuntu
6599cadaf950: Puxado completo 
23eda618d451: Puxado completo 
f0be3084efe9: Puxado completo 
52de432f084b: Puxado completo 
a3d95caeb02: Puxado completo 
Digest: sha256:15b79a6654811c8d992ebacdfbd5152fcf3d165e374e264076aa435214a947a3
Status: Nova imagem baixada para ubuntu:13.10

Após o download, podemos usar diretamente essa imagem para executar o contêiner.

Procurar imagem

Podemos procurar imagens no site Docker Hub, o endereço do Docker Hub é:https://hub.docker.com/

Também podemos usar o comando docker search para procurar imagens. Por exemplo, precisamos de uma imagem httpd para nosso serviço web. Podemos procurar por httpd usando o comando docker search para encontrar a imagem adequada para nós.

w3codebox@w3codebox:~$ docker search httpd

NOME: Nome da fonte do repositório da imagem

DESCRICAO: Descrição da imagem

OFICIAL: Se é imagem oficial do docker

stars: Semelhante ao star do Github, significa gostar ou curtir.

AUTOMATIZADO: Construção automática.

Puxar imagem

Decidimos usar o imagem oficial httpd na figura acima, baixando a imagem com o comando docker pull.

w3codebox@w3codebox:~$ docker pull httpd
Usando tag padrão: latest
latest: Puxando do repositório library/httpd
8b87079b7a06: Puxando camada fs 
a3d95caeb02: Download complete 
0d62c9c6a76: Download complete 
a329d50397b9: Download complete 
a7c1f032b5c: Aguardando 
ser44112b72c7: Aguardando

下载完成后,我们就可以使用这个镜像了。

w3codebox@w3codebox:~$ docker run httpd

deletar o espelho

usar para deletar o espelho docker rmi comando, por exemplo, se deletarmos hello-world espelho:

$ docker rmi hello-world

criar o espelho

Quando o espelho baixado do repositório de imagens Docker não atende aos nossos requisitos, podemos alterar o espelho de duas maneiras.

  • 1、atualizar o espelho a partir do contêiner já criado e submeter esse espelho

  • 2、usar instruções Dockerfile para criar um novo espelho

atualizar o espelho

Antes de atualizar o espelho, precisamos usar o espelho para criar um contêiner.

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

usar dentro do contêiner em execução apt-get update comando para atualizar.

Após concluir a operação, insira o comando exit para sair deste contêiner.

Neste momento, o ID é e218edb10161 do contêiner, é o contêiner alterado conforme nossos requisitos. Podemos usar o comando docker commit para submeter uma cópia do contêiner.

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

descrição de cada parâmetro:

  • -m: informação descritiva da submissão

  • -a: especificar o autor do espelho

  • e218edb10161:ID do contêiner

  • w3codebox/ubuntu:v2: especificar o nome do espelho alvo a ser criado

Podemos usar docker images comando para verificar nosso novo espelho w3codebox/ubuntu:v2:

w3codebox@w3codebox:~$ docker images
REPOSITORY         TAG                 IMAGE ID            CREATED             SIZE
w3codebox/ubuntu       v2                  70bf1840fd7c        15 seconds ago      158.5 MB
ubuntu              14.04               90d5884b1ee0        5 dias atrás          188 MB
php                 5.6                 f40e9e0f10c8        9 dias atrás          444.8 MB
nginx               última              6f8d099c3adc        12 dias atrás         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 semanas atrás         324.6 MB
httpd               última              02ef73cf1bc0        3 semanas atrás         194.4 MB
ubuntu              15.10               4e3b13c8a266        4 semanas atrás         136.3 MB
hello-world         última              690ed74de00f        6 meses atrás        960 B
treinamento/webapp     última              6fae60ef3446        12 meses atrás       348.8 MB

usando nosso novo espelho w3codebox/ubuntu para iniciar um contêiner

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

construir o espelho

Nós usamos o comando docker build , a partir do zero para criar um novo espelho. Para isso, precisamos criar um arquivo Dockerfile, que contém um conjunto de instruções para informar ao Docker como construir nosso espelho.

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

Cada instrução criará uma nova camada no espelho, e o prefixo de cada instrução deve ser em maiúsculas.

第一条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 horas atrás         158.5 MB
ubuntu              14.04               90d5884b1ee0        6 dias atrás           188 MB
php                 5.6                 f40e9e0f10c8        10 dias atrás          444.8 MB
nginx               última              6f8d099c3adc        12 dias atrás          182.7 MB
mysql               5.6                 f2e8d6c772c0        3 semanas atrás          324.6 MB
httpd               última              02ef73cf1bc0        3 semanas atrás          194.4 MB
ubuntu              15.10               4e3b13c8a266        5 semanas atrás          136.3 MB
hello-world         última              690ed74de00f        6 meses atrás         960 B
centos              6.7                 d95b5ca17cc3        6 meses atrás         190.6 MB
treinamento/webapp     última              6fae60ef3446        12 meses atrás        348.8 MB

Podemos usar a nova imagem para criar um contêiner

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

Como pode ser visto acima, a nova imagem já contém o usuário que criamos, w3codebox.

Definir rótulo da imagem

Podemos usar o comando docker tag para adicionar um novo rótulo à imagem.

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

docker tag ID_da_imagem, aqui é 860c279d2fec, o nome de usuário, o nome do repositório (repository name) e o novo rótulo (tag).

Pode ver usando o comando docker images, o ID é860c279d2O ícone do FEC tem um rótulo a mais.

w3codebox@w3codebox:~$ docker images
REPOSITORY         TAG                 IMAGE ID            CREATED             SIZE
w3codebox/centos       6.7                 860c279d2fec        5 horas atrás         190.6 MB
w3codebox/centos       dev                 860c279d2fec        5 horas atrás         190.6 MB
w3codebox/ubuntu       v2                  70bf1840fd7c        22 horas atrás        158.5 MB
ubuntu              14.04               90d5884b1ee0        6 dias atrás          188 MB
php                 5.6                 f40e9e0f10c8        10 dias atrás         444.8 MB
nginx               última              6f8d099c3adc        13 dias atrás         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 semanas atrás         324.6 MB
httpd               última              02ef73cf1bc0        3 semanas atrás         194.4 MB
ubuntu              15.10               4e3b13c8a266        5 semanas atrás         136.3 MB
hello-world         última              690ed74de00f        6 meses atrás        960 B
centos              6.7                 d95b5ca17cc3        6 meses atrás        190.6 MB
treinamento/webapp     última              6fae60ef3446        12 meses atrás       348.8 MB