Introdução
O objetivo desse post é aprender a utilização do Docker no Ubuntu.
Instalação
Verificar versão do Kernel
Esse comando serve para validar a versão do Kernel. Esta versão deverá ser superior a 3.8.
# uname -r
Instalando o Docker
# curl -sSL https://get.docker.com | sh
Subindo o Docker
# /etc/init.d/docker start
Verificando se o Docker está no ar
# docker ps
Ou
# ps -ef | grep docker
Rodando uma imagem
Verificando as imagens
# docker images
Rodando e instalando o Ubuntu
Rodando o comando abaixo, na primeira vez, será baixado o Ubuntu, na versão informada.
# docker run -i -t ubuntu:17.10 /bin/bash
Ao final do processo, o Container será iniciado, sendo possível verificar que mudou o prompt do console.
Exemplo: root@6d9436afdb02:/#
Matando o Container
# CTRL + d
ATENÇÃO: Esse comando fará com que o Container encerre. Não será mais possível executá-lo. Quaiques modificações e/ou instalações serão PERDIDAS!
Sair do Container sem encerrar.
root@6d9436afdb02:/# CTRL + p + q (control + p + q)
# docker ps (verifique que o processo continua rodando)
Voltando para o Container
# docker ps
# docker attach [[CONTAINER_ID]]
Exemplo:
root@CCE:/home/fernando# docker attach 6d9436afdb02
root@6d9436afdb02:/#
Instalando ferramentas / aplicativos
NGinx
- Crie o Container – # docker run -i -t -p 8080:80 ubuntu:17.10 /bin/bash
- Redirecionando a porta 8080 fora do Container, na porta 80 (dentro do Container)
- Instale o NGinx – # apt-get install nginx
- Caso falhe – # apt-get update
- /etc/init.d/nginx start
- Abra um navegador e digite: http://localhost:8080
Verificando instalações efetuadas no Container
Fora do Container, digite
# docker diff [[CONTAINER_ID]]
Salvando o Container modificado
Podemos gerar uma imagem, fazendo o commit.
# docker commit [[CONTAINER_ID]] [[NOME_DA_IMAGEM:[[VERSAO]]
Exemplo:
# docker commit bae5725fbdc2 nginx-ubuntu:1.0
# docker images
Subindo novo Container com base na imagem
# docker run -i -t -p 6660:80 nginx-ubuntu:1.0 /bin/bash
Agora, temos 2 containers respondendo na porta 8080 e 6660.
Parando um Container fora dele
# docker stop [[CONTAINER_ID]]
Rodando comandos fora do container
Preparação
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
badtux/nginx-ubuntu 1.0 004a02a614ec 22 hours ago 192MB
ubuntu 17.10 26d147d2310f 25 hours ago 96.6MB
# docker run -ti -p 8080:80 badtux/nginx-ubuntu:1.0 /bin/bash
# /etc/init.d/nginx start
# CTRL + p + q
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c0907ccd5120 badtux/nginx-ubuntu:1.0 “/bin/bash” 49 seconds ago Up 46 seconds 0.0.0.0:8080->80/tcp friendly_heisenb
# docker exec c0907ccd5120 ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 22:13 ? 00:00:00 /bin/bash
root 31 1 0 22:13 ? 00:00:00 nginx: master process /usr/sbin/nginx
www-data 32 31 0 22:13 ? 00:00:00 nginx: worker process
www-data 33 31 0 22:13 ? 00:00:00 nginx: worker process
www-data 34 31 0 22:13 ? 00:00:00 nginx: worker process
www-data 35 31 0 22:13 ? 00:00:00 nginx: worker process
root 38 0 0 22:14 ? 00:00:00 ps -ef
# docker exec c0907ccd5120 /etc/init.d/nginx stop
Verificando as informações do Container
# docker inspect c0907ccd5120
Mostra uma série de informações como o IP do Container, Porta do Container, quando foi criado, etc.
#docker stats
Mostra um resumo do Container em relação a consumo de CPU, Memória e Rede.
# docker stop c0907ccd5120
# docker ps
# docker start c0907ccd5120
# docker rm c0907ccd5120 (ATENÇÃO: remove o Container e não será possível utilizá-lo mais)
Removendo a Imagem
# docker images
# docker rmi [[IMAGE_ID]]
# docker rmi -f [[IMAGE_ID]]
Comunicação entre containers
# docker run -it –name web02 –link friendly_heisenb:web01 badtux/nginx-ubuntu:1.0
# ping web01
Criando Dockerfile
Aguarde!