In this article, you will learn how to configure Docker Private Registry in Rocky Linux 8.
Table of Contents:
- What is Docker Private Registry?
- Environment Specification
- Updating Linux Software Packages
- Configure Docker Private Registry
- Conclusion
What is Docker Private Registry? :
Docker creates containers from Docker images. These images are provided by Docker Hub, a centralized public registry that contains various official and unofficial images of almost every software in the world. However, there are situations, when you require an on-premises Docker Private Registry to create and share custom docker images amongst your organizational units.
Docker Private Registry has a few advantages over Docker Hub, some of them are:
- Since, the Docker Registry is located on premises, therefore it increases availability and speed.
- Organization’s private images are kept within the Organization.
- Provides user authentication to restrict unauthorized access.
- Provides SSL based encryption for better security.
Here, we are using the Docker Engine CE to configure a Private Docker Registry. Therefore, it is advised that you should read Docker Deep Dive for some basic level understanding of Docker technology.
Recommended Online Training:Hands on With Docker & Docker Compose From a Docker Captain
Environment Specification:
We are using a minimal Rocky Linux 8 virtual machine with following specifications.
- CPU - 3.4 Ghz (2 cores)
- Memory - 2 GB
- Storage - 20 GB
- Operating System - Rocky Linux 8.6 (Green Obsidian)
- Hostname – docker-01.centlinux.com
- IP Address - 192.168.116.128 /24
Updating Linux Software Packages:
We are using the same Linux based Docker Server that we have configured in our previous installation guide.
By using a ssh client, connect with docker-01.centlinux.com as root user.
Refresh yum cache of your Linux server.
# dnf makecache
Rocky Linux 8 - AppStream 1.9 kB/s | 4.8 kB 00:02
Rocky Linux 8 - BaseOS 1.0 kB/s | 4.3 kB 00:04
Rocky Linux 8 - Extras 974 B/s | 3.5 kB 00:03
Rocky Linux 8 - Extras 2.7 kB/s | 11 kB 00:03
Docker CE Stable - x86_64 5.0 kB/s | 3.5 kB 00:00
Metadata cache created.
Execute following command to update Linux software packages.
# dnf update -y
Check the Linux Kernel and Operating System versions.
# uname -r 4.18.0-372.13.1.el8_6.x86_64 # cat /etc/system-release Rocky Linux release 8.6 (Green Obsidian)
Check the version of Docker that is being used in this article.
# docker version
Client: Docker Engine - Community
Version: 20.10.17
API version: 1.41
Go version: go1.17.11
Git commit: 100c701
Built: Mon Jun 6 23:03:11 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.12)
Go version: go1.17.11
Git commit: a89b842
Built: Mon Jun 6 23:01:29 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.6
GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
runc:
Version: 1.1.2
GitCommit: v1.1.2-0-ga916309
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Configure Docker Private Registry:
List the locally available Docker images in your server.
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
Docker Hub provides an image for Docker Registry.
You can download it and use to create your on-premises Docker Private Registry.
Pull the registry image from Docker Hub.
# docker pull registry
Using default tag: latest
latest: Pulling from library/registry
2408cc74d12b: Pull complete
ea60b727a1ce: Pull complete
c87369050336: Pull complete
e69d20d3dd20: Pull complete
fc30d7061437: Pull complete
Digest: sha256:bedef0f1d248508fe0a16d2cacea1d2e68e899b2220e2258f1b604e1f327d475
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest
Create a directory to use as a consistent storage for Docker Containers.
# mkdir -p /opt/docker/containers/docker-registry/registry
Start the Docker Container with following command.
# docker run -d \ > --name docker-registry \ > --restart=always \ > -p 5000:5000 \ > -v /opt/docker/containers/docker-registry/registry:/var/lib/registry \ > registry 826777fa276a49f117e0b6300b036bc3f84ae5aa0a27e124a5a4a20c0c13b3e0
The service port 5000/tcp of Registry container is mapped with 5000/tcp of Docker host.
Therefore, you have to allow this service port in Linux firewall, so the network machines can access it.
# firewall-cmd --permanent --add-port=5000/tcp success # firewall-cmd --reload success
Now, pull an image from Docker Hub.
We prefer to pull Alpine Linux image, because it is smaller in size.
# docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
2408cc74d12b: Already exists
Digest: sha256:686d8c9dfa6f3ccfc8230bc3178d23f84eeaf7e457f36f271ab1acc53015037c
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest
Now, tag the alpine image as follows, and make it ready to add into your Docker Private Registry.
# docker tag alpine:latest localhost:5000/alpine
Push the Alpine image into Local Docker Registry.
# docker push localhost:5000/alpine
The push refers to repository [localhost:5000/alpine]
2408cc74d12b: Pushed
latest: digest: sha256:686d8c9dfa6f3ccfc8230bc3178d23f84eeaf7e457f36f271ab1acc53015037c size: 527
Get the list the locally available images of Alpine Linux.
# docker images | grep alpine
alpine latest e66264b98777 5 weeks ago 5.53MB
localhost:5000/alpine latest e66264b98777 5 weeks ago 5.53MB
You can see that, one image is available from Docker Hub while the other is available via your Docker Private Registry.
Conclusion:
In this article, you have learned how to configure Docker Private Registry in Rocky Linux 8.
No comments:
Post a Comment