Repositório destinado à conceitos e práticas com Docker
É uma plataforma que permite a criação e execução de aplicações de maneira rápida e prática através de pacotes de software em unidades padronizadas chamadas de contêineres os quais possuem tudo que o software precisa para ser executado, incluindo bibliotecas, ferramentas de sistema, código e runtime. O docker permite implantar, escalar e mover rapidamente aplicações em qualquer ambiente, otimizando a utilização de recursos.
O docker foi lançado em 2013 como um projeto open-source por uma empresa chamada .cloud (dot cloud) que era uma empresa de hospedagem que atualmente não existe mais. Após um ano do lançamento desta tecnologia, ela se tornou tão grande que eles fecharam a antiga empresa e abriram uma nova chamada Docker Inc.
- Rapidez, agilidade "Docker is all about speed"
- Em vários sentidos: para desenvolver, construir, testar, lançar, atualizar e recuperar
- O consumo de recursos é muito menor com o Docker
- Herda o Kernel e entre outros recursos da máquina host
- Supondo que um a inicialização de um container leva 1seg, a mesma operação em uma máquina virtual com o sistema operacional inteiro, levaria cerca de 1min;
- Não é um sistema de virtualização tradicional (VM - Virtual Machine)
- É uma engine de administração de containers (ambiente/serviço isolado da maquina host)
- É baseado em uma tecnologia de serviços LXC (Linux Containers);
- Open Source e escrito em Go (linguagem)
- Host e container compartilham o Kernel (menor consumo, otimização, etc)
- Empacota software com vários níveis de isolamento (memória, cpu, rede, etc)
- Docker CE (Community Edition): grátis para uso
- Docker EE (Enterprise Edition): pago
- Recomendado para grandes empresas, possui suporte 24/7, diretivas de seguranças em imagens, certificado em plataformas específicas, entre outros diversos produtos extras.
Stable
versão estável, testada, etc.Edge
permite download antecipado, lançamentos mensais, a cada 4 meses esta versão vira um versão estável.
Três principais tipos instalações: Direct, Mac/Windows e Cloud
-
Linux (diferente por distribuição)
- CLI
curl -sSL https://get.docker.com/ | sh
- Não é recomendado instalar via gerenciador de pacotes da distribuição
- CLI
-
- É recomendado que evite utilizar gerenciador de pacotes como o brew
- Download
-
- ... ou Docker Toolbox para versões diferente da 10 Pro/Enterprise
- Docker Docs - Docker for Windows
- Docker Docs - Docker for Windows: FAQ
-
Cloud: AWS/Azure/Google, versões do docker, com características/aplicações específicas da empresa que está distribuindo.
Nas documentações abaixo é abordado conceitos, características, exemplos de uso, etc.
A versão do Docker e configurações da Engine podem ser consultadas docker version && docker info
Os comandos do Docker podem ser consultados através de docker --help
.
Uma curiosidade é que com o passar dos anos houve uma melhora na organização dos comandos disponíveis. Pode-se perceber ao executar o comando de --help
as divisões.
- Commands (formato antigo)
docker <command> (options)
- Management Commands (formato novo)
docker <command> <sub-command> (options)
Como o docker possui uma política de retrocompatibilidade, os antigos não deixarão de funcionar, mas novos comandos não estarão disponíveis no antigo formato.
- Docker @ GitHub
- Moby @ GitHub
- Docker Mastery @ GitHub
- Docker Library - Official Images @ GitHub
- Docker Mastery by BretFisher @ GitHub
- Docker Mastery for Node.js by BretFisher @ GitHub
- Play with Docker
- Training - Play with Docker
- The Future of Docker Swarm - Brett Fisher
- Cloud Native Landscape
- Article About the DCA (Docker Certificated Associate
- Docker Extension for Visual Studio Code
- Everything You Thought You Already Knew About Orchestration @ Youtube
- YAML - Quick Reference Card
- Docker 1.12 Swarm Mode Deep Dive Part 1: Topology
- Docker 1.12 Swarm Mode Deep Dive Part 2: Orchestration
- Heart of the SwarmKit: Topology Management (slides)
- Heart of the SwarmKit: Store, Topology & Object Model (YouTube)
- Raft Consensus Visualization (Our Swarm DB and how it stays in sync across nodes)
- Docker Swarm Firewall Ports
- Bret Fisher Docker and DevOps @ Podcast
- Bret Fisher Docker and DevOps @ Youtube
- Alpine Linux
- CVE Database
- Blog on CVE Scanners and their effectiveness on Alpine images
- Three places to control different docker IP subnet settings
- Alex Ellis' Raspberry Pi blog posts
- Using TLS for Localhost
- Traefik Proxy
- Docker and ARM announcement
- AWS ARM A1 instances
- QEMU
- ENTRYPOINT vs CMD
- image2docker demo