Fábio Damas

MBA in JAVA, SOA and Internet of Things‎ at FIAP. MBA Systems Engineering at ESAB. 10 years experience in business analysis and web application.

Home

Docker Cheat Sheet

Publicado em 01/02/2020

Compartilhe...

alt text O Docker é uma ferramenta projetada para facilitar a criação, a implementação e a execução de aplicativos usando contêineres. Os contêineres permitem que um desenvolvedor empacote um aplicativo com todas as partes de que precisa, como bibliotecas e outras dependências, e envie tudo como um único pacote. Ao fazer isso, graças ao contêiner, o desenvolvedor pode ter certeza de que o aplicativo será executado em qualquer outra máquina Linux, independentemente de quaisquer configurações personalizadas que a máquina possa ter e que possam diferir da máquina usada para gravar e testar o código.

1. Instalação e versão

Instalação no Linux (Ubuntu)

$ sudo apt-get update 
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu  $(lsb_release -cs)  stable" 
$ sudo apt-get update
$ sudo apt-get install docker-ce

Ver a versão do docker

$ docker --version

Exibir informações do Docker

$ sudo docker info

2. Ciclo de vida

$ docker create: Cria um container mas nao inicia
$ docker rename: Renomear container
$ docker run: Cria e executa o container na mesma operaçao
$ docker rm: Apaga o container
$ docker update: Atualiza

3. Imagem

Puxar a imagem hello-world

$ docker run hello-world

Listar a hello-world imagem baixada do Docker Hub:

$ docker image ls

Listar o hello-world contêiner (que saiu depois de exibir “Hello from Docker!”):

$ docker container ls --all

4. Listar

Listar todos os contêineres

$ docker container ls --all

Listar apenas seus contêineres em execução :

$ docker container ls

Listar todas as Docker Images

$ docker images -a

Verificar instâncias

$ docker ps

Mostrar todas as instâncias criadas

$ docker ps ­-a

5. Execução

Puxe uma imagem do sistema operacional Ubuntu e execute um terminal interativo dentro do contêiner gerado:

$ docker run --interactive --tty ubuntu bash

Nova instância com a criação de uma aplicação Ruby on Rails

$ docker run -it --rm --user "$(id -u):$(id -g)" -v "$PWD":/usr/src/app -w /usr/src/app rails rails new --skip-bundle my_awesome_app

Iniciando na linha de comando uma instância ubuntu

$ sudo docker run -i -t ubuntu:14.04 /bin/bash

Criando container e definindo uma porta para poder acessar externamente a máquina. A imagem é a do Wildfly, definido no final do comando com “jboss/wildfly”.

$ sudo docker run --name wildfly1 -d -p 8080:8080 jboss/wildfly

Iniciar outro wildfly na mesma rede

$ sudo docker network create mynetwork
$ sudo docker run --name wildfly2 -d --net mynetwork -p 8081:8080 jboss/wildfly

Criando um container, definindo que no hospedador, a pasta “opt/docker” será a pasta de deploy do Wildfly:

$ sudo docker run --name wildfly3 -d -v /opt/docker:/opt/jboss/wildfly/standalone/deployments -p 8082:8080 jboss/wildfly

6. IP

Verificar IP atual da instância

$ ip route get 8.8.8.8 | awk '{print $NF; exit}'

Outra forma de verificar o IP da instância:

$ sudo docker inspect -f '' wildfly3

7. Operaçoes

Iniciar um Docker Container

$ docker start #id_container

Parar um Docker Container

$ docker stop #id_container

Reiniciar um Docker Container

$ docker restart #id_container

Apagar uma instância

$ docker rm #id_container

Visualizar os logs de um Docker Container em execução

$ docker logs #id_container

Deletar todos os Docker Containers

$ docker rm $(docker ps -a -q)

Acessando o Shell de um Docker Container em execução

$ sudo docker exec -it  bash

8. Miscelânea

Adicionar JAVA para uma imagem

    FROM dockerfile/ubuntu
 
    # Instala o Java 8.
    RUN \
      echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
      add-apt-repository -y ppa:webupd8team/java && \
      apt-get update && \
      apt-get install -y oracle-java8-installer && \
      rm -rf /var/lib/apt/lists/* && \
      rm -rf /var/cache/oracle-jdk8-installer
    
    
    # Define o diretório de trabalho.
    WORKDIR /data
    
    # Define a variável de ambiente JAVA_HOME
    ENV JAVA_HOME /usr/lib/jvm/java-8-oracle
    
    # Define o comando padrão.
    CMD ["bash"]

Adicionando e executando um .jar de uma aplicação Spring Boot a uma Docker Image

    VOLUME /tmp
    ADD /maven/myapp-0.0.1-SNAPSHOT.jar myapp.jar
    RUN sh -c 'touch /myapp.jar'
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/myapp.jar"]

Iniciar o bash ou outro programa do container

$ sudo docker exec -it wildfly1 bash