Automatizando compilações e salvando imagens

No início rápido do Windows Server anterior, um contêiner do Windows foi criado de uma amostra do .Net Core pré-existente. Este exercício detalhará como automatizar a criação de imagens de contêiner usando um Dockerfile e armazenar as imagens de contêiner no Registro público do Hub do Docker.

Este guia rápido é específico para contêineres do Windows Server no Windows Server 2016 e usará a imagem base do contêiner do Windows Server Core. É possível encontrar documentação adicional de início rápido no sumário à esquerda desta página.

Pré-requisitos:

  • Um sistema de computador (físico ou virtual) executando o Windows Server 2016.
  • Configure este sistema com o recurso de contêiner do Windows e o Docker. Para obter um passo a passo sobre essas etapas, consulte Contêineres do Windows no Windows Server.
  • Uma ID de Docker, que será usada para enviar por push uma imagem de contêiner para o Hub do Docker. Se você não tiver uma ID de Docker, inscreva-se para obter uma na Nuvem do Docker.

1. Imagem de contêiner – Dockerfile

Embora um contêiner possa ser manualmente criado, modificado e depois capturado em uma nova imagem de contêiner, o Docker inclui um método para automatizar esse processo usando um Dockerfile. Para este exercício, é necessária uma ID de Docker. Se você não tiver uma ID de Docker, inscreva-se para obter uma na Nuvem do Docker.

No host do contêiner, crie um diretório c:\build e, nesse diretório, crie um arquivo chamado Dockerfile. Observação: o arquivo não deve ter uma extensão de arquivo.

powershell new-item c:\build\Dockerfile -Force

Abra o Dockerfile no Bloco de Notas.

notepad c:\build\Dockerfile

Copie o texto a seguir para o Dockerfile e salve o arquivo. Esses comandos instruem Docker a criar uma nova imagem, usando microsoft/iis como base. O dockerfile executa os comandos especificados na instrução RUN, neste caso, o arquivo index.html é atualizado com conteúdo novo.

Para obter mais informações sobre Dockerfiles, consulte a Dockerfiles on Windows (Dockerfiles no Windows).

FROM microsoft/iis
RUN echo "Hello World - Dockerfile" > c:\inetpub\wwwroot\index.html

O comando docker build iniciará o processo de criação da imagem. O parâmetro -t instrui o processo de criação para nomear a nova imagem como iis-dockerfile. Substitua 'user' pelo nome de usuário da sua conta de Docker. Se você não tiver uma conta com o Docker, inscreva-se para obter uma na Nuvem do Docker.

docker build -t <user>/iis-dockerfile c:\Build

Quando concluído, você poderá verificar se a imagem foi criada usando o comando docker images.

docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
iis-dockerfile      latest              8d1ab4e7e48e        2 seconds ago       9.483 GB
microsoft/iis       windowsservercore   c26f4ceb81db        2 weeks ago         9.48 GB
windowsservercore   10.0.14300.1000     dbfee88ee9fd        8 weeks ago         9.344 GB
windowsservercore   latest              dbfee88ee9fd        8 weeks ago         9.344 GB

Agora, implante um contêiner com o seguinte comando, substituindo novamente o usuário pela ID do Docker.

docker run -d -p 80:80 <user>/iis-dockerfile ping -t localhost

Quando o contêiner tiver sido criado, acesse o endereço IP do host do contêiner. Você deverá ver o aplicativo hello world.

De volta ao host do contêiner, use docker ps para obter o nome do contêiner e docker rm para remover o contêiner. Observação: substitua o nome do contêiner neste exemplo pelo nome real do contêiner.

Obtenha o nome do contêiner.

docker ps

CONTAINER ID   IMAGE            COMMAND               CREATED              STATUS              PORTS                NAMES
c1dc6c1387b9   iis-dockerfile   "ping -t localhost"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp   cranky_brown

Remova o contêiner.

docker rm -f <container name>

2. Push do Docker

As imagens de contêiner do Docker podem ser armazenadas em um Registro de contêiner. Depois que uma imagem é armazenada em um Registro, ela pode ser recuperada para uso posterior em vários hosts de contêiner diferentes. O Docker oferece um Registro público para armazenar imagens de contêiner no Hub do Docker.

Para este exercício, a imagem hello world personalizada será enviada por push para sua própria conta no Hub do Docker.

Primeiro, faça logon em sua conta do Docker usando docker login command.

docker login

Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.

Username: user
Password: Password

Login Succeeded

Depois de conectado, a imagem de contêiner pode ser enviada por push para o Hub do Docker. Para fazer isso, use o comando docker push. Substitua 'user' pela sua ID de Docker.

docker push <user>/iis-dockerfile

A imagem de contêiner agora pode ser baixada do Hub do Docker em qualquer host do contêiner do Windows usando docker pull. Para este tutorial, podemos excluir a imagem existente e puxá-la do Hub do Docker.

docker rmi <user>/iis-dockerfile

A execução do docker images mostrará que a imagem foi removida.

docker images

REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
modified-iis              latest              51f1fe8470b3        5 minutes ago       7.69 GB
microsoft/iis             latest              e4525dda8206        3 hours ago         7.61 GB

Por fim, efetuar pull do Docker pode ser usado para puxar a imagem de volta para o host do contêiner. Substitua user pelo nome de usuário da sua conta de Docker.

docker pull <user>/iis-dockerfile

Próximas etapas

Se você quiser saber como empacotar um aplicativo de exemplo ASP.NET, visite os tutoriais do Windows 10 nos links abaixo.

Contêineres do Windows no Windows 10