Use o Dockerfile para criar uma imagem
O Dockerfile usa DSL (Linguagem Específica de Domínio) para criar uma imagem do Docker.Depois de editar o arquivo Dockerfile, você pode usar docker build
comandos para criar uma nova imagem.
Primeiro, criamos uma pasta vazia e criamos um arquivo chamado Dockerfile sob a pasta.
toque em Dockerfile
Edite este arquivo Dockerfile para adicionar o conteúdo mostrado abaixo.
vim Dockerfile # version: 0.0.1 DO ubuntu: 14.04 MAINTAINER jackfrued "[email protected]" EXECUTE o apt -get update && apt-get install - e o nginx RUN ecoa 'olá, mundo!' > / usr / share / nginx / html / index.html EXPOSIÇÃO 80
Vamos explicar o arquivo Dockerfile acima. O arquivo Dockerfile especifica a imagem básica (instrução FROM), o comando que precisa ser especificado após a criação do contêiner (instrução RUN) e a porta (EXPOSE) que precisa ser exposta por meio de instruções especiais. Nós apresentaremos esses comandos do Dockfile para você posteriormente.
Em seguida, podemos usar o docker build
comando para criar o espelho, como mostrado abaixo.
docker build -t = "jackfrued / servidor da web".
Dica:
.
Não perca o último comando acima , significa encontrar o Dockerfile a partir do caminho atual.
Você pode visualizar a imagem criada pelo seguinte comando.
imagens do docker
TAG DE REPOSITÓRIO ID DA IMAGEM TAMANHO CRIADO
jackfrued / webserver mais recente 87d6cb096be2 23 minutos atrás 222 MB
Se você quiser saber como o arquivo de imagem é criado, use o seguinte comando.
histórico do docker jackfrued / servidor da web IMAGEM CRIADA POR TAMANHO 87d6cb096be2 25 minutos atrás / bin / sh -c # (nop) EXPOSIÇÃO 80 / tcp 0 B 53d3bc3a123e há 25 minutos / bin / sh -c service nginx start 3 B 10646b63275e há 25 minutos / bin / sh -c echo 'olá, mundo!' > / usr / sha ... 14 B f3e3bf3e998e há 25 minutos / bin / sh -c apt-get update && apt-get insta ... 34,3 MB c98e22cf5a64 há 26 minutos / bin / sh -c # (nop) MANUTENÇÃO jackfrued "j ... 0 B 2c5e00d77a67 3 meses atrás / bin / sh -c # (nop) CMD [" / bin / bash "] 0B <missing> há 3 meses / bin / sh -c mkdir -p / run / systemd && echo '... 7 B <missing> há 3 meses / bin / sh -c rm -rf / var / lib / apt / lists / * 0 B <missing> 3 meses atrás / bin / sh -c set -xe && echo '#! / bin / sh'> ... 195 kB <missing> 3 meses atrás / bin / sh -c # ( nop) ADICIONAR arquivo: 1e01ab604c0cc30 ... 188 MB
Use esta imagem para criar um contêiner para executar um servidor da web.
docker execute -d -p 80:80 --name mywebserver jackfrued / webserver nginx -g "daemon off;"
Se você deseja colocar o arquivo de imagem criado acima no armazém dockerhub, siga as etapas mostradas abaixo.
Efetue login no dockerhub com o seguinte comando.
login do docker
Digite o nome de usuário e a senha para efetuar login.
Entre com seu ID do Docker para enviar e receber imagens do Docker Hub. Se você não possui um ID do Docker, acesse https://hub.docker.com para criar um.
Nome de usuário: jackfrued
Senha:
Login Sucedido
Envie a imagem para o armazém com o seguinte comando.
docker push jackfrued / servidor da web
Instrução Dockerfile
Se você deseja conhecer as instruções do Dockerfile, consulte o manual de referência oficial.A seguir, apresentamos algumas instruções comuns para você.
-
FROM: defina a imagem básica, que deve ser a primeira instrução no Dockerfile.
FROM <nome do espelho> [AS <alias> ] ou FROM <nome do espelho> [: <tag>] [AS <alias>]
-
EXECUTAR: Especifique o comando a ser executado ao criar a imagem.
EXECUTAR <comando> [parâmetro 1], [parâmetro 2], ... ou EXECUTAR [ "arquivo executável", "parâmetro 1", "parâmetro 2", ...]
-
CMD: especifique o comando a ser executado após criar a imagem.
CMD <Command> [Parâmetro 1], [Parâmetro 2], ... ou CMD [ "Executável", "Parâmetro 1", "Parâmetro 2", ...]
Nota: O Docker é diferente de uma máquina virtual.O próprio contêiner é um processo, e o aplicativo no contêiner deve estar em execução em primeiro plano. O comando CMD é equivalente a especificar o processo principal do contêiner (o programa a ser executado em primeiro plano após a criação do contêiner) .Se o processo principal terminar, o contêiner interromperá a execução. Portanto, iniciar o Nginx no contêiner não pode ser usado
service nginx start
ousystemctl start nginx
deve serCMD ["nginx", "-g", "daemon off;"]
executado em primeiro plano , deixando-o. -
ENTRYPOINT: semelhante ao CMD, você também pode executar comandos, mas
docker run
todos os parâmetros especificados na linha de comando serão passados como parâmetros para os comandos na instrução ENTRYPOINT novamente, o que nos permite criar um espelho que possa executar um comando padrão, Ele também suporta adocker run
especificação de opções de parâmetros substituíveis para o comando através da linha de comando.ENTRYPOINT <comando> [parâmetro 1], [parâmetro 2], ... ou ENTRYPOINT [ "arquivo executável", "parâmetro 1", "parâmetro 2", ...]
WORKDIR: Ao criar um novo contêiner por meio de uma imagem, um diretório ativo é criado dentro do contêiner e os programas especificados por ENTRYPOINT e CMD serão executados nesse diretório. Ao usar
docker run
comandos, você pode usar-w
parâmetros para substituir o diretório de trabalho especificado por WORKDIR. Por exemplo: -
WORKDIR /opt/webapp
docker execute -w / usr / share / webapp ...
-
ENV: defina variáveis de ambiente ao criar uma imagem. Ao usar
docker run
comandos, você pode-e
modificar as configurações de variáveis de ambiente através de parâmetros. Por exemplo:ENV DEFAULT_PORT = 8080 docker run -e "DEFAULT_PORT = 8000" ...
-
USUÁRIO: Especifique o usuário sob o qual a imagem será executada. Por exemplo:
USUÁRIO nginx
-
VOLUME: adicione um ponto de montagem do volume de dados ao criar um contêiner. A operação de volume de dados pode realizar o compartilhamento e a reutilização de dados entre contêineres. As alterações feitas no volume podem entrar em vigor imediatamente sem reiniciar o contêiner. Utilizamos os
—volume
parâmetros ao criar o contêiner para realizar a operação de mapeamento do volume de dados.VOLUME ["/ caminho1", "/ caminho2 / caminho2.1/", ...]
-
ADD: Copie os arquivos e pastas no diretório build para a imagem.Se os arquivos forem compactados e arquivados, o comando ADD descompactará e arquivará esses arquivos.
ADICIONAR [--chown = <usuário>: <grupo de usuários>] <arquivo de origem> <arquivo de destino>
-
COPY: Muito semelhante ao ADD, mas não extrai arquivos ativamente.
-
ETIQUETA: Adicione alguns metadados à imagem do Docker.
docker inspect
Você verá esses metadados ao usar o comando.LABEL version = "1.0.0" location = "Chengdu"
-
ONBUILD: Adicione um gatilho ao espelho.Quando um espelho é usado como espelho base de outros espelhos, o gatilho será executado. Por exemplo:
COMPLETO ADICIONE. / app / src Execute ONBUILD cd / app / src && make