docker registry搭建自己的本地镜像仓库

阅读数:75 评论数:0

跳转到新版页面

分类

Linux

正文

一、概述

在 Docker 中,RegistryHarbor 都是用来存储和管理 Docker 镜像的工具,但它们的定位和功能有所不同。

Docker Registry 是一个用来存储 Docker 镜像的系统,简单来说,它是一个镜像的仓库。

二、具体操作

1、启动docker并拉取registry镜像源

sudo service docker start  //启动docker
sudo docker pull registry  //下载registry镜像

2、查看是否下载成功

sudo docker images

3、下载以后启动该容器,可以将容器内的数据映射挂载到自己指定的目录上

mkdir -p /opt/data/registry  //创建目录
sudo docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry 
      --name private_registry registry  //启动容器
-d : 让容器可以后台运行
-p :指定映射端口(前者是宿主机的端口号,后者是容器的端口号)
-v :数据挂载(前者是宿主机的目录,后者是容器的目录)
--name : 为运行的容器命名

4、查看是否成功启动该容器

sudo docker ps

5、更改docker的配置文件,添加自己的私库地址。

sudo vim /etc/default/docker
在DOCKER_OPTS更改成如下:
DOCKER_OPTS="--registry-mirror=http://hub-mirror.c.163.com --insecure-registry 192.168.147.129:5000"
**5000端口一定得加,宿主机默认是访问80端口,不想加的话可以在启动容器的时候以宿主机的80端口
映射容器的5000端口

6、修改以后重启容器并开启registry服务

sudo service docker restart   //重启容器
sudo docker start private_registry   //重启registry服务

三、推拉镜像

1、标记(tag)镜像

在上传镜像之前,你需要将本地镜像标记为自建 Registry 的镜像。假设你本地有一个镜像 my-image,你可以使用 docker tag 命令将其标记成适合推送到私有仓库的格式。格式是:

<your_registry_domain>/<your_repository_name>:<tag>

例如,假设你的 Registry 地址是 localhost:5000,并且你要上传的镜像是 my-image,标签为 latest,可以执行以下命令:

docker tag my-image localhost:5000/my-image:latest

2、推送镜像到自建Registry

标记完成后,你可以将镜像推送到自建 Registry。使用 docker push 命令:

docker push localhost:5000/my-image:latest

3、拉取镜像

docker pull localhost:5000/my-image:latest

四、安全配置

如果你打算在生产环境中使用 Registry,最好为其配置 SSL 和认证机制(如基本认证)。这样可以确保你的 Registry 安全,并防止未经授权的访问。

1、使用https启动registry

要启用 HTTPS,首先需要准备 SSL 证书,然后使用如下命令启动 Registry:

docker run -d -p 5000:5000 --name registry \
  -v /path/to/cert:/certs \
  -e REGISTRY_HTTP_SECRET=your-secret \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/cert.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/cert.key \
  --restart always registry:2

2、配置基础认证

你可以通过创建一个 .htpasswd 文件来启用基本认证:

(1)安装htpasswd工具(例如apache2-utils)

(2)创建认证文件

htpasswd -c /path/to/htpasswd username

(3)启动registry时指定认证文件

docker run -d -p 5000:5000 --name registry \
  -v /path/to/htpasswd:/auth/htpasswd \
  -e REGISTRY_AUTH=htpasswd \
  -e REGISTRY_AUTH_HTPASSWD_REALM="Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  --restart always registry:2



相关推荐

1、安装 yum install -y docker //查看是否安装成功 yum list installed|grep docker (1)启动 systemctl start docker (2

Docker的数据持久化主要有两种方式: (1) bind mount (2) volume Docker的数据持久化即使数据不随着container的