在CentOS 7上建立本地Docker Registry

首先

我发现DockerHub上有很多镜像可供选择,但是我想把自己创建的Docker镜像上传到自己的Registry,并随时下载并启动它。

可以准备一个Dockerfile并从DockerHub下载Docker镜像进行创建,但是它可能需要很长时间。所以我们可以准备一个已经准备好的镜像,并将其放置在某个Docker服务器上。

可以通过HTTPS进行证书注册通信,但内部使用只是为了提供一个方便快速使用的环境。

请在服务器和客户端上准备两个环境(例如虚拟机)。

步骤

请用中文概括以下步骤。

    • docker のインストール

 

    • docker の起動

 

    • Docker Registry の用意

 

    • サーバ側でイメージの用意(ダウンロードとRegistry)

 

    • Docker Registry からイメージのダウンロード

サーバ側でダウンロード
クライアント側でダウンロード

安装Docker

需要在注册表服务器和客户端上进行安装。
要在rpm中安装docker,需要先进行下载源注册。

yum -y install yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce

启动 Docker

在注册表服务器上,通过客户端启动 docker 服务,并在操作系统启动时自动启动。

systemctl start docker
systemctl enable docker

准备Docker Registry

在注册表服务器上下载注册表镜像

docker pull registry

以下是以 Docker 镜像添加的方式

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
registry            latest              2d4f4b5309b1        3 months ago        26.2MB

启动 Docker Registry

启动Docker Registry时,为了使Registry上的镜像持久化,需要将主机操作系统的目录挂载到容器中。

docker run -d -p 5000:5000 \
    -v /var/opt:/var/lib/registry \
    registry

确认容器已启动

docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
35b3882b8536        registry            "/entrypoint.sh /etc…"   About an hour ago   Up About an hour    0.0.0.0:5000->5000/tcp   dreamy_roentgen

在主机操作系统上,会创建以下类型的目录,并在其下挂载。

ls /var/opt/docker/registry/v2/
blobs  repositories

如果注册图像,则以下是存储图像的目录 repositories 下的位置。

ls -l /var/opt/docker/registry/v2/repositories/aaa
合計 0
drwxr-xr-x 5 root root 55  9月 16 15:33 centos_local

在服务器端准备图像(下载和注册表)。

将原始镜像下载到本地仓库服务器上进行注册。

不拘一格,暫且下載 CentOS。

docker pull centos
Using default tag: latest
latest: Pulling from library/centos
3c72a8ed6814: Pull complete
Digest: sha256:76d24f3ba3317fa945743bb3746fbaf3a0b752f10b10376960de01da70685fbd

确认已经下载完成

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              0d120b6ccaa8        5 weeks ago         215MB
registry            latest              2d4f4b5309b1        2 months ago        26.2MB

创建(带标签的)镜像以登记到 Docker Registry

通常情况下,我们会使用 Dockerfile 等来创建包含各种工具和配置的镜像,但这次我们只需直接使用下载的 CentOS 镜像。

docker tag centos localhost:5000/aaa/centos_local:1.0

进行标记后,可以得到如下图片。

docker images
REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
centos                              latest              0d120b6ccaa8        5 weeks ago         215MB
localhost:5000/aaa/centos_local   1.0                 0d120b6ccaa8        5 weeks ago         215MB
registry                            latest              2d4f4b5309b1        2 months ago        26.2MB

将映像注册到 Docker 仓库

将已打标签的镜像注册到Docker Registry。

docker push localhost:5000/aaa/centos_local:1.0
The push refers to repository [localhost:5000/iseki/centos_local]
291f6e44771a: Pushed
1.0: digest: sha256:fc4a234b91cc4b542bac8a6ad23b2ddcee60ae68fc4dbd4a52efb5f1b0baad71 size: 529

注册后,图像不再需要,可以删除。

docker rmi localhost:5000/iseki/centos_local:1.0
Untagged: localhost:5000/iseki/centos_local:1.0
Untagged: localhost:5000/iseki/centos_local@sha256:fc4a234b91cc4b542bac8a6ad23b2ddcee60ae68fc4dbd4a52efb5f1b0baad71

确认删除后,确认列表中没有图像。

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              0d120b6ccaa8        5 weeks ago         215MB
registry            latest              2d4f4b5309b1        2 months ago        26.2MB

从Docker Registry下载镜像。

在服务器端下载

你可以从服务器上执行以下命令来进行下载。

docker pull localhost:5000/aaa/centos_local:1.0

客户端下载

如果没有在客户端设置以下内容,连接无法进行。

如果没有在客户端进行以下配置,无法连接。

只有在客户端进行以下设定,才能连接上。

cat /etc/docker/daemon.json
{ "insecure-registries":["<Docker RegistoryのサーバーIP、またはホスト名>:5000"] }

进行上述设置后,重新启动 Docker 服务。

systemctl restart docker

在这种状态下,执行从docker注册服务器获取镜像的命令。

docker pull 10.1.5.25:5000/aaa/centos_local:1.0
1.0: Pulling from iseki/centos_local
3c72a8ed6814: Pull complete
Digest: sha256:fc4a234b91cc4b542bac8a6ad23b2ddcee60ae68fc4dbd4a52efb5f1b0baad71
Status: Downloaded newer image for 10.1.5.25:5000/aaa/centos_local:1.0
10.1.5.25:5000/aaa/centos_local:1.0

Docker的映像被下载

# docker images
REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
10.1.5.25:5000/aaa/centos_local   1.0                 0d120b6ccaa8        7 weeks ago         215MB
广告
将在 10 秒后关闭
bannerAds