docker push

Estimated reading time: 2 minutes

Edge only: This is the CLI reference for Docker CE Edge versions. Some of these options may not be available to Docker CE stable or Docker EE. You can view the stable version of this CLI reference or learn about Docker CE Edge.


Push an image or a repository to a registry


docker push [OPTIONS] NAME[:TAG]


Name, shorthandDefaultDescription
--disable-content-trusttrueSkip image signing

Parent command

dockerThe base command for the Docker CLI.

Extended description

Use docker push to share your images to the Docker Hub registry or to a self-hosted one.

Refer to the docker tag reference for more information about valid image and tag names.

Killing the docker push process, for example by pressing CTRL-c while it is running in a terminal, terminates the push operation.

Progress bars are shown during docker push, which show the uncompressed size. The actual amount of data that’s pushed will be compressed before sending, so the uploaded size will not be reflected by the progress bar.

Registry credentials are managed by docker login.

Concurrent uploads

By default the Docker daemon will push five layers of an image at a time. If you are on a low bandwidth connection this may cause timeout issues and you may want to lower this via the --max-concurrent-uploads daemon option. See the daemon documentation for more details.


Push a new image to a registry

First save the new image by finding the container ID (using docker ps) and then committing it to a new image name. Note that only a-z0-9-_. are allowed when naming images:

$ docker commit c16378f943fe rhel-httpd

Now, push the image to the registry using the image ID. In this example the registry is on host named registry-host and listening on port 5000. To do this, tag the image with the host name or IP address, and the port of the registry:

$ docker tag rhel-httpd registry-host:5000/myadmin/rhel-httpd

$ docker push registry-host:5000/myadmin/rhel-httpd

Check that this worked by running:

$ docker images

You should see both rhel-httpd and registry-host:5000/myadmin/rhel-httpd listed.