Skip to content

Latest commit

 

History

History
181 lines (119 loc) · 4.05 KB

lab-1.3-compartilhar.md

File metadata and controls

181 lines (119 loc) · 4.05 KB

Lab 1.3 - Compartilhar

Lab 1.3 - Objetivos

  • Criar imagens a partir de outras existentes
  • Publicar imagens em registros remotos

Tarefas

1.3.1 - Construir Novas Imagens

Além de consumir imagens já prontas, podemos construir nossas próprias imagens. Para isso, precisamos criar um arquivo chamado Dockerfile, onde especificamos todas as etapas de construção da nova imagem a partir de diretivas. As mais comuns são:

  • LABEL: Pode ser usado para adicionar metadados à imagem (autor, versão, descrição).
  • FROM: Especifica qual imagem será usada como base.
  • RUN: Executa comandos dentro da imagem.
  • ADD/COPY: Adiciona arquivos/diretórios dentro da imagem.
  • EXPOSE: Especifica quais serviços de rede serão expostos.
  • USER: Determina qual o usuário será usado para execução dos comandos.
  • CMD: Especifica qual o comando que será executado por padrão na nova imagem.

Para essa atividades, vamos criar os seguintes diretórios:

mkdir -p ~/workshop-openshift/lab1.3/src && cd ~/workshop-openshift/lab1.3/src

No subdiretório ~/workshop-openshift/lab1.3/src, vamos adicionar dois arquivos, app.py e requirements.txt, com os seguintes conteúdos (respectivamente):

#! /usr/bin/env python

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return "Hello, world!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

e

click==6.7
Flask==0.12.2
itsdangerous==0.24
Jinja2==2.9.6
MarkupSafe==1.0

Para agilizar a criação dos arquivos, basta executar os comandos abaixo:

cat <<EOF > ~/workshop-openshift/lab1.3/src/app.py
#! /usr/bin/env python

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return "Hello, world!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)
EOF

e

cat <<EOF > ~/workshop-openshift/lab1.3/src/requirements.txt
click==6.7
Flask==0.12.2
itsdangerous==0.24
Jinja2==2.9.6
MarkupSafe==1.0
Werkzeug==0.12.2
EOF

Na raiz do diretório ~/workshop-openshift/lab1.3/, vamos adicionar um arquivo de texto com nome Dockerfile com o seguinte conteúdo:

FROM fedora:27

LABEL maintainer="[email protected]"
LABEL version="1.0"

RUN mkdir /var/www

ADD src/. /var/www

RUN pip3 install -r /var/www/requirements.txt

EXPOSE 8080

USER 12345

CMD ["python3", "/var/www/app.py"]

Para agilizar a criação do arquivos, podemos utilizar:

cat <<EOF > ~/workshop-openshift/lab1.3/Dockerfile
FROM fedora:27

LABEL maintainer="[email protected]"
LABEL version="1.0"

RUN mkdir /var/www

ADD src/. /var/www

RUN pip3 install -r /var/www/requirements.txt

EXPOSE 8080

USER 12345

CMD ["python3", "/var/www/app.py"]
EOF

Para iniciarmos o processo de construção da nova imagem, usa-se:

# cd ~/workshop-openshift/lab1.3
# docker build -t workshop-openshift .

Valide se sua imagem está funcionando corretamente por meio do comando:

docker run --rm workshop-openshift

A saída desse comando é algo como:

Verifique a sua imagem nova no registro local:

# docker images | grep workshop-openshift

Podemos ver que é a nossa imagem que foi construida recentemente conforme destacado na foto acima.

1.3.2 - Publicar Imagens no Registry

Para publicar uma imagem em um registro remoto, muitas das vezes é necessário autenticação. Para tal, usamos:

note: caso não possua uma conta no Docker Hub, acesse https://hub.docker.com/register e crie um conta pessoal.

# docker login docker.io

Depois de autenticados, precisamos colocar um tag na nossa imagem usando a convenção registry/username/image:tag:

# docker tag workshop-openshift docker.io/<username>/workshop-openshift

E depois já podemos enviar nossa imagem:

# docker push docker.io/<username>/workshop-openshift