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:
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:
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
Olá tudo bem?
Teria possibilidade de fazer algum tutorial de SSL no Openmediavault 6 baseado em debian?
Desde já agradeço
Fala mestre! Não conheço Openmediavault mas vou dar uma estudauda no assunto! Você quer colocar acesso HTTPS nele?