Pesquisar aqui

segunda-feira, 16 de novembro de 2020

[IDS] Docker: Dockerfile, imagem, distribuição, container e registry

Dockerfile reference

Docker can build images automatically by reading the instructions from a Dockerfile. A Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image. Using docker build users can create an automated build that executes several command-line instructions in succession.

USAGE

The docker build command builds an image from a Dockerfile and a context. The build’s context is the set of files at a specified location PATH or URL. The PATH is a directory on your local filesystem. The URL is a Git repository location.

A context is processed recursively. So, a PATH includes any subdirectories and the URL includes the repository and its submodules. This example shows a build command that uses the current directory as context:

docker build --tag nomedaimagem:tag .

No directório com o trabalho apresentado em "[IDS] Estrutura do ambiente de desenvolvimento: rplotter", é criado o Dockerfile com o editor VIM:

vim Dockerfile

FROM alpine:3.7
MAINTAINER Guilherme Marcello
LABEL description="Imagem com os exemplos dos artigos do Blogger"
WORKDIR aib/
WORKDIR blogger/
COPY . . 

Para gravar o ficheiro :x

home@marcello:~$ ls
development Dockerfile

Fazemos a build da imagem com o nome aib2021marcello/blogger e a tag rplotter:

home@marcello:~$ docker build --tag aib2021marcello/blogger:rplotter .
...
...
Successfully built 80d3e5712bee
Successfully tagged aib2021marcello/blogger:rplotter

Perfeito! A nossa imagem foi criada e tem o id 80d3e5712bee! Para verificar as imagens que existem localmente usamos o seguinte comando:
 
home@marcello:~$ docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
aib2021marcello/blogger   rplotter            80d3e5712bee        0 minutes ago      4.21MB
alpine                    3.7                 6d1ef012b567        20 months ago       4.21MB

Sim, criamos uma "distribuição" do alpine linux personalizada com um tamanho de 4.21MB para os projectos no blogger de AIB!
Para corrermos a "distribuição" em container com o nome primeirocontainer e de forma interativa (iniciamos uma sessão em shell do container) usamos o comando:
 
home@marcello:~$ docker run --name primeirocontainer -it aib2021marcello/blogger:rplotter
/aib/blogger$ ls
Dockerfile   development
/aib/blogger$ exit
home@marcello:~$

 O que isso significa? QUALQUER pessoa com a imagem que fizemos vai ter o mesmo sistema a correr!
 E então...? QUALQUER pessoa com a imagem vai ter o mesmo ambiente, com as mesmas definições!
 Sim...e? QUALQUER pessoa com a imagem vai correr os projectos da MESMA forma!

 Problemas do tipo "preciso da versão X do java para compilar e fazer a build do projecto da empresa YYY...que chatice!" deixam de existir e assim temos maior agilidade no desenvolvimento, debug e deploy! 

 Mas tenho a minha imagem gravada localmente, como alguém pode descarregar a minha imagem e correr um container? Fazemos um push para um registry no Docker Hub, por exemplo. No Docker Hub criei uma conta com o username aib2021marcello e criei um repositório público (qualquer pessoa com docker pode fazer pull da minha imagem) com o nome blogger (sim, o mesmo nome da imagem que fizemos, aib2021marcello/blogger). Assim, podemos fazer o push da nossa imagem para o Docker Hub! 
    1. Primeiro é preciso fazer o login (autenticação) com a nossa conta do Docker Hub (com as mesmas credenciais):

home@marcello:~$ docker login
...
...
Login Succeeded

    2. Depois fazemos o push da nossa imagem:

home@marcello:~$ docker push aib2021marcello/blogger:rplotter

    3. Verificar se a imagem está no Docker Hub:

    4. Fazer pull da imagem no registry (poderia ser feito em qualquer computador com docker, sem precisar da autenticação, uma vez que o repositório é público):

home@marcello:~$ docker pull aib2021marcello/blogger:rplotter

    5. Começar a dockerizar o que quiser!

Sem comentários:

Enviar um comentário

Comente de forma construtiva...

Nota: só um membro deste blogue pode publicar um comentário.