【docker】docker registry搭建私有镜像仓库

搭建私有镜像仓库

1)拉取私有仓库镜像:使用命令docker pull registry来拉取私有仓库的镜像。私有仓库本身就是一个镜像,通过该命令可以从Docker Hub或其他镜像仓库中获取。

2)启动私有仓库容器:使用命令 docker run -d -p 5000:5000 --restart=always --name registry registry 来启动私有仓库容器。这将创建一个名为registry的容器,将容器内的5000端口映射到主机的5000端口,并设置为总是重启。

默认情况下,仓库会被创建在容器的 /var/lib/registry 目录下,你可以通过 -v 参数来将镜像文件存放在本地的指定路径

例如下面的例子将上传的镜像放到本地的 /opt/data/registry 目录。

bash 复制代码
docker run -d \
   -p 5000:5000 \
   -v /opt/data/registry:/var/lib/registry \
   registry

启动成功后,可以使用 docker ps 查看

3)测试私有仓库:在浏览器中输入http://< your-server-ip >:5000/v2/_catalog,将替换为你的服务器IP地址,如果能够正常访问,说明私有仓库搭建成功。

注意:如果你的私有仓库没有使用https,需要在Docker客户端上修改/etc/docker/daemon.json文件(如果文件不存在则新建),添加私有仓库地址到"insecure-registries"列表中,然后重启Docker服务。例如,在daemon.json文件中添加以下内容:

bash 复制代码
{
    "insecure-registries": [
        "<your-server-ip>:5000"
    ]
}

然后,使用命令systemctl restart docker重启Docker服务。

当配置了这个选项后,Docker 在与这些指定的镜像仓库通信时,将不再验证 TLS 证书,从而绕过了 Docker 的安全机制。

如果采用insecure registry的模式,那么所有与Registry交互的主机上的Docker Daemon都要配置:--insecure-registry选项,所有使用Registry 的客户端也需要配置--insecure-registry

推送镜像到私有库

  1. 修改镜像标签用于推送

    bash 复制代码
    docker tag docker.xxx.com/summerwind/actions-runner:latest <your-server-ip>:5000/docker.mybacc.com/summerwind/actions-runner:latest
  2. 推送到私有仓库

    bash 复制代码
    docker push <your-server-ip>:5000/docker.xxx.com/summerwind/actions-runner:latest

    示例:

  3. 拉取镜像

bash 复制代码
docker pull <your-server-ip>:5000/docker.xxx.com/summerwind/actions-runner:latest

harbor是 VMware 公司开源了企业级 Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker registry 服务。

安装BuildKit (可忽略)

不需要此步骤,这是我对action任务构建准备使用的buildkit的误读 ,但是我既然已经启用了这个特性就不删除这部分内容了。

BuildKit是Docker的一个实验性特性,它提供了一种更强大、灵活的构建方式。您可以通过以下命令启用BuildKit:

bash 复制代码
# 确保您的Docker版本支持BuildKit
docker version
bash 复制代码
# 启动Docker守护进程并启用实验性特性
dockerd --experimental
bash 复制代码
# 启用BuildKit
export DOCKER_BUILDKIT=1
bash 复制代码
# 验证
echo $DOCKER_BUILDKIT
# 输出:1

dockerd --experimental输出failed to start daemon, ensure docker is not running or delete /var/run/docker.pid: process with PID 15050 is still running

bash 复制代码
{
    "exec-opts": [
        "native.cgroupdriver=systemd"
    ],
    "experimental": true
}

重启dockersystemctl restart docker,验证实验特性是否已启用docker info | grep Experimental

输出:Experimental: true

参考

docker搭建私有仓库
使用BuildKit构建Docker镜像并推送至Harbor仓库

相关推荐
乾元几秒前
基于时序数据的异常预测——短期容量与拥塞的提前感知
运维·开发语言·网络·人工智能·python·自动化·运维开发
企微自动化28 分钟前
企业微信自动化系统稳定性优化实战
运维·自动化·企业微信
Nerd Nirvana29 分钟前
IPv6组播在DLMS协议中的应用——基础知识掌握
linux·运维·服务器·网络·网络协议·ipv6·dlms协议
福尔摩斯张32 分钟前
TCP/IP网络编程深度解析:从Socket基础到高性能服务器构建(超详细)
linux·运维·服务器·开发语言·网络·网络协议·tcp/ip
卡布叻_星星34 分钟前
Docker之Windows与Linux不同架构部署理解
linux·windows·docker
北北~Simple38 分钟前
解析百度分享链接,到自己服务器上
运维·服务器·dubbo
春日见1 小时前
如何跑通,吃透一个开源项目?
linux·运维·开发语言·数码相机·matlab
Blueeyedboy5211 小时前
服务器监控工具-netdata
运维·服务器
weixin_462446231 小时前
【实战原创】Docker 清理指南:以 Coze Studio 为例的资源保留与清理实践(非万能方案)
docker·容器·eureka
hkNaruto1 小时前
【docker】docker exec -it 报错 open /dev/pts/0: operation not permitted
运维·docker·容器