====== Docker - Images - Update and Commit an Image ======
===== Pull an image =====
For example, to pull the Ubuntu 20.04 Docker image from the Docker Hub.
docker pull ubuntu:20.04
----
===== Create a new container =====
Create a new container from the Ubuntu 20.04 image.
docker run -t -i ubuntu:20.04 /bin/bash
This will create a new container and attach to the bash shell as shown below:
root@013aecdd6919:/#
----
===== Install NginX into the Container =====
Install the Nginx package inside the container:
root@013aecdd6919:/# apt-get update -y
root@013aecdd6919:/# apt-get install nginx -y
----
===== Exit from the Container =====
root@013aecdd6919:/# exit
----
===== Obtain the Container ID =====
Locate your new container ID:
docker ps -a
returns:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
013aecdd6919 ubuntu:20.04 "/bin/bash" 3 minutes ago Exited (0) 33 seconds ago happy_camper
----
===== Save the Updated Container =====
Save the updated container with a new image named nginx-instance:
docker commit "013aecdd6919" nginx-instance
* Where: 013aecdd6919 is the ID of the container.
----
===== Verify the newly created Image =====
Verify the newly created image “nginx-instance”:
docker images
returns:
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx-instance latest 12cefc9b5362 57 seconds ago 158MB
ubuntu 20.04 d70eaf7277ea 12 days ago 72.9MB
----
===== Log in to the Docker Hub =====
**NOTE:** In order to work with the Docker Hub, you will need to create an account on [[https://hub.docker.com/account/signup|Docker Hub]].
docker login
returns:
Username: peter
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
----
===== Tag the Image to push to the Docker Hub =====
For example, to tag the nginx-instance image:
docker tag 12cefc9b5362 peter/nginx-instance:ubuntu
where:
* 12cefc9b5362 is the ID of the nginx-instance image.
* peter is your Docker Hub username.
* nginx-instance is the name of the image that you want to push.
----
===== Verify the Tagged Image =====
docker images
returns:
REPOSITORY TAG IMAGE ID CREATED SIZE
peter/nginx-instance ubuntu 12cefc9b5362 12 minutes ago 158MB
nginx-instance latest 12cefc9b5362 12 minutes ago 158MB
ubuntu 20.04 d70eaf7277ea 12 days ago 72.9MB
----
===== Push the new Image to the Docker Hub =====
Push the new image named peter/nginx-instance to the Docker Hub:
docker push peter/nginx-instance
----
===== Login to the Docker Hub =====
Login to the Docker Hub using your web browser and verify that the nginx-instance image appears in the Repositories.