Tabla de contenido
- 1 1- O que é o docker?
- 2 2- Quais são as vantagens?
- 3 3- Como posso utilizá-lo?
- 4 4- Comandos úteis
Olá, há algum tempo que quero fazer este artigo sobre como começar a trabalhar com o docker.
Agradecemos que partilhe este artigo nas suas redes sociais e/ou deixe um comentário.
Vamos começar!
1- O que é o docker?
Há pessoas que consideram o docker um sistema de virtualização como a KVM, Vmware, etc. Isto é falso. Docker é um sistema de contentores como o LXC, mas mais avançado. Tem uma melhor gestão das instâncias levantadas e dispõe de um sistema de gestão de modelos.
Por outras palavras, o Docker é um sistema para abstrair a aplicação e tornar o seu ecossistema independente do sistema operativo. Isto significa que tudo configurado dentro de um contentor funciona correctamente em qualquer sistema operativo com o docker instalado.
2- Quais são as vantagens?
As vantagens são várias, dependendo daquilo a que o comparamos.
Se o compararmos com aplicações em execução directa num sistema, a principal vantagem é a compatibilidade, uma vez que o que foi testado no contentor, no mesmo contentor num outro sistema funcionará da mesma forma.
Se nos referirmos à vantagem sobre a utilização de uma virtualização completa, a principal vantagem é que cada contentor utiliza praticamente a memória da aplicação, enquanto que uma instância de KVM, Vmware, etc. também requer consumo de memória para o kernel do sistema virtual, etc.
Outra vantagem é que se pode executar aplicações como se tivesse um sistema diferente. Ou seja, no sistema anfitrião temos um sistema CentOS por exemplo e no contentor podemos ter, Free BSD ou Debian, ou Arch ou qualquer outro. Assim, se funcionar melhor num sistema do que no anfitrião, podemos utilizar esta vantagem.
3- Como posso utilizá-lo?
Pode ser utilizado para criar ambientes de desenvolvimento e depois carregar o contentor para a produção (ter em mente que antes de colocar qualquer coisa em produção com o docker, o hospedeiro e o contentor devem ser assegurados para evitar problemas). Desta forma, podemos evitar problemas nas implementações de códigos.
A primeira coisa a fazer é instalar o docker. No CentOS é feito da seguinte forma: #yum install docker -y
Em debian e derivados: #apt install docker.io
Após a sua instalação, se for um sistema moderno, baseado no systemd, elevamos o serviço: #systemctl start docker
Se não tiver systemd, corra #service docker start
4- Comandos úteis
Iniciar contentores (mesmo que as imagens não tenham sido descarregadas):
docker run -i -t -d IMAGEN:VERSION
Onde a imagem e a versão podem ser especificadas como se segue:
docker run -i -t -d centos:latest
Podemos definir um nome para o recipiente com –name NOME
[root@localhost ~]# docker run -i -t -d --name testing debian:9
Unable to find image 'debian:9' locally
Trying to pull repository docker.io/library/debian ...
9: Pulling from docker.io/library/debian
54f7e8ac135a: Pull complete
Digest: sha256:df6ebd5e9c87d0d7381360209f3a05c62981b5c2a3ec94228da4082ba07c4f05
Status: Downloaded newer image for docker.io/debian:9
b6f568b78470b417b8a141f4b7c5686420df7cc1050402239ab1847310a67116
[root@localhost ~]#
É possível especificar um porto a ser encaminhado da máquina anfitriã para o contentor:
docker run -i -t -d -p PUERTO_EXTERIOR:INTERIOR IMAGEN
Ou também pode ser feito especificando o ip do hospedeiro:
docker run -i -t -d -p IP_ANFITRION:PUERTO_EXTERIOR:INTERIOR IMAGEN
Acrescentando “–restart always” à equação, consegue-se que sempre que o recipiente é parado, é reiniciado. Mesmo no recomeço do programa de acolhimento:
docker run -i -t -d -p PUERTO_EXTERIOR:INTERIOR --restart always IMAGEN
Criar um recipiente e não o levantar imediatamente:
docker create -i -t centos:6 /bin/bash
Descarregar imagens e geri-las
Para descarregar uma imagem e tê-la disponível no momento de levantar um novo contentor sem ter de esperar que seja descarregada do docker-hub, só temos de fazer o seguinte:
docker pull IMAGEN:VERSION
Ou também:
docker pull IMAGEN
Por exemplo:
#Eligiendo version
docker pull centos:7
#o seleccionando la ultima disponible
docker pull centos:latest
Também podemos ver as imagens disponíveis localmente ao correr:
docker images
Por exemplo:
ger@portatil$ sudo docker images
[sudo] contraseña para ger:
REPOSITORY TAG IMAGE ID CREATED SIZE
debian 9 4879790bd60d 9 days ago 101MB
ubuntu 18.04 ea4c82dcd15a 5 weeks ago 85.8MB
centos 6 0cbf37812bff 6 weeks ago 194MB
centos 7 75835a67d134 6 weeks ago 200MB
ubuntu 17.04 fe1cc5b91830 11 months ago 95.6MB
Podemos procurar por imagens disponíveis em docker hub:
ger@portatil$ sudo docker search ubuntu
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 8793 [OK]
dorowu/ubuntu-desktop-lxde-vnc Ubuntu with openssh-server and NoVNC 244 [OK]
rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 184 [OK]
consol/ubuntu-xfce-vnc Ubuntu container with "headless" VNC session… 136 [OK]
ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with ansible 95 [OK]
ubuntu-upstart Upstart is an event-based replacement for th… 92 [OK]
neurodebian NeuroDebian provides neuroscience research s… 55 [OK]
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 47 [OK]
ubuntu-debootstrap debootstrap --variant=minbase --components=m… 40 [OK]
nuagebec/ubuntu Simple always updated Ubuntu docker images w… 23 [OK]
tutum/ubuntu Simple Ubuntu docker images with SSH access 18
i386/ubuntu Ubuntu is a Debian-based Linux operating sys… 15
Podemos importar uma imagem personalizada: docker import /path/to/exampleimage.tgz:
[root@localhost ~]# docker import /tmp/debian-personalizado.tgz
[root@localhost ~]#
Ver o estado dos contentores e os seus dados
Para ver os contentores criados e o seu estado actual, só temos de executar:
docker ps -a
Por exemplo:
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b6f568b78470 debian:9 "bash" About a minute ago Up About a minute testing
[root@localhost ~]#
Para montar uma máquina só temos de correr docker start ID-DO-CONTENTOR el ID lo podemos encontrar ejecutando docker ps -a :
[root@localhost ~]# docker start b6f568b78470
b6f568b78470
[root@localhost ~]#
Gestão de contentores
Para parar um recipiente docker stop id-do-container:
[root@localhost ~]# docker stop b6f568b78470
b6f568b78470
[root@localhost ~]#
E para apagar um recipiente docker stop id-do-container:
[root@localhost ~]# docker rm b6f568b78470
b6f568b78470
[root@localhost ~]#
Podemos fazer uma cópia de um recipiente correndo: docker export -o filesystem.tar ID_DO_CONTAINER:
[root@localhost ~]# docker export -o filesystem.tar b6f568b78470
[root@localhost ~]#
Podemos aceder a uma consola de contentores: docker exec -it “id of running container” bash:
[root@localhost ~]# docker exec -it b6f568b78470 bash
[root@b6f568b78470 ~]#
Se estiver interessado em aprender Docker, pode adquirir o nosso livro aqui.
Docker para novatos
E é tudo sobre como começar com Docker, num próximo post, falaremos sobre como gerir Docker com Python.
Lembre-se de que se gostou deste post, por favor partilhe-o nas suas redes sociais e/ou comente sobre o post.
Até breve!