{"id":19844861,"url":"https://github.com/lucasrmagalhaes/criando_containers-docker","last_synced_at":"2026-01-31T00:37:54.272Z","repository":{"id":39059023,"uuid":"455723585","full_name":"lucasrmagalhaes/criando_containers-docker","owner":"lucasrmagalhaes","description":"Docker: Criando containers sem dor de cabeça.","archived":false,"fork":false,"pushed_at":"2022-02-07T02:34:32.000Z","size":487,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-26T19:17:15.235Z","etag":null,"topics":["alura","docker"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lucasrmagalhaes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-02-04T23:13:31.000Z","updated_at":"2024-08-26T01:56:34.000Z","dependencies_parsed_at":"2022-08-31T10:53:45.250Z","dependency_job_id":null,"html_url":"https://github.com/lucasrmagalhaes/criando_containers-docker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasrmagalhaes%2Fcriando_containers-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasrmagalhaes%2Fcriando_containers-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasrmagalhaes%2Fcriando_containers-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasrmagalhaes%2Fcriando_containers-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lucasrmagalhaes","download_url":"https://codeload.github.com/lucasrmagalhaes/criando_containers-docker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasrmagalhaes%2Fcriando_containers-docker/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259211763,"owners_count":22822373,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alura","docker"],"created_at":"2024-11-12T13:05:48.452Z","updated_at":"2026-01-31T00:37:49.248Z","avatar_url":"https://github.com/lucasrmagalhaes.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"**Docker:** Criando containers sem dor de cabeça.\n\n**A evolução do host de aplicações** \u003cbr\u003e\nAntigamente... Várias aplicações, vários servidores. \u003cbr\u003e\nCapacidade pouco aproveitada. \u003cbr\u003e\nMuito tempo ocioso! \u003cbr\u003e\nMuitos recursos desperdiçados!\n\n**Melhorando a situação: Virtualização** \u003cbr\u003e\nAPP - VM -\u003e Hypervisor -\u003e S.O. (Um Sistema Operacional para cada VM) -\u003e Hardware\n\n**Nem tudo são flores... o problema das VMs.** \u003cbr\u003e\nQuanto mais VMs, mais custos de hardware - processamento, configuração, atualização, segurança e tempo.\n\n**Então como melhorar agora? A era dos containers!** \u003cbr\u003e\nAPP - Container - SO (Um Sistema Operacional para todos os containers) - Hardware \u003cbr\u003e\nMais leve \u003cbr\u003e\nNão tem os custos de manter múltiplos S.O. \u003cbr\u003e\nMais rápido de subir\n\n**Ganhamos:** \u003cbr\u003e\nMelhor controle sobre o uso de cada recurso (CPU, Disco, Rede... etc) \u003cbr\u003e\nAgilidade na hora de criar ou remover um container \u003cbr\u003e\nMaior facilidade na hora de trabalhar com diferentes versões de linguagens e bibliotecas \u003cbr\u003e\nMais leves que as VM\n\n**Docker** \u003cbr\u003e\nDocker Inc. - A empresa \u003cbr\u003e\nDocker - A tecnologia de containers\n\nTecnologias de containers para prover ferramentas modernas para deployar e rodar aplicações.\n\n**Docker Engine:** Tecnologia mais famosa e responsável por fazer o meio de campo entre os containers e o SO. \u003cbr\u003e\n**Docker Compose:** Um jeito fácil de definir e orquestrar múltiplos containers. \u003cbr\u003e\n**Docker Swarm:** Uma ferramenta para colocar múltiplos Dockers Host's para trabalharem juntos em cluster. \u003cbr\u003e\n**Docker Hub:** Um repositório com mais de 250 mil imagens diferentes para os seus containers. \u003cbr\u003e\n**Docker Machine:** Uma ferramenta que nos permite instalar e configurar em host virtuais.\n\nExibe a versão do docker.\n```\ndocker version\n```\n\nCria um container com a respectiva imagem passada como parâmetro.\n```\ndocker run hello-world\n```\n\n[Play With Docker](https://labs.play-with-docker.com/) \u003cbr\u003e\nBasta clicar em +Add New Instance e começar a utilizá-lo como estivesse usando sua máquina normalmente.\n\n```\ndocker run ubuntu\n```\n\nLista todos os containers.\n```\ndocker ps -a\n```\n\n```\ndocker run ubuntu echo \"Olá Mundo\"\n```\n\nDentro do Container, consegue rodar comandos nativos da Imagem do Container.\n```\ndocker run -it ubuntu\n```\n\nLista só os containers ativos.\n```\ndocker ps\n```\n\nexit ou Ctrl + d -\u003e Sai do container.\n\nIniciar o container\n```\ndocker start container_id\n```\n\nParar o container\n```\ndocker stop container_id\n```\n\nAcessar o container no modo interativo\n```\ndocker start -a -i container_id\n```\n\nRemover um container\n```\ndocker rm container_id\n```\n\nRemover containers inativos\n```\ndocker container prune\n```\n\nListar imagens\n```\ndocker images\n```\n\nRemover imagem\n```\ndocker rmi nome_imagem\n```\n\nBaixar uma imagem com a versão informada\n```\ndocker run ubuntu:14.04\n```\n\n**Layered File System** \u003cbr\u003e\nToda imagem que baixamos é composta de uma ou mais camadas. \u003cbr\u003e\nEssas camadas podem ser reaproveitadas em outras imagens, acelerando assim o tempo de download.\n\n![Layer de Scrita](https://user-images.githubusercontent.com/43296467/152704905-91b18bb0-0ad7-4970-ab3e-9c32371f5aee.png)\n\nImagem não oficiais, criado por pessoas, informar o username/imagem\n```\ndocker run dockersamples/static-site\n```\n\n-d -\u003e detached, roda em background, liberando o terminal\n```\ndocker run -d dockersamples/static-site\n```\n\n-t -\u003e tempo, padrão é 10 segundos\n```\ndocker stop -t 0 container_id\n```\n\n-P -\u003e container atribui a porta aleatória\n```\ndocker run -d -P dockersamples/static-site\n```\n\nVerificar a porta\n```\ndocker port container_id\n```\n\nDefinir um nome para o container\n```\ndocker run -d -P --name meu-site dockersamples/static-site\n```\n\nParar o container pelo o nome\n```\ndocker stop -t 0 meu-site\n```\n\nDefinir a porta que o container vai rodar - localhost:12345\n```\ndocker run -d -p 12345:80 dockersamples/static-site\n```\n\n- e -\u003e Variável de Ambiente\n```\ndocker run -d -P -e AUTHOR=\"Lucas Magalhães\" dockersamples/static-site\n```\n\n-q -\u003e Retorna os IDs\n```\ndocker ps -q\n```\n\nPara os containers com um comando só, útil para parar vários containers\n```\ndocker stop -t 0 $(docker ps -q)\n```\n\n**Containers são voláteis:** Aonde salvar o código? Logs? Dados? Nos volumes! \u003cbr\u003e\n/var/www -\u003e Docker Host\n\n-v -\u003e Especifica o caminho\n```\ndocker run -v \"/var/www\" ubuntu\n```\n\nInformações do container\n```\ndocker inspect container_id\n```\n\nMounts -\u003e Source -\u003e Informa onde está salvando os dados localmente.\n\n```\ndocker run -it -v \"C:\\Users\\Lucas\\Desktop:/var/www\" ubuntu\n```\n\n```\ncd var/www/\n```\n\n```\ntouch novo-arquivo.txt\n```\n\n```\necho \"Este arquivo foi criado dentro de um volume\" \u003e novo-arquivo.txt\n```\n\n**Por que usamos volumes?** \u003cbr\u003e\nMuitas vezes removemos os containers após o uso. Volumes são usados para os dados que não devem ser removidos. \u003cbr\u003e\nÉ muito comum usar o container e apagá-lo após seu uso. Dessa forma também são removidos os dados desse container e aí entram os volumes que permitem salvar dados fora do container.\n\n**Um volume fica salvo:** No Docker Host \u003cbr\u003e\nFica salvo no computador onde a Docker Engine está rodando.\n\n\nInformando o caminho e rodando o projeto - CAMINHO_HOST:CAMINHO_CONTAINER\n```\ndocker run -d -p 8080:3000 -v \"C:\\Users\\Lucas\\Desktop\\volume-exemplo:/var/www\" -w \"/var/www\" node npm start\n```\n\nDentro da pasta e rodando o projeto\n```\ndocker run -d -p 8080:3000 -v \"$(pwd):/var/www\" -w \"/var/www\" node npm start\n```\n\nBuild\n```\ndocker build -f node.dockerfile -t lucasrmagalhaes/node .\n```\n\nListando imagens\n```\ndocker images\n```\n\nRemove e força o stop\n```\ndocker rm -f container_id\n```\n\nRodando a imagem criada\n```\ndocker run -d -p 8080:3000 lucasrmagalhaes/node\n```\n\nLogin do Docker HUB\n```\ndocker login\n```\n\nSubindo a imagem\n```\ndocker push lucasrmagalhaes/node\n```\n\nBaixando a imagem\n```\ndocker pull lucasrmagalhaes/node\n```\n\nMostra o ip atribuído ao container pelo docker (funciona apenas dentro do container)\n```\nhostname -i\n```\n\nAtivando o comando ping no Ubuntu\n```\napt-get update \u0026\u0026 apt-get install -y iputils-ping\n```\n\nCria uma rede especificando o driver desejado\n```\ndocker network create --driver bridge minha-rede\n```\n\nListando as redes\n```\ndocker network ls\n```\n\nCria um container especificando seu nome e qual rede deverá ser usada\n```\ndocker run -it --name meu-container-de-ubuntu --network minha-rede ubuntu\n```\n\n```\ndocker run -it --name meu-segundo-container-de-ubuntu --network minha-rede ubuntu\n```\n\n```\nping meu-container-de-ubuntu\n```\n\n```\ndocker pull douglasq/alura-books:cap05\n```\n\n```\ndocker pull mongo\n```\n\nStartando o mongo\n```\ndocker run -d --name meu-mongo --network minha-rede mongo\n```\n\nStartando o projeto\n```\ndocker run --network minha-rede --name alura-books -d -p 8080:3000 douglasq/alura-books:cap05\n```\n\nSalva os livros no banco\n```\nhttp://localhost:8080/seed\n```\n\n**Subir 5 containers na mão?** Não! \u003cbr\u003e\nDocker Compose salva nossa vida! \u003cbr\u003e\ndocker-compose.yml\n\nBuildar\n```\ndocker-compose build\n```\n\nRodar os containers\n```\ndocker-compose up\n```\n\nRodar em background\n```\ndocker-compose up -d\n```\n\nListar os serviços\n```\ndocker-compose ps\n```\n\nPara e remove\n```\ndocker-compose down\n```\n\n```\ndocker exec -it alura-books-1 ping alura-books-2\n```\n\n```\ndocker-compose restart\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucasrmagalhaes%2Fcriando_containers-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucasrmagalhaes%2Fcriando_containers-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucasrmagalhaes%2Fcriando_containers-docker/lists"}