Como usar o comando do Docker Desktop Engine para alternar tipos de contêiner

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar o comando docker desktop engine use para alternar entre tipos de contêineres. Começará por entender o propósito do Docker Engine (mecanismo Docker) e como verificar o tipo de contêiner atual.

Em seguida, explorará como alternar para contêineres Windows (em sistemas Windows) e, em seguida, voltar para contêineres Linux. Este laboratório fornecerá experiência prática com o gerenciamento de ambientes de contêineres usando a Docker CLI (interface de linha de comando Docker).

Entenda o propósito do comando docker desktop engine use

Nesta etapa, entenderemos o propósito do Docker Engine (mecanismo Docker). Docker é uma plataforma que permite automatizar a implantação, o dimensionamento e o gerenciamento de aplicações usando a containerização. Um contêiner é uma unidade padrão de software que empacota o código e todas as suas dependências, para que a aplicação seja executada de forma rápida e confiável de um ambiente de computação para outro.

O Docker Engine é o componente central do Docker. É uma aplicação cliente-servidor com estes componentes principais:

  • Um servidor, que é um tipo de programa de longa execução chamado processo daemon (o comando dockerd).
  • Uma REST API (API REST) que especifica interfaces que os programas podem usar para se comunicar com o daemon e instruí-lo sobre o que fazer.
  • Uma interface de linha de comando (CLI) cliente (o comando docker).

A CLI usa a REST API para controlar o daemon Docker através de scripts ou comandos diretos da CLI. Muitas outras aplicações Docker usam a API e a CLI subjacentes.

No ambiente LabEx, o Docker Engine já está instalado e em execução. Você pode verificar isso executando o comando docker info. Este comando exibe informações em todo o sistema sobre a instalação do Docker.

docker info

Você deve ver uma saída semelhante a esta, mostrando detalhes sobre a versão do Docker, o driver de armazenamento e outras informações.

Client:
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.18.9
 Git commit:        baeda1f
 Built:             Tue Oct 25 18:01:17 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server:
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.9
  Git commit:       305620d
  Built:            Tue Oct 25 17:59:50 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.10
  GitCommit:        b34a5c8e5367b9d7e345e9371193898cdce23f40
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
 ... (more output)

Esta saída confirma que o Docker Engine está em execução e fornece detalhes sobre sua configuração. Entender o Docker Engine é o primeiro passo para trabalhar com contêineres.

Verifique o tipo de contêiner atual

Nesta etapa, verificaremos o tipo de contêiner atual suportado pelo Docker Engine no ambiente LabEx. O Docker pode executar diferentes tipos de contêineres, dependendo do sistema operacional subjacente. No Linux, o Docker executa principalmente contêineres Linux. No Windows, o Docker Desktop permite alternar entre contêineres Linux e contêineres Windows.

No ambiente LabEx, você está executando em uma máquina virtual Linux. Portanto, o Docker Engine está configurado para executar contêineres Linux. Você pode confirmar isso examinando a saída do comando docker info novamente. Procure o campo OSType.

docker info

Na saída, você deve ver uma linha semelhante a esta:

OSType: linux

Isso indica que o Docker Engine está atualmente configurado para executar contêineres Linux. Este é o comportamento padrão e esperado em um sistema Linux.

Para ilustrar ainda mais, vamos tentar executar um contêiner Linux simples. Usaremos a imagem hello-world, que é uma imagem muito pequena que simplesmente imprime uma mensagem e sai. Primeiro, precisamos baixar a imagem para nossa máquina local.

docker pull hello-world

Você deve ver a saída indicando que a imagem está sendo baixada.

Using default tag: latest
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:f5233545e4356188889a389e18b407cd9f61f46056b1e172b338cd91f09e9e4c
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

Agora, execute o contêiner usando o comando docker run.

docker run hello-world

Você deve ver uma saída semelhante a esta, que é a mensagem impressa pelo contêiner hello-world.

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
    (assuming it was not already locally available).
 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

Isso confirma que você pode executar contêineres Linux com sucesso neste ambiente.

Mudar para contêineres Windows (apenas Windows)

Nesta etapa, discutiremos a mudança para contêineres Windows. Observe que esta etapa é aplicável somente se você estiver executando o Docker Desktop em um sistema operacional Windows. O ambiente LabEx é uma máquina virtual Linux, portanto, você não pode realmente realizar essa mudança aqui. No entanto, entender o conceito é importante se você trabalha com Docker no Windows.

No Windows, o Docker Desktop executa uma pequena máquina virtual Linux por padrão para hospedar o Docker Engine e executar contêineres Linux. Isso ocorre porque o Docker Engine principal foi originalmente projetado para Linux. No entanto, o Windows também suporta a execução de contêineres Windows nativos.

Se você estivesse em uma máquina Windows com o Docker Desktop instalado, normalmente mudaria para contêineres Windows clicando com o botão direito do mouse no ícone do Docker na bandeja do sistema e selecionando "Switch to Windows containers" (Mudar para contêineres Windows). Essa ação reconfiguraria o daemon Docker para usar o tempo de execução do contêiner Windows em vez da VM Linux.

Depois de mudar para contêineres Windows, você poderá baixar e executar imagens criadas para Windows, como mcr.microsoft.com/windows/nanoserver.

Por exemplo, em uma máquina Windows após a mudança, você pode executar:

docker pull mcr.microsoft.com/windows/nanoserver
docker run mcr.microsoft.com/windows/nanoserver cmd /c echo Hello from Windows Container!

A saída seria:

Hello from Windows Container!

Como você está em um ambiente Linux, tentar baixar ou executar imagens de contêineres Windows falhará. O Docker Engine nesta VM Linux não é capaz de executar contêineres Windows.

Vamos demonstrar isso tentando baixar uma imagem do Windows.

docker pull mcr.microsoft.com/windows/nanoserver

Você provavelmente verá uma mensagem de erro indicando que a imagem não foi encontrada ou não pode ser baixada, pois o daemon Docker está procurando uma imagem Linux com esse nome.

Using default tag: latest
Error response from daemon: manifest for mcr.microsoft.com/windows/nanoserver:latest not found: manifest unknown: manifest unknown

Isso confirma que o ambiente atual está configurado para contêineres Linux e não pode executar contêineres Windows.

Portanto, não há comandos práticos para executar neste ambiente LabEx para mudar para contêineres Windows. Esta etapa serve como informação conceitual para usuários que podem trabalhar com Docker no Windows.

Voltar para contêineres Linux (apenas Windows)

Nesta etapa, discutiremos a mudança de volta para contêineres Linux. Semelhante à etapa anterior, isso é relevante apenas se você estiver usando o Docker Desktop em um sistema operacional Windows. No ambiente Linux LabEx, você já está usando contêineres Linux, portanto, nenhuma ação é necessária para mudar de volta.

Em uma máquina Windows onde você mudou anteriormente para contêineres Windows, você mudaria de volta para contêineres Linux clicando com o botão direito do mouse no ícone do Docker na bandeja do sistema e selecionando "Switch to Linux containers" (Mudar para contêineres Linux). Essa ação interromperia o tempo de execução do contêiner Windows e reiniciaria a máquina virtual Linux que hospeda o Docker Engine para contêineres Linux.

Depois de mudar de volta para contêineres Linux em uma máquina Windows, você poderá novamente baixar e executar imagens de contêineres Linux, como a imagem ubuntu.

Por exemplo, em uma máquina Windows após a mudança de volta, você pode executar:

docker pull ubuntu
docker run ubuntu echo Hello from Linux Container!

A saída seria:

Hello from Linux Container!

Como você está em um ambiente Linux, você já está usando contêineres Linux. Você pode confirmar isso novamente verificando o OSType na saída de docker info.

docker info

Como visto na Etapa 2, a saída mostrará:

OSType: linux

Isso confirma que o Docker Engine neste ambiente LabEx está configurado para executar contêineres Linux, e nenhuma ação é necessária para mudar de volta.

Portanto, não há comandos práticos para executar neste ambiente LabEx para mudar de volta para contêineres Linux. Esta etapa, como a anterior, fornece informações conceituais para usuários que podem trabalhar com Docker no Windows.

Resumo

Neste laboratório, começamos entendendo o propósito do Docker Engine, que é o componente central da plataforma Docker para containerização. Aprendemos que o Docker Engine consiste em um processo daemon, uma API REST e uma interface de linha de comando (CLI). Verificamos a instalação do Docker e seu status de execução usando o comando docker info, que forneceu informações detalhadas em todo o sistema sobre o ambiente Docker.

Após a compreensão inicial, prosseguimos para verificar o tipo de contêiner atual sendo usado pelo Docker Engine. Para usuários Windows, o laboratório nos guiou pelo processo de mudança do tipo de contêiner para contêineres Windows e, subsequentemente, de volta para contêineres Linux, demonstrando como gerenciar diferentes ambientes de contêiner dentro do Docker Desktop.