Вы находитесь на странице: 1из 25

Docker – Solução de Container

Índice

• O que vimos até agora.


• Containers
• Volumes
• Volumes Somente Leitura
• Data-Only Container
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