Primeiros Passos com Docker

Bom, hoje vou mostrar como você pode dar seus Primeiros Passos com Docker usando Centos 7.
Todavia o Docker é usando hoje em larga escala por grandes empresas e de tempos para cá ele vem facilitando a administração de serviços com a grande vantagem de conseguir isolar os ambientes usando Containers.

Sobretudo essa é a maior vantagem do Docker, conseguir subir seus serviços de forma isolada em um servidor sem que exista nenhum tipo de conflito entre eles. Portanto, consequentemente o maior beneficiado nesse processo é o usuário final! SIM, no final das contas quem ganha com a alta disponibilidade de ambientes em containers são eles.

Antes de mais nada, se você chegou até aqui aconselho você ler esses dois artigos:

Instalação

Todavia, aqui vamos utilizar o Centos 7 para montar o ambiente e dar os Primeiros Passos com Docker. O que vamos fazer? Vamos instalar o Docker e subir um container com Nginx. Além disso vamos editar o HTML default do Nginx.

Antes de mais nada se você tem o costume de desabilitar o Firewalld no Linux é bom você começar a rever seus conceitos de administração de sistemas se você deseja iniciar nesse mundo de Docker e Containers. O Firewalld é essencial para tudo funcionar corretamente! Sorry!

Primeiramente, esse comando é legal por que ele instalar tudo que você vai precisar. No final se você for curioso pode olhar o script AQUI!

curl -fsSL https://get.docker.com/ | sh

Enfim, quando tudo finalizar você pode habilitar o docker na inicialização do Centos e Startar o serviço usando:

systemctl enable docker
systemctl start docker

Logo depois vamos checar o status do serviço usando:

systemctl status docker

Logo, a saída estar com o Active: active (running) como o abaixo:

➜  ~ systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-11-19 18:38:01 EST; 2min 3s ago
     Docs: https://docs.docker.com
 Main PID: 4819 (dockerd)
   CGroup: /system.slice/docker.service
           └─4819 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Iniciando com Imagens de Containers

Em primeiro lugar vamos verificar se realmente está tudo certo com o Docker, e para isso vamos iniciar um Container chamado “hello-world”. A sintaxe é simples:

docker run hello-world

Em síntese, a saída precisa ser essa:


➜  ~ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:e7c70bb24b462baa86c102610182e3efcb12a04854e8c582838d92970a09f323
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:

Contudo, na saída do comando no terminal conseguimos perceber uma coisa. Ao executar o comando docker run hello-world ele não localiza a imagem do container do repositório de imagens local “Unable to find image ‘hello-world:latest’ locally” e automaticamente começa a fazer o download da mesma.

Do mesmo modo conseguimos perceber que ele está pegando a ultima versão do container “latest”. Caso você precise de uma versão especifica desse Container passe para o Docker a versão do container docker run hello-world:version

Rodando Nosso Servidor Web Nginx

Bom, agora vamos iniciar com o nosso servidor web.

Aqui vamos trabalhar com a imagem oficial do Nginx apesar de existir muitas outras imagens do Nginx não oficiais. Para ver todas as disponíveis use o comando docker search nginx. A saída será algo parecido com esse aqui em baixo:

NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                              Official build of Nginx.                        14045               [OK]
jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   1910                                    [OK]
richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of…   795                                     [OK]
linuxserver/nginx                  An Nginx container, brought to you by LinuxS…   130
jc21/nginx-proxy-manager           Docker container for managing Nginx proxy ho…   112
tiangolo/nginx-rtmp                Docker image with Nginx using the nginx-rtmp…   104                                     [OK]
bitnami/nginx                      Bitnami nginx Docker Image                      90                                      [OK]
alfg/nginx-rtmp                    NGINX, nginx-rtmp-module and FFmpeg from sou…   80                                      [OK]
jlesage/nginx-proxy-manager        Docker container for Nginx Proxy Manager        72                                      [OK]
nginxdemos/hello                   NGINX webserver that serves a simple page co…   63                                      [OK]
nginx/nginx-ingress                NGINX Ingress Controller for Kubernetes         45
privatebin/nginx-fpm-alpine        PrivateBin running on an Nginx, php-fpm & Al…   40                                      [OK]
nginxinc/nginx-unprivileged        Unprivileged NGINX Dockerfiles                  19
schmunk42/nginx-redirect           A very simple container to redirect HTTP tra…   19                                      [OK]
nginx/nginx-prometheus-exporter    NGINX Prometheus Exporter                       15
centos/nginx-112-centos7           Platform for running nginx 1.12 or building …   15
staticfloat/nginx-certbot          Opinionated setup for automatic TLS certs lo…   14                                      [OK]
raulr/nginx-wordpress              Nginx front-end for the official wordpress:f…   13                                      [OK]
centos/nginx-18-centos7            Platform for running nginx 1.8 or building n…   13
bitwarden/nginx                    The Bitwarden nginx web server acting as a r…   7
flashspys/nginx-static             Super Lightweight Nginx Image                   7                                       [OK]
mailu/nginx                        Mailu nginx frontend                            7                                       [OK]
bitnami/nginx-ingress-controller   Bitnami Docker Image for NGINX Ingress Contr…   6                                       [OK]
ansibleplaybookbundle/nginx-apb    An APB to deploy NGINX                          1                                       [OK]
wodby/nginx                        Generic nginx                                   1                                       [OK]

Dessa forma, vamos iniciar nosso container usando o comando abaixo:

docker run -it --rm -d -p 8080:80 --name coffops_nginx nginx

–rm avisa para o docker remover automaticamente o container se ele existir.
-it para dar interatividade para nosso container via linha de comando.
-d para rodar nosso container em backgroud e printar somente o id dele.
-p 8080:80 jogamos tudo que chegar na porta 8080 da maquina REAL para porta 80 do container.
–name é o nome do nosso container, nesse caso coffops_nginx.
o ultimo parâmetro é o nome da imagem que como falei vamos usar uma imagem oficial do Nginx.

Logo, vamos acessar a maquina usando http://localhost:8080 e a tela que vai aparecer será essa:

Primeiros Passos com Docker

Por último, com o comando abaixo podemos ver nosso container rodando dentro do Docker:

➜  ~ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
2e9e88ac7299        nginx               "/docker-entrypoint.…"   17 minutes ago      Up 17 minutes       0.0.0.0:8080->80/tcp   coffops_nginx

Ponto, agora temos nosso primeiro container usando Nginx rodando no nosso servidor!

Adicionando um HTML personalizado

Agora que já temos nosso Container com Nginx rodando, vamos ver como podemos personalizar nosso container e aqui vou dar o exemplo mais simples. Vamos customizar um HTML dentro dele.

Vamos parar nosso container:

docker stop coffops_nginx

Por default o Nginx armazena as informações de HTML dentro de /usr/share/nginx/html e o que vamos fazer aqui é criar uma pasta dentro do home do usuário e mapear ela dentro dessa pasta html.

Sim, a pasta do servidor local vai estar montada via docker dentro do container! Sacou?

Vamos lá:

Crie a pasta usando:

mkdir ~/coffops_html

Crie um arquivo chamado index.html dentro da pasta coffops_html e coloque o seguinte conteúdo:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Coffops - Docker Com Nginx</title>
</head>
<body>
  <h1>Coffops</h1>
  <h2>Exemplo de HTML editado dentro de Container Docker.</h2>
</body>
</html

Agora vamos executar nosso Nginx usando o mapeamento de diretórios mapeando tudo que tem dentro do volume ~/coffops_html em /usr/share/nginx/html.

docker run -it --rm -d -p 8080:80 --name web -v ~/coffops_html:/usr/share/nginx/html nginx

Agora ao acessar http://localhost:8080 nosso html vai estar diferente:

Primeiros Passos com Docker

Por hoje é isso!

Em conclusão, aqui vimos bastante coisa e você deu seus Primeiros Passos com Docker. Você já tem insumo para estudar várias coisas. Nos próximos artigos vamos aprofundado nosso conhecimento em Docker.

Você pode gostar também: 5 Dicas úteis de Configuração do Nginx

2 thoughts on “Primeiros Passos com Docker

  • junho 8, 2022 em 1:50 pm
    Permalink

    Olá tudo bem?
    Teria possibilidade de fazer algum tutorial de SSL no Openmediavault 6 baseado em debian?
    Desde já agradeço

    Resposta
    • junho 11, 2022 em 6:37 pm
      Permalink

      Fala mestre! Não conheço Openmediavault mas vou dar uma estudauda no assunto! Você quer colocar acesso HTTPS nele?

      Resposta

Deixe um comentário

O seu endereço de e-mail não será publicado.