Criando uma imagem com Java para o Docker

docker_28container_engine29_logo

O Docker cria um ambiente no qual você pode rodar seu código de forma relativamente isolada do seu sistema operacional. O seu programa vai rodar em um contêiner. É como uma máquina virtual (apesar de todas as diferenças).

Para isso, você precisa criar um Dockerfile explicando como será o ambiente. A partir da receita contida no Dockerfile, você realiza o build e cria uma “imagem“, que é um template usado para criar os contêineres. Enfim, você roda os contêiners a partir da imagem.

Vamos criar uma imagem com Java. Crie uma pasta vazia e crie um arquivo chamado “Dockerfile”. Na mesma pasta, coloque o arquivo “.tar.gz” do Java.

Arquivo Dockerfile

Edite o arquivo “Dockerfile” e adicione as linhas:

# Usa o sistema operacional Debian como base
FROM debian:8.4

# Adiciona uma variável para facilitar a alteração de versões futuras
ENV JAVA_VERSION 8u91
# E adiciona a variável de ambiente JAVA_HOME
ENV JAVA_HOME /usr/lib/jvm/jdk1.8.0_91/

# Copia o arquivo do Java para dentro do container
COPY jdk-$JAVA_VERSION-linux-x64.tar.gz /usr/lib/jvm/

# Acessa a pasta onde o Java será instalado:
WORKDIR /usr/lib/jvm

# Descompacta o Java e remove o arquivo zipado:
RUN tar -zxvf jdk-$JAVA_VERSION-linux-x64.tar.gz && \
    rm jdk-$JAVA_VERSION-linux-x64.tar.gz

# Adiciona o Java no PATH
ENV PATH "$PATH":/${JAVA_HOME}/bin:.:

A instrução FROM diz qual vai ser a base para a nossa imagem. Podemos criar uma imagem do zero, ou a partir de uma imagem já pronta com o sistema operacional, ou ainda a partir de uma imagem com alguma aplicação já instalada, por exemplo.

A instrução ENV é usado para alterar as variáveis de ambiente. É comum usar essa instrução no início do Dockerfile para setar algumas configurações que serão usadas mais pra frente no Dockerfile.

A instrução COPY copia o arquivo para dentro do container. No caso, queremos copiar o Java para dentro da pasta /usr/lib/jvm/ do container. Outra forma bem comum de adicionar coisas ao container é usar a instrução “RUN” junto com “wget”, “curl”, ou outra forma de download.

A instrução WORKDIR altera a pasta do container que estamos trabalhando. É preferível que “RUN cd diretorio && realize-algo”, porque é mais legível.

A instrução RUN roda um comando no container. Podemos rodar vários comandos ao mesmo tempo usando “&&” e podemos usar “\” para colocar cada comando em uma linha.

Criando a imagem

Agora, para criar a imagem, acesse a pasta usando o Terminal (Ctrl+Alt+T), e realize o build da imagem:

$ cd Documents/docker/java/
$ sudo docker build -t matruskan/java .

Nesse caso, usamos os parâmetros “-t matruskan/java”, que significa que estamos fazendo o build de uma imagem com a “tag” “matruskan/java”, que será usada para identificá-la.

Para ver as imagens que você já criou, use o comando:

$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
matruskan/java      latest              7e780b4e0170        3 minutes ago       671.4 MB
debian              8.4                 1742affe03b5        11 days ago         125.1 MB

Rodando o container

Agora, basta rodar o container com:

$ sudo docker run -i -t matruskan/java /bin/bash

O comando -i inicia um container com o qual você pode interagir, e o comando -t cria um TTY para acessarmos, depois temos o nome da imagem e por fim iniciamos o shell para acessarmos.

Podemos então ver que o Java está instalado no container:

root@3fb6cebeed03:/usr/lib/jvm# java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

Verificando os containers

Para verificar os containers que estão rodando na máquina:

$ sudo docker ps

Para ver todos containers criados:

$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                      PORTS               NAMES
3fb6cebeed03        matruskan/java      "/bin/bash"         About a minute ago   Exited (0) 20 seconds ago                       stoic_cray

 

Anúncios
Marcado com: ,
Publicado em Microsserviços

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: