{ switch(e.key) { case 'k': if (e.metaKey || e.ctrlKey) { e.preventDefault() open = !open; if (open) { document.body.classList.add('overflow-hidden'); } else { document.body.classList.remove('overflow-hidden'); } } } }">
Search Docker documentation
`; resultsHTML += results .map((item) => { return `
${item.meta.title}
…${item.excerpt}…
`; }) .join(""); modalSearchResults.innerHTML = resultsHTML; } } modalSearchInput.addEventListener("input", modalSearch); if (window.heap !== undefined) { modalSearchResults.addEventListener('click', function(event) { if (event.target.tagName === 'A' && event.target.closest('.link')) { const searchQuery = event.target.getAttribute('data-query'); const resultIndex = event.target.getAttribute('data-index'); const url = new URL(event.target.href); const properties = { docs_search_target_path: url.pathname, docs_search_target_title: event.target.textContent, docs_search_query_text: searchQuery, docs_search_target_index: resultIndex, docs_search_source_path: window.location.pathname, docs_search_source_title: document.title, }; heap.track("Docs - Search - Click - Result Link", properties); } }); } });
Table of contents
Now that you've built an image, you can share it. To share Docker images, you have to use a Dockerregistry. The default registry is Docker Hub and is where all of the images you've used have come from.
Docker ID
A Docker ID lets you access Docker Hub, which is the world's largest library and community for container images. Create aDocker ID for free if you don't have one.
To push an image, you first need to create a repository on Docker Hub.
Sign up or Sign in toDocker Hub.
Select the Create Repository button.
For the repository name, use
getting-started
. Make sure the Visibility is Public.Select Create.
In the following image, you can see an example Docker command from Docker Hub. This command will push to this repository.
Push the image
In the command line, run the
docker push
command that you see on DockerHub. Note that your command will have your Docker ID, not "docker". For example,docker push YOUR-USER-NAME/getting-started
.$ docker push docker/getting-startedThe push refers to repository [docker.io/docker/getting-started]An image does not exist locally with the tag: docker/getting-started
Why did it fail? The push command was looking for an image named
docker/getting-started
, butdidn't find one. If you rundocker image ls
, you won't see one either.To fix this, you need to tag your existing image you've built to give it another name.
Sign in to Docker Hub using the command
docker login -u YOUR-USER-NAME
.Use the
docker tag
command to give thegetting-started
image a new name. ReplaceYOUR-USER-NAME
with your Docker ID.$ docker tag getting-started YOUR-USER-NAME/getting-started
Now run the
docker push
command again. If you're copying the value fromDocker Hub, you can drop thetagname
part, as you didn't add a tag to theimage name. If you don't specify a tag, Docker uses a tag calledlatest
.$ docker push YOUR-USER-NAME/getting-started
Now that your image has been built and pushed into a registry, try running your app on a brandnew instance that has never seen this container image. To do this, you will use Play with Docker.
Note
Play with Docker uses the amd64 platform. If you are using an ARM based Mac with Apple silicon, you will need to rebuild the image to be compatible with Play with Docker and push the new image to your repository.
To build an image for the amd64 platform, use the
--platform
flag.$ docker build --platform linux/amd64 -t YOUR-USER-NAME/getting-started .
Docker buildx also supports building multi-platform images. To learn more, seeMulti-platform images.
Open your browser toPlay with Docker.
Select Login and then select docker from the drop-down list.
Sign in with your Docker Hub account and then select Start.
Select the ADD NEW INSTANCE option on the left side bar. If you don't see it, make your browser a little wider. After a few seconds, a terminal window opens in your browser.
In the terminal, start your freshly pushed app.
$ docker run -dp 0.0.0.0:3000:3000 YOUR-USER-NAME/getting-started
You should see the image get pulled down and eventually start up.
Tip
You may have noticed that this command binds the port mapping to adifferent IP address. Previous
docker run
commands published ports to127.0.0.1:3000
on the host. This time, you're using0.0.0.0
.Binding to
127.0.0.1
only exposes a container's ports to the loopbackinterface. Binding to0.0.0.0
, however, exposes the container's porton all interfaces of the host, making it available to the outside world.For more information about how port mapping works, seeNetworking.
Select the 3000 badge when it appears.
If the 3000 badge doesn't appear, you can select Open Port and specify
3000
.
Summary
In this section, you learned how to share your images by pushing them to aregistry. You then went to a brand new instance and were able to run the freshlypushed image. This is quite common in CI pipelines, where the pipeline willcreate the image and push it to a registry and then the production environmentcan use the latest version of the image.
Related information:
- docker CLI reference
- Multi-platform images
- Docker Hub overview
In the next section, you'll learn how to persist data in your containerized application.
Persist the DB