searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

私有镜像仓库的制作和使用

2023-10-20 07:46:31
45
0

  在我们容器化技术使用的过程中,从公有镜像仓库拉取镜像是常见的,但往往为了满足高带宽、非公开、离线环境等场景需求,使用私有化镜像仓库必不可少。本文结合实际案例,介绍如何制作和使用私有镜像仓库。

1.私有镜像仓库的制作

准备镜像列表

  假设所需的应用镜像及仓库镜像如下。其中应用镜像保存在imagelist文件里。

镜像名称 镜像作用
a.com/a1:v1 应用镜像1
a.com/a2:v2 应用镜像2
b.com/b3:v3 应用镜像3
r.com/registry:latest 仓库镜像,默认服务端口为5000

启动本地镜像仓库

在镜像仓库制作机器中,选定工作目录为/apps/alogic,以docker启动镜像仓库。

docker run -itd --name nest-registry \
    --net=host \
    --restart=always \
    -v /apps/alogic/nest-registry/data:/var/lib/registry \
    r.com/registry:latest

上传到本地仓库

通过shell 把应用镜像上传至本地

for fullImage in $(cat ./imagelist)
do
  local imageWithVersion=${fullImage#*/}
  docker pull $fullImage
  docker image tag $fullImage 127.0.0.1:5000/${imageWithVersion}
  docker push 127.0.0.1:5000/${imageWithVersion}
  docker image rm 127.0.0.1:5000/${imageWithVersion}
  docker image rm $fullImage
done

打包镜像仓库

上传完成后,把镜像数据包、镜像仓库镜像打包,以便拷贝到私有化目标主机使用。

tar -zcf registry-data.tar.gz nest-registry
docker export r.com/registry:latest>registry-image.tar

2.私有镜像仓库的使用

在私有化目标主机x.x.x.x上,加载并使用镜像仓库。

准备镜像仓库数据

 选定工作目录为/apps/alogic,利用docker载入镜像仓库镜像,并解压镜像数据包。

docker load <registry-image.tar
tar -zxf registry-data.tar.gz nest-registry

启动本地仓库

启动镜像仓库,挂载数据目录,加载镜像数据包。

docker run -itd --name nest-registry \
    --net=host \
    --restart=always \
    -v /apps/alogic/nest-registry/data:/var/lib/registry \
    r.com/registry:latest

修改配置文件

以k8s-crio为例,修改镜像源域名指向本地。

vi /etc/containers/registries.conf
unqualified-search-registries = ["a.com"]

[[registry]]
prefix = "a.com"
insecure = true
blocked = false
location = "xxxx:5000"

[[registry]]
prefix = "b.com"
insecure = true
blocked = false
location = "xxxx:5000"

拉取使用

目标主机可以按需拉取应用镜像,完成业务目标。

docker pull a.com/a1:v1
docker pull a.com/a2:v2
docker pull b.com/b3:v3
0条评论
0 / 1000
吴****铭
4文章数
0粉丝数
吴****铭
4 文章 | 0 粉丝
原创

私有镜像仓库的制作和使用

2023-10-20 07:46:31
45
0

  在我们容器化技术使用的过程中,从公有镜像仓库拉取镜像是常见的,但往往为了满足高带宽、非公开、离线环境等场景需求,使用私有化镜像仓库必不可少。本文结合实际案例,介绍如何制作和使用私有镜像仓库。

1.私有镜像仓库的制作

准备镜像列表

  假设所需的应用镜像及仓库镜像如下。其中应用镜像保存在imagelist文件里。

镜像名称 镜像作用
a.com/a1:v1 应用镜像1
a.com/a2:v2 应用镜像2
b.com/b3:v3 应用镜像3
r.com/registry:latest 仓库镜像,默认服务端口为5000

启动本地镜像仓库

在镜像仓库制作机器中,选定工作目录为/apps/alogic,以docker启动镜像仓库。

docker run -itd --name nest-registry \
    --net=host \
    --restart=always \
    -v /apps/alogic/nest-registry/data:/var/lib/registry \
    r.com/registry:latest

上传到本地仓库

通过shell 把应用镜像上传至本地

for fullImage in $(cat ./imagelist)
do
  local imageWithVersion=${fullImage#*/}
  docker pull $fullImage
  docker image tag $fullImage 127.0.0.1:5000/${imageWithVersion}
  docker push 127.0.0.1:5000/${imageWithVersion}
  docker image rm 127.0.0.1:5000/${imageWithVersion}
  docker image rm $fullImage
done

打包镜像仓库

上传完成后,把镜像数据包、镜像仓库镜像打包,以便拷贝到私有化目标主机使用。

tar -zcf registry-data.tar.gz nest-registry
docker export r.com/registry:latest>registry-image.tar

2.私有镜像仓库的使用

在私有化目标主机x.x.x.x上,加载并使用镜像仓库。

准备镜像仓库数据

 选定工作目录为/apps/alogic,利用docker载入镜像仓库镜像,并解压镜像数据包。

docker load <registry-image.tar
tar -zxf registry-data.tar.gz nest-registry

启动本地仓库

启动镜像仓库,挂载数据目录,加载镜像数据包。

docker run -itd --name nest-registry \
    --net=host \
    --restart=always \
    -v /apps/alogic/nest-registry/data:/var/lib/registry \
    r.com/registry:latest

修改配置文件

以k8s-crio为例,修改镜像源域名指向本地。

vi /etc/containers/registries.conf
unqualified-search-registries = ["a.com"]

[[registry]]
prefix = "a.com"
insecure = true
blocked = false
location = "xxxx:5000"

[[registry]]
prefix = "b.com"
insecure = true
blocked = false
location = "xxxx:5000"

拉取使用

目标主机可以按需拉取应用镜像,完成业务目标。

docker pull a.com/a1:v1
docker pull a.com/a2:v2
docker pull b.com/b3:v3
文章来自个人专栏
mumu的个人专栏
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0