用registry快速搭建私有镜像仓库

1、背景

在 Docker 中,当我们执行 docker pull xxx 的时候,可能会比较好奇,docker 会去哪儿查找并下载镜像呢?

?它实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库,上面的镜像,大家都可以看到,也可以使用。所以,我们也可以带上仓库地址去拉取镜像,如:docker pull registry.hub.docker.com/library/alpine,不过要注意,这种方式下载的镜像的默认名称就会长一些。
?如果要在公司中使用 Docker,我们基本不可能把商业项目上传到公共仓库中,那如果要多个机器共享,又能怎么办呢?

正因为这种需要,所以私有仓库也就有用武之地了。

?所谓私有仓库,也就是在本地(局域网)搭建的一个类似公共仓库的东西,搭建好之后,我们可以将镜像提交到私有仓库中。这样我们既能使用 Docker 来运行我们的项目镜像,也避免了商业项目暴露出去的风险。

?下面我们用官方提供的registry镜像来搭建私有镜像仓库,当然还有其它很多方法。

2、环境

准备两台安装好docker的服务器:

服务端机器 (主机名为registry):docker私有仓库服务器,运行registry容器;

测试端机器 (主机名为node):普通的docker服务器,在这台服务器上下载一个测试镜像busybox,然后上传到registry服务器进行测试;

3、部署(服务端操作)

3.1 下载镜像registry
[[email protected] ~]# docker pull registry
Using default tag: latest
latest: Pulling from library/registry
81033e7c1d6a: Pull complete
b235084c2315: Pull complete
c692f3a6894b: Pull complete
ba2177f3a70e: Pull complete
a8d793620947: Pull complete
Digest: sha256:672d519d7fd7bbc7a448d17956ebeefe225d5eb27509d8dc5ce67ecb4a0bce54
Status: Downloaded newer image for registry:latest
3.2 查看镜下是否pull下来了

docker:用registry快速搭建私有镜像仓库

[[email protected] log]# docker images
registry                        latest              2e2f252f3c88        3 months ago        33.3MB
3.3 运行registry容器
[[email protected] ~]# docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
06a972de6218b1f1c3bf9b53eb9068dc66d147d14e18a89ab51db13e339d3dc9

参数说明

-itd:在容器中打开一个伪终端进行交互操作,并在后台运行;

-v:把宿主机的/data/registry目录绑定 到 容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;

-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了;

--restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器;

--name registry:创建容器命名为registry,你可以随便命名;

registry:latest:这个是刚才pull下来的镜像;

3.4 测试镜像仓库中所有的镜像
[[email protected] ~]# curl http://127.0.0.1:5000/v2/_catalog
{"repositories":[]}

现在是空的,因为才刚运行,里面没有任何镜像内容。

4、测试镜像仓库(测试端操作)

4.1 修改下镜像源并重启docker服务
[[email protected] ~]# vim /etc/docker/daemon.json
{
  "registry-mirrors": [ "https://registry.docker-cn.com"]
}

[[email protected] ~]# systemctl restart docker
4.1 下载busybox镜像
[[email protected] ~]# docker pull busybox
[[email protected] ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              f6e427c148a7        36 hours ago        1.15MB
4.2 为镜像打标签
[[email protected] ~]# docker tag busybox:latest  172.18.18.90:5000/busybox:v1

格式说明:Usage: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

busybox:lastest 这是源镜像,也是刚才pull下来的镜像文件;
172.18.18.90:500/busybox:v1:这是目标镜像,也是registry私有镜像服务器的IP地址和端口;

查看一下打好的tag:
docker:用registry快速搭建私有镜像仓库

4.3 上传到镜像服务器
[[email protected] ~]# docker push 172.18.18.90:5000/busybox:v1
The push refers to repository [172.18.18.90:5000/busybox]
Get https://172.18.18.90:5000/v2/: http: server gave HTTP response to HTTPS client

注意了,这是报错了,需要https的方法才能上传,我们可以修改下daemon.json来解决:

[[email protected] ~]# vim /etc/docker/daemon.json
{
  "registry-mirrors": [ "https://registry.docker-cn.com"],
  "insecure-registries": [ "172.18.18.90:5000"]
}

添加私有镜像服务器的地址,注意书写格式为json,有严格的书写要求,然后重启docker服务:

[[email protected] ~]# systemctl  restart docker

在次上传可以看到没问题 了:

[[email protected] ~]# docker push 172.18.18.90:5000/busybox:v1
The push refers to repository [172.18.18.90:5000/busybox]
c5183829c43c: Pushed
v1: digest: sha256:c7b0a24019b0e6eda714ec0fa137ad42bc44a754d9cea17d14fba3a80ccc1ee4 size: 527
4.4 测试下载镜像

上传测试没问题了,我们接下来测试一下从registry服务器上下载刚才上传的busybox镜像,先删除node主机上的镜像:

[[email protected] ~]# docker rmi -f $(docker images -aq)
Untagged: 172.18.18.90:5000/busybox:v1
Untagged: 172.18.18.90:5000/[email protected]:c7b0a24019b0e6eda714ec0fa137ad42bc44a754d9cea17d14fba3a80ccc1ee4
Untagged: busybox:latest
Untagged: [email protected]:2107a35b58593c58ec5f4e8f2c4a70d195321078aebfadfbfb223a2ff4a4ed21
Deleted: sha256:f6e427c148a766d2d6c117d67359a0aa7d133b5bc05830a7ff6e8b64ff6b1d1d
Deleted: sha256:c5183829c43c4698634093dc38f9bee26d1b931dedeba71dbee984f42fe1270d

查看一下node主机上的镜像全部删除了:

[[email protected] ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

然后,从registry服务器上下载busybox镜像:

[[email protected] ~]# docker pull 172.18.18.90:5000/busybox:v1
v1: Pulling from busybox
d070b8ef96fc: Pull complete
Digest: sha256:c7b0a24019b0e6eda714ec0fa137ad42bc44a754d9cea17d14fba3a80ccc1ee4
Status: Downloaded newer image for 172.18.18.90:5000/busybox:v1
[[email protected] ~]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
172.18.18.90:5000/busybox   v1                  f6e427c148a7        36 hours ago        1.15MB

列出所有镜像:

[[email protected] ~]# curl  http://10.118.156.4:5000/v2/_catalog
{"repositories":["busybox"]}
列出busybox镜像有哪些tag:

[[email protected] ~]# curl  http://10.118.156.4:5000/v2/busybox/tags/list
{"name":"busybox","tags":["v1"]}

docker使用web界面管理Registry

1:安装 docker-registry-web项目

------------registry-web
admin、123456

docker run -it -d -p 5001:8080 --name registry-web --link registry-srv            -e REGISTRY_URL=http://10.115.142.43:5000/v2/            -e REGISTRY_TRUST_ANY_SSL=true            -e REGISTRY_BASIC_AUTH="YWRtaW46MTIzNDU2Cg=="            -e REGISTRY_NAME=localhost:5000 hyper/docker-registry-web
-p 8080:8080 host主机端口8080映射到container8080
--name 起个名字,docker logs start stop啥的就可以用了
--link 连接registry,可以不加,以为下面有registry的url访问方式
-e REGISTRY_TRUST_ANY_SSL=true, 环境变量,相信所有的ssl,因为我们大部分的ssl都是自建的哦
-e REGISTRY_BASEIC_AUTH 这个里面的值是账号以及密码的base64获取的,可以通过
echo "ops:123123123" | base64
b3BzOjEyMzEyMzEyMwo=
获得。

-e REGISTRY_NAME, 目前看起来这个是会在页面上的显示

原文地址:https://www.cnblogs.com/pcct/p/12127832.html

时间: 2024-08-29 04:42:33

用registry快速搭建私有镜像仓库的相关文章

使用docker Registry快速搭建私有镜像仓库

当我们执行docker pull xxx的时候,docker默认是从registry.docker.com这个地址上去查找我们所需要的镜像文件,然后执行下载操作.这类的镜像仓库就是docker默认的公共仓库,所有人都可以直接查看或下载.使用,但是呢,基于网络原因,下载速度有限制比较慢.因此,我们在公司内部内网环境中使用dokcer,一般不会将镜像文件上传到公网公共库中.但内部共享使用就是个问题,所以,私有仓库就由此产生了. 什么是私有仓库? 私有仓库,就是本地(内网环境)组建的一个与公网公共库功

【Docker】(4)搭建私有镜像仓库

[Docker](4)搭建私有镜像仓库 说明 1. 这里是通过阿里云,搭建Docker私有镜像仓库. 2. 这里打包的镜像是从官网拉下来的,并不是自己项目创建的新镜像,主要测试功能 一.搭建过程 首先进入阿里云创建镜像仓库: https://dev.aliyun.com/search.html-->点击管理中心(初次使用会提示开通,然后设置密码) 然后创建命名空间和镜像仓库: 有关docker拉取和推送指令,点击上图的中管理,就能看到. 1.登录阿里云 docker login [email p

Docker——Registry搭建私有镜像仓库

前言 在 Docker 中,当我们执行 docker pull xxx 的时候,它实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库,上面的镜像,大家都可以看到,也可以使用. 所以,我们也可以带上仓库地址去拉取镜像,如:docker pull jenkins 在公司中使用 Docker,我们不可能把商业项目上传到公共仓库中,所以要搭建私有仓库. 1.部署仓库 准备1台安装好docker的服务器 (主机名为registry):do

用registry搭建私有镜像仓库

在192.168.1.244上搭建私有仓库#docker pull registry#docker run -d -p 5000:5000 -v /data/myregistry:/var/lib/registry --restart=always --name myregistry registry#vim /etc/docker/daemon.json { "registry-mirrors": ["https://frz7i079.mirror.aliyuncs.com

手动搭建Docker本地私有镜像仓库

实验环境:两个Centos7虚拟机,一个是Server,用作客户端,另一个是Registry,用作Docker私有镜像仓库. 基础配置 查看一下两台虚拟机的IP地址 Server的IP地址是192.168.134.151. Registry的IP地址是192.168.134.150. 使用setenforce 0临时关闭SElinux. 打开Server和Registry的内核转发功能 编辑配置文件/etc/sysctl.conf,添加下面的内容: net.ipv4.ip_forward = 1

Docker 构建私有镜像仓库(6)

title: Docker 构建私有镜像仓库(6) date: 2018-12-18 08:47:27 tags: Docker categories: Docker copyright: true --- Docker是基于Go语言实现的开源容器项目,Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口,Docker诞生于2013年年初,最初发起者是dotCloud公司.

k8s使用阿里云的私有镜像仓库

k8s使用阿里云的私有镜像仓库 如果从private register中拉取image:也可以参考这个地址:https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/#registry-secret-existing-credentials 1.在阿里云的容器镜像服务安装使用文档见如下:镜像仓库的创建:参考下边的这些文档https://help.aliyun.com/document_

docker 创建私有镜像仓库

docker 创建私有镜像仓库1创建配置文件 {"insecure-registries":["192.168.1.10:5000"] //本地仓库地址}2.重启动docker服务systemctl restart docker3.启动私有仓库docker run -d -p 5000:5000 registry:latest4.上传镜像到私有仓库给镜像打标签后上传 docker tag nginx:latest 192.168.1.10:5000/nginx:la

私有镜像仓库Harbor基础介绍与部署

企业级私有镜像仓库Harbor 一:介绍 Harbor,是一个英文单词,意思是港湾,港湾是干什么的呢,就是停放货物的,而货物呢,是装在集装箱中的,说到集装箱,就不得不提到Docker容器,因为docker容器的技术正是借鉴了集装箱的原理.所以,Harbor正是一个用于存储Docker镜像的企业级Registry服务. Registry是Docker官方的一个私有仓库镜像,可以将本地的镜像打标签进行标记然后push到以Registry起的容器的私有仓库中.企业可以根据自己的需求,使用Dokcerf