MBA in JAVA, SOA and Internet of Things at FIAP. MBA Systems Engineering at ESAB. 10 years experience in business analysis and web application.
Publicado em 01/02/2020
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.
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
$ 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
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
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
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
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
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
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