Você está na página 1de 31

Docker – Solução de Container

Índice

• Alterando Imagens
• DockerFile
• Gerando Imagens
• Opções do DockerFile
• Criando uma imagem HTTP
• Criando uma imagem Mysql – Básica
• Estudo da criação de uma imagem Mysql do zero
• Compartilhando uma Imagem no DockerHub
Alterando imagens

• É possível alterar uma imagem já pronto, para tanto devemos


executar o container dessa imagem, fazer as alterações e salvar
tais alterações nessa imagem.
• O salvamento se dá através do comando commit.
• Vamos fazer o processo de baixar uma imagem limpa, instalar o
apache , executar e posteriormente salvar.
Processo de alteração de Imagem

1. Executar o containier : docker run –ti debian:9apt-get /bin/bash


2. Instalar os pacotes necessários: apt-get update && apt-get install
apache2
3. Salvar imagem: docker commit –m apache2 “CONTAINERID”
4. Mudar a tag: docker tag IMAGEID blostato/apache_2:1.0
Executando nossa imagem
• Uma vez salva, podemos executar nossa imagem diretamente do
repositório local.

docker run –ti blogstato/apache_2:1.0 /bin/bash


service apache2 start
Sair (ctrl +p +q )
docker ps
Dockerfile

• O Dockerfile é um simples arquivo de texto que contêm as


configurações e comandos definidos, que quando executado o
docker image build <diretório> ou docker build <diretório> irá
executar este conteúdo para criar uma imagem.
• Basicamente como um Makefile, onde é passado todas
informações para criação de seu container.
Criando um Hello Word

• Iremos criar uma imagem, que irá executar um Hello Word


quando instanciada em um container.
• Mas num primeiro passo veremos o conteúdo do Dockerfile

• Acima informamos através da palavra FROM qual nossa imagem


base e através do comando RUN o que será executado quando a
imagem subir através de um container.
Gerando a imagem

Uma vez feito o arquivo Dockerfile, devemos executar o comando


docker image build ou docker build para gerar nossa primeira
imagem.
Gerando a imagem

Geramos um simples imagem que executa um echo “Hello world!”.


Podemos visualizar nossa imagem, na lista de imagens locais,
através do docker images.
Gerando a imagem
Note que existe uma imagem cujo REPOSITORY está como <none>.
Isto por não termos passado informações necessárias para que
estes dados sejam preenchidos.
Para tanto devemos ver algumas opções que podem ser usadas no
Dockerfile para gerar uma imagem com mais informações.
Mas ainda sim podemos mudar estar informações :
Utilizando o mesmo Dockerfile, executamos novamente o build,
mas agora com a opção –t de tag, para alterar o nome
(REPOSITORY) e versão (TAG).
Gerando a imagem

Podemos ver agora com o docker images, já temos informações


sobre nome e versão.
Algumas Opções do Dockerfile

Vejamos algums opções interessantes do Dockerfile

Opção Descrição
FROM Diz ao docker qual imagem base irá
ser utilizado.
RUN Executa comando no momento que a
imagem está sendo gerada.
LABEL Usado para adicionar informações na
imagem. Como número da versão,
descrição e outros.
COPY Copia arquivos e diretórios para o
filesystem do container.
Algumas Opções do Dockerfile
Opção Descrição
ADD Copia arquivos e diretório, e quando
arquivos .tar, já descompacta no
filesystem do container.
EXPOSE Informa qual porta e protocolo será
ouvida no container.
ENV Configura variáveis detro da imagem
e quando o container é executado.
ENTRYPOINT Configura um comando para ser
executado, e caso esse comando para
o container também será parado.
Algumas Opções do Dockerfile
Opção Descrição
USER Especifica qual usuário será utilizado
na imagem, por padrão root.
WORKDIR Ele altera o diretório para o
especificado. Em seguida pode ser
usado comandos como RUN, CMD
passados posteriormente.
VOLUME Permite a criação de um volume no
container.
Criando imagem http
Abaixo temos o Dockerfile para criação de uma image com um
servidor WEB.

Vamos criar as pastas e locais onde usaremos para criar a imagem,


e montar o volume.

mkdir /root/apache
mkdir –p /var/docker/apache
cd /root/apache
vim index.html
Criando imagem http

Vamos criar o Dockerfile:

vim /root/apache/Dockerfile
Build

Iremos agora de fato criar a imagem:

docker build . –t webserver:v1


Executando o container da imagem
Iremos neste momento subir o container dessa nova imagem:
Criando uma imagem mysql
Veremos agora como criar um imagem de mysql, com um banco já
incluso. A primeira coisa a ser feita é criar os scripts mysql.

mkdir /root/mysql/sql-scripts –p
vim /root/mysql/sql-scripts/CreateTable.sql
Criando uma imagem mysql

Agora vamos criar um arquivo para inserir informação a tabela,


chamado InsertData.sql.
Criando uma imagem mysql
Agora vamos criar um arquivo para inserir informação a tabela,
chamado InsertData.sql.

Ao finalizarmos o arquivo , termos a seguinte estrutura:


DockerFile para mysql

Iremos gerar nosso Dockerfile em /root/mysql.

Gerando a imagem:
Enfim executando container

Iremos agora executar nosso container, e para isso devemos passar


informação de senha através da variável MYSQL_ROOT_PASSWORD.
Verificando os dados

Veremos que nosso banco foi criado e os dados adicionados, pois


todos scripts colocados em docker-entrypoint-initdb.d são
automaticamente executados durante inicialização do container.
Verificando os dados

Veremos que nosso banco foi criado e os dados adicionados, pois


todos scripts colocados em docker-entrypoint-initdb.d são
automaticamente executados durante inicialização do container.
Criando uma imagem Mysql do zero

Para fins de aprendizado veremos o processo de configuração de


uma imagem a partir de uma imagem ubuntu. Iniciamos com o
Dockerfile.
Script Startup.sh

Neste arquivo iremos configurar o mysql para permitir conexões de


qualquer lugar.
Gerando a Imagem
O mesmo procedimento visto anteriormente e executando
run.

docker build –t mysql .


docker run –d –p 3306:3306 –v /daa/mysql/var/lib/mysql mysql
Compartilhando uma imagem
Podemos compartilhar nossas imagens depois de prontos no
DockerHub. Para isso é necessário a criação de uma conta no
dockerhub https://hub.docker.com/.
Após isso usar o comando docker login, para fazer login no
DockerHub
Compartilhando uma imagem

Agora o momento de compartilhar. As imagens deve estar no


padrão login_docker/nome_imagem:versão, como no caso da
blogstato/apache_2:1.0.
Devemos então executar o comando push do docker.

docker push blogstato/apache_2:1.0


Compartilhando uma imagem

Após feito upload, podemos verificar em nossa tela do DockerHub,


nossa imagem já disponível para download.

Você também pode gostar