Escolar Documentos
Profissional Documentos
Cultura Documentos
São dois métodos para que a gente possa criar as nossas próprias imagens, porém
elas possuem algumas diferenças que vamos apresentar mais para frente.
## Docker Commit
É um processo simplificado para realizarmos testes. Com ele, é possível suprir a
necessidade da volatilidade dos containers, ou seja, agora eu consigo ter meus
dados persistidos.
Mas ela traz uma grande desvantagem, pois toda vez que eu preciso fazer uma
alteração na minha imagem, eu necessito recarregar ela, eu preciso restartar o
container(ou o processo mesmo)
## Docker Build
O docker build é uma grande forma de criarmos ambientes em produção. A ideia dele é
automatizar a criação de imagens e é um processo baseado em instruções. O mais
interessante é que ele funciona basicamente como uma grande documentação do
ambiente
já que utiliza o arquivo **Dockerfile** para configurar o ambiente.
Para montar nossa imagem, vamos precisar criar um arquivo simples chamado
Dockerfile com alguns comandos
```
FROM debian
RUN apt-get update
RUN apt-get install apache2 -y
```
Pronto!! Agora, basta buildar a nossa imagem com o comando `docker build -t
nome_que eu_desejo_minha_imagem`. A opção -t é para tag da imagem
Depois, basta startar o nosso container normalmente com o comando `docker run -d --
name nome_do_container -p 8080:80 minha_imagem usr/sbin/apache2ctl -D
FOREGROUNDcutr`
### DockerFile
- **FROM**: É a imagem que base do nosso container
- **RUN**: Permite a execução de comandos do tipo shell script. Esses comandos
podem ser escritos de duas formas: shell form ou json syntax. Veja o exemplo de
ambos abaixo.
![aaa](imagens/plain-stringXjson.png)
- **COPY**: Cópia arquivos do diretórios atual do host(build context) para dentro
da imagem. `Ex: COPY ./ app`
- **WORKDIR**: Instrui onde estão localizado o meu diretório de trabalho para criar
instruções do tipo RUN, CMD, ENTRYPOINT, COPY.
```
# Saída do pwd - a/b/c
WORKDIR /a
WORKDIR b
WORDIR C
RUN pwd
```
- **EXPOSE**: define um socket para coneSxão que deve ser exposto quando a imagem
for buildada. Ou seja, ainda precisamos do comando docker run -p ou -P para
informar quais são as portas
```
EXPOSE 80/tcp
EXPOSE 80
```
- **VOLUME**: Ele informa quais serão os volumes a serem mapeados, assim eliminando
a necessidade de usar o `docker run - v VOLUME`
```
VOLUME /var/www/html
VOLUME /data
```
Por padrão, algumas imagens vem com uma instrução padrão para ser executada como as
base images que vem com o /bin/bash, o do apache que vem com um ele como comando
padrão em foreground. Elas simbolizam o motivo dessas imagens existirem, porém
essas instruções podem ser rescritas
```shell
docker run --rm -it --name c1 --entrypoint ps wesle-araujo/entrypoint2:1.0 aux
```
##
https://github.com/docker/compose/releases/download/X.XX.XX/docker-compose-`uname -
s`-`uname -m` -o /usr/local/bin/docker-compose
https://github.com/docker/compose/releases/tag/v2.17.1/docker-compose-linux-x86_64
https://github.com/docker/compose/releases/download/v2.17.1/docker-compose-linux-
x86_64