Docker

Introdução

Docker é um sistema de conteiner para máquinas virtuais, que diferente do hipervisor, essas compartilham a base do sistema operacional do hospedeiro e deixa na máquina somente o essencial para que ela seja um sistema isolado. Com isso a máquina virtual ocupa menor espaço e pode ser usada para automatizar tarefas que não seria possível com o hipervisor. Há um repositório central de imagens oficiais do Docker já prontas, com aplicações pré configuradas, o https://hub.docker.com/ .

Pré requisitos

  • docker
  • docker-compose

Comandos principais

Ele foi desenvolvido pelo Google, usando a linguagem Go. Os principais comandos do docker são:

Fazer o download na web de máquinas virtuais - as máquinas oficiais podem ser encontradas em https://hub.docker.com/search?q=&type=image .
$ docker pull ubuntu

Exibir as máquinas que existem já no seu computador físico
$ docker images

Remover uma máquina
$ docker rmi ID_ou_nome_da_imagem

Procurar imagens no https://hub.docker.com usando a linha de comando
$ docker search ubuntu

Exibir o histórico de utilização das máquinas no sistema
$ docker ps -a

Exibir as máquinas que estão funcionando
$ docker ps

Rodar a máquina virtual
$ docker run ubuntu

Rodar a máquina virtual já entrando no terminal
$ docker run -it ubuntu sh (sem especificar o aplicativo do terminal, ele vai entrar no terminal padrão)

Rodar a máquina virtual em backgroud
$ docker run -d -p 8080:8080 ubuntu service ubu start

Rodando imagens docker com IPs definidos
$ docker network create --subnet=172.18.0.0/16 mynet123
$ docker run --net mynet123 --ip 172.18.0.22 -it ubuntu bash

Criar imagens docker
Crie uma pasta, e dentro dela crie o arquivo Dockerfile, contendo algo como:

FROM ubuntu

RUN export TZ=America/Sao_Paulo
RUN apt update
RUN DEBIAN_FRONTEND="noninteractive" apt-get -y install systemd
RUN DEBIAN_FRONTEND="noninteractive" apt -y install vim
RUN DEBIAN_FRONTEND="noninteractive" apt -y install nano
RUN DEBIAN_FRONTEND="noninteractive" apt -y install mysql-server
RUN DEBIAN_FRONTEND="noninteractive" apt -y install apache2
RUN a2enmod rewrite
RUN DEBIAN_FRONTEND="noninteractive" apt -y install php libapache2-mod-php php-mysql
RUN DEBIAN_FRONTEND="noninteractive" apt -y install composer

E em seguida execute na mesma pasta
$ docker build -t hello .

Confirmando alterações no container
$ docker run -it container
[faça qualquer alteração, instale programas, faça configurações, etc]
Saia do container
$ exit
$ docker ps -a

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
e5846f3dcde0        2d0bd1531ef4        "/bin/sh -c 'apt -y …"   36 minutes ago      Exited (100) 36 minutes ago                       awesome_einstein
 
Nesse caso, você substituirá [CONTAINER_ID] por e5846f3dcde0
$ docker commit [CONTAINER_ID] [novo_nome_de_imagem]

Exibir informações da máquina, incluindo o endereço IP
$ docker inspect [CONTAINER_ID]

Parar um container
$ docker stop container

Ver ip de uma máquina docker
$ docker ps
$ docker inspect [CONTAINER_ID] | grep "IPAddress"

Executar comandos em uma máquina em execução
$ docker [CONTAINER_ID] exec [CONTAINER_ID] comando

Executar um comando que necessita permanecer no container
$ docker [CONTAINER_ID] exec -it [CONTAINER_ID] comando

Executar um container docker colocando um nome (que pode ser usado em vez do [CONTAINER_ID]
$ docker run --name [nome_da_máquina_em_execução] -it -d container

Exibir o log de inicialização da máquina virtual
$ docker logs [CONTAINER_ID]

Bom proveito

Comentários

Postagens mais visitadas deste blog

Bitbucket Pipeline CI/CD usando Git FTP

Desenvolvo sua página de negócio

Introdução ao PHP orientado a objeto