English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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
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'.
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.
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.
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
usar para deletar o espelho docker rmi comando, por exemplo, se deletarmos hello-world espelho:
$ docker rmi hello-world
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
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:/#
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.
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