Compartilhar seu aplicativoShare your app

Agora que criamos uma imagem, vamos compartilhar!Now that we've built an image, let's share it! Para compartilhar imagens do Docker, você precisa usar um registro do Docker.To share Docker images, you have to use a Docker registry. O registro padrão é o Hub do Docker e é onde vêm todas as imagens que usamos.The default registry is Docker Hub and is where all of the images we've used have come from.

Criar um repositórioCreate a repo

Para enviar uma imagem por push, primeiro, você precisa criar um repositório no Hub do Docker.To push an image, first, you need to create a repo on Docker Hub.

  1. Vá para o Hub do Docker e faça logon se necessário.Go to Docker Hub and log in if you need to.

  2. Clique no botão criar repositório .Click the Create Repository button.

  3. Para o nome do repositório, use getting-started .For the repo name, use getting-started. Verifique se a visibilidade é Public .Make sure the Visibility is Public.

  4. Clique no botão criar !Click the Create button!

Se você olhar o lado direito da página, verá uma seção chamada comandos do Docker.If you look on the right-side of the page, you'll see a section named Docker commands. Isso fornece um comando de exemplo que será necessário executar para enviar por push para este repositório.This gives an example command that you will need to run to push to this repo.

Comando Docker com exemplo de push

Enviar a imagem por pushPush the image

  1. Na linha de comando, tente executar o comando push que você vê no Hub do Docker.In the command line, try running the push command you see on Docker Hub. Observe que o comando usará o namespace, não o "Docker".Note that your command will be using your namespace, not "docker".

    $ docker push docker/getting-started
    The push refers to repository [docker.io/docker/getting-started]
    An image does not exist locally with the tag: docker/getting-started
    

    Por que houve falha?Why did it fail? O comando Push estava procurando uma imagem chamada Docker/Getting-Started, mas não encontrou uma.The push command was looking for an image named docker/getting-started, but didn't find one. Se você executar docker image ls o, não verá um.If you run docker image ls, you won't see one either.

    Para corrigir isso, você precisa "marcar" sua imagem existente que criamos para dar outro nome.To fix this, you need to "tag" your existing image we've built to give it another name.

  2. Entre no Hub do Docker usando o comando docker login -u <username> .Sign in to the Docker Hub using the command docker login -u <username>.

  3. Use o docker tag comando para dar getting-started um novo nome à imagem.Use the docker tag command to give the getting-started image a new name. Não deixe de alternar <username> com a ID do Docker.Be sure to swap out <username> with your Docker ID.

    docker tag getting-started <username>/getting-started
    
  4. Agora, tente o comando Push novamente.Now try your push command again. Se você estiver copiando o valor do Hub do Docker, poderá descartar a tagname parte, pois não adicionou uma marca ao nome da imagem.If you're copying the value from Docker Hub, you can drop the tagname portion, as you didn't add a tag to the image name. Se você não especificar uma marca, o Docker usará uma marca chamada latest .If you don't specify a tag, Docker will use a tag called latest.

    docker push <username>/getting-started
    

    Em vez da linha de comando, você também pode clicar com o botão direito do mouse na marca da imagem na seção imagens do modo de exibição do Docker e escolher enviar por push... e, em seguida, escolher conectar registro... e Hub do Docker.Instead of the command line, you can also right-click on the image tag in the Images section of the Docker view, and choose Push..., then choose Connect registry... and then Docker Hub.

Executar a imagem em uma nova instânciaRun the image on a new instance

Agora que sua imagem foi criada e enviada por push para um registro, tente executar o aplicativo em uma nova instância do que nunca viu essa imagem de contêiner!Now that your image has been built and pushed into a registry, try running the app on a brand new instance that has never seen this container image! Para fazer isso, você usará o play com o Docker.To do this, you will use Play with Docker.

  1. Abra o navegador para brincar com o Docker.Open your browser to Play with Docker.

  2. Entre com sua conta do Hub do Docker.Sign in with your Docker Hub account.

  3. Quando você estiver conectado, clique no link "+ Adicionar nova instância" na barra do lado esquerdo.Once you're logged in, click on the "+ ADD NEW INSTANCE" link in the left side bar. (Se você não o vir, torne seu navegador um pouco mais largo.) Depois de alguns segundos, uma janela de terminal será aberta no navegador.(If you don't see it, make your browser a little wider.) After a few seconds, a terminal window will be opened in your browser.

    Reproduzir com o Docker Adicionar nova instância

  4. No terminal, inicie seu aplicativo enviado por push recentemente.In the terminal, start your freshly pushed app.

    docker run -dp 3000:3000 <username>/getting-started
    

    Você deve ver a imagem ser retirada e, eventualmente, iniciar!You should see the image get pulled down and eventually start up!

  5. Clique na notificação 3000 quando ela aparecer e você deverá ver o aplicativo com suas modificações!Click on the 3000 badge when it comes up and you should see the app with your modifications! Alegria!Hooray! Se o emblema 3000 não aparecer, você poderá clicar no botão abrir porta e digitar 3000.If the 3000 badge doesn't show up, you can click on the Open Port button and type in 3000.

RecapitulaçãoRecap

Nesta seção, você aprendeu a compartilhar imagens enviando-as por push para um registro.In this section, you learned how to share images by pushing them to a registry. Em seguida, você passou para uma instância totalmente nova e conseguiu executar a imagem enviada por push recentemente.You then went to a brand new instance and were able to run the freshly pushed image. Isso é muito comum em pipelines de CI, em que o pipeline criará a imagem e a enviará por push para um registro e, em seguida, o ambiente de produção poderá usar a versão mais recente da imagem.This is quite common in CI pipelines, where the pipeline will create the image and push it to a registry and then the production environment can use the latest version of the image.

Agora que isso foi descoberto, lembre-se de que no final da última seção, quando você reiniciou o aplicativo, perdeu todos os itens da lista de tarefas.Now that you've that figured out, recall that at the end of the last section, when you restarted the app, you lost all of your todo list items. Obviamente, isso não é uma excelente experiência do usuário, então você aprenderá a seguir como você pode manter os dados entre as reinicializações!That's obviously not a great user experience, so you'll learn next how you can persist the data across restarts!

Próximas etapasNext steps

Continue com o tutorial!Continue with the tutorial!