Docker é uma ferramenta para executar aplicativos dentro de contêineres. Os contêineres empacotam todas as dependências e códigos que seu aplicativo precisa para ser executado em um arquivo, que será executado da mesma maneira em qualquer máquina.
índice
- O que é Docker?
- Por que o Docker é tão útil?
- Como você usa o Docker?
O que é Docker?
O Docker é semelhante em conceito às máquinas virtuais, exceto que é muito mais leve. Em vez de executar um sistema operacional completamente separado (o que é uma sobrecarga enorme), o Docker executa contêineres, que usam o mesmo sistema operacional host e apenas virtualizam no nível do software.
O Docker Engine é executado em Linux, Windows e macOS e oferece suporte a contêineres Linux e Windows para Docker. O sabor exato do Linux realmente não importa; a maioria das versões do Linux executará o mesmo kernel e difere apenas no software do usuário. O Docker pode instalar esse software de usuário no contêiner, permitindo que você execute um contêiner CentOS no Ubuntu. No entanto, você não pode, por exemplo, executar o FreeBSD no Ubuntu, já que os kernels são diferentes.
A imagem de contêiner do Docker inclui apenas os elementos necessários para a execução do aplicativo. Se seu aplicativo usar nginx e Node.js, a imagem do contêiner os incluirá, mas não será afetada por todos os outros aplicativos front-end que você normalmente encontra no Linux.
RELACIONADO: Como instalar o Docker e o Docker Compose no Linux
Por que o Docker é tão útil?
O Docker usa o mesmo tipo de versão e empacotamento que ferramentas como Git e NPM fornecem e permite que você o use para o software do servidor. Como seu contêiner é uma única imagem, é muito fácil rastrear versões de diferentes compilações de seu contêiner. E como tudo está contido, gerenciar todas as suas dependências é muito mais fácil.
Com o Docker, seu ambiente de desenvolvimento será exatamente o mesmo que seu ambiente de produção e exatamente o mesmo que o ambiente de desenvolvimento de todos os outros, aliviando o "quebrou na minha máquina!"
Se você quiser adicionar outro servidor ao cluster, não precisará se preocupar em reconfigurar esse servidor e reinstalar as dependências necessárias. Depois de criar um contêiner, você pode compartilhar o arquivo do contêiner com qualquer pessoa e eles podem facilmente colocar seu aplicativo em funcionamento com apenas alguns comandos. O Docker facilita a execução de vários servidores, especialmente com mecanismos de orquestração, como governadores em Port Swarming.
O Docker também permite que você organize seu código para implantá-lo em novos serviços. Suponha que você tenha um servidor web que está usando para seu aplicativo. Você provavelmente tem muitas coisas instaladas nesse servidor, você tem um servidor web nginx para hospedar conteúdo estático, você provavelmente tem um banco de dados para armazenar algumas coisas no backend, talvez você tenha um servidor de API rodando no Express. também j. Idealmente, você os dividiria em aplicativos separados para serem executados em servidores separados, mas o desenvolvimento pode ser complicado.
O Docker ajuda a limpar isso; você pode empacotar seu servidor web e executá-lo com um contêiner nginx, você pode empacotar seu servidor de API e executá-lo com um contêiner Node.js e você pode empacotar seu banco de dados e executá-lo em seu contêiner (mesmo que não seja o melhor ideia, mas é possível). Você pode pegar esses três contêineres do Docker e executá-los todos na mesma máquina. Se você precisar mudar de servidor, é tão fácil quanto migrar esses contêineres para um novo servidor. Se você precisar dimensionar, poderá mover um desses contêineres para um novo servidor ou implantá-lo em um cluster de servidores.
O Docker também pode economizar dinheiro se você quiser executar vários aplicativos em um único VPS. Se cada aplicação tiver dependências diferentes, é muito fácil para o seu servidor ficar sujo, como um prato de jantar de Ação de Graças com tudo misturado. Com o Docker, você pode executar vários contêineres separados com, digamos, versões separadas do PHP, como uma bandeja de almoço do ensino médio com tudo separado.
Como você usa o Docker?
Na produção, existem muitos serviços para hospedar contêineres do Docker, incluindo AWS ECS, Azure Container Instances, DigitalOcean Docker Droplets e muitos outros. Se o seu provedor não oferece hospedagem gerenciada do Docker, você sempre pode instalá-lo em seu VPS.
No desenvolvimento, os contêineres do Docker são fáceis de executar, exigindo apenas alguns comandos. Para começar, você precisa instalar o mecanismo Docker no sistema operacional do host. Para Windows e macOS, você pode usar o Docker Desktop, mas para Linux você precisa instalar o Docker Community Edition do seu gerenciador de pacotes. Para distribuições baseadas em Debian como o Ubuntu, será:
sudo apt-get install docker
Com qualquer método de instalação, agora você deve ter acesso ao Docker a partir da linha de comando. Para verificar se isso funciona, você pode executar:
docker execute olá mundo
O Docker deve extrair esta imagem de tutorial do Mobile Hub, um arquivo online de muitas imagens úteis de contêiner. Você pode usar muitas dessas imagens como base para instalar seus aplicativos.
Vamos criar um servidor web simples baseado em nginx. O Nginx fornece uma compilação do Mobile Hub que podemos usar como ponto de partida. Crie um novo diretório para armazenar os arquivos e abra-o:
mkdir ~/dockertest && cd ~/dockertest
Quaisquer alterações feitas na imagem base do nginx serão feitas com um Dockerfile. Os Dockerfiles são como makefiles para contêineres, eles definem quais comandos devem ser executados quando o Docker cria a nova imagem com as alterações. O Dockerfile é simplesmente chamado Dockerfile
, sem extensão. Crie este arquivo com touch Dockerfile
e abra-o em um editor de texto. Cole isso em:
DO nginx COPIAR html /usr/share/nginx/html
A primeira linha é um comando do Docker que diz ao Docker para basear essa imagem na imagem nginx do Hub. A segunda linha é outro comando que se copia para um diretório desta pasta local ( ~/dockertest/html
) na imagem do Docker, neste caso substituindo a pasta HTML por nginx.
Você pode executar muitos comandos em Dockerfiles. Por exemplo, se seu aplicativo precisa instalar dependências, você pode fazer algo assim RUN cd src/ && npm install
. Tudo o que seu aplicativo precisa para iniciar sua instalação e começar a ser executado está definido no Dockerfile.
Na verdade, não fizemos o diretório ./html
de volta, então vá em frente e execute:
mkdir html && toque em html/index.html
Para criar o diretório e a entrada HTML. Abra index.html
e cole um código HTML fictício:
<!DOCTYPE html> <html> <body> Olá Do nginx, dentro do Docker! Dentro, seu computador? </body> </html>
Agora estamos prontos para cozinhar nossa imagem. Certifique-se de estar na raiz do projeto (em ~/dockertest
, não na pasta html
) e execute:
docker build -t dockertest .
O ponto no final indica que usaremos o diretório atual como ponto de partida. O Docker deve encontrar o Dockerfile e começar a trabalhar. No entanto, deve levar apenas alguns segundos e, quando terminar, você poderá executá-lo com:
docker run --name DockerTest -p 8080:80 -d dockertest
Isso iniciará um novo contêiner chamado DockerTest, usando a imagem "dockertest" que criamos. O sinalizador -p
vincula uma porta local a uma porta dentro do contêiner, neste caso vinculando a porta HTTP padrão do nginx (porta 80) à porta 8080 no computador local. Abra localhost:8080
no seu navegador e você verá o nginx em execução.
Se você quiser mais configurações, você pode editar os arquivos de configuração do nginx incluindo COPY nginx.conf /etc/nginx/nginx.conf
e escrevendo seu arquivo de configuração. Isso é mais difícil de configurar do que editar o arquivo de configuração diretamente, pois você precisará reconstruir a imagem a cada alteração. Mas para o benefício adicional de poder pegar o mesmo contêiner que você usa no desenvolvimento e implantá-lo na produção, essa é uma troca bastante justa.
Se você quiser um tutorial mais detalhado sobre rede, implantação e conteinerização de aplicativos existentes, recomendamos a leitura deste guia.
- Como detectar câmeras de vigilância ocultas com seu telefone
- Aumente o nível de seus hambúrgueres com essas deliciosas coberturas
descubra mais conteúdo
Você pode ocultar um amigo de outro amigo no Facebook?
O que é um amplificador integrado?
Google Pixel Watch também tem detecção de queda, mas não até o próximo ano
As melhores xícaras de café aquecidas de 2022
Como automatizar seu iPhone com base na hora, atividade ou localização
"Isso deve ter sido antes do meu tempo"
Deixe uma resposta Cancelar resposta
O Docker é um projeto de código aberto que automatiza a implantação de aplicativos em contêineres de software, fornecendo uma camada adicional de abstração e automação da virtualização de aplicativos em vários sistemas operacionais.
O que é Docker e para que serve?
Docker é um sistema operacional (ou tempo de execução) para contêineres. O mecanismo do Docker é instalado em cada servidor em que você deseja executar contêineres e fornece um conjunto simples de comandos que você pode usar para criar, iniciar ou parar contêineres.
Quando o Docker deve ser usado?
6 razões para usar o docker ou qualquer outra tecnologia baseada em contêiner
- Os contêineres do Docker são simples.
- Os recipientes são leves.
- Com contêineres, posso evitar o efeito "funciona na minha máquina"
- Existe uma grande comunidade de desenvolvedores trabalhando em containers.
- Os contêineres são expansíveis.
Qual linguagem o Docker usa?
Componentes de software e configuração
Âmbito de aplicação | componentes de software |
---|---|
linguagem de programação | PHP, Python, Ruby, Java, JavaScript |
Ferramentas de desenvolvimento | node/npm, React, Laravel |
Sistemas de banco de dados | MySQL, PostgreSQL, MongoDB, Redis |
servidores web | Apache, nginx, lighttpd |
Qual problema o Docker resolve?
Com o Docker , você pode criar contêineres com o que você precisa para executar seu aplicativo, facilitando a portabilidade do produto em diferentes ambientes. Economizando dinheiro e reduzindo o uso de máquinas virtuais; e, portanto, uma grande quantidade de memória.