跳转至

Registry搭建docker私仓

​ Docker Registry是官方提供的工具,用于构建私有镜像仓库。

一、环境搭建

​ Docker Registry也是Docker Hub提供的一个镜像,可以直接拉取运行。

1.拉取镜像

Bash
docker pull registry

2.启动Docker Registry

注:-d命令表示后台运行。

Bash
docker run -d -p 5000:5000 -v /app/myregistry/:/tmp/registry --privileged=true registry

image-20240425230559694

3.验证(查看私服中的所有镜像),Registry会返回json格式的所有镜像目录

Bash
curl http://10.22.51.63:5000/v2/_catalog        #IP和端口为docker主机IP

二、向Registry私仓中上传镜像

1.从Hub上下载ubuntu镜像到本地并成功运行

Bash
docker pull ubuntu
docker run -d -it ubuntu
docker exec -it docker容器id /bin/bash    # 这里docker容器id为ff61b666e6a4

2.原始的ubuntu镜像是不带着ifconfig命令的,外网连通的情况下,安装ifconfig命令并测试通过

Bash
apt-get update
apt-get install -y net-tools

3.安装完成后,commit我们自己的新镜像

Bash
docker commit -m="ifconfig cmd add" -a="jerion" ff61b666e6a4 jerionubuntu:1.2

4.启动我们的新镜像并和原来的对比

Bash
docker stop ff61b666e6a4    #停掉原来的ubuntu容器id
docker images
docker run -it docker镜像id /bin/bash    #启动个新的测试ifconfig(这里docker镜像id为92c1dbc89906)

5.将新镜像修改符合docker镜像规范

按照公式:docker tag 镜像:Tag Host:Port/Repository:Tag

自己host主机IP地址,填写同学你们自己的,不要粘贴错误,

使用命令 docker tag 将jerionubuntu:1.2 这个镜像修改为10.22.51.63:5000/jerionubuntu:1.2

Bash
docker tag jerionubuntu:1.2 10.22.51.63:5000/jerionubuntu:1.2
docker images    #检验

6.配置docker允许接收http请求

修改/etc/docker/daemon.json,添加insecure-registries允许http:

Bash
{ 
    "registry-mirros": ["https://xxxx.mirror.aliyuncs.com"], 
    "insecure-registries": ["10.22.xxx.xxx:5000"] 
}

​ 然后重启docker:(新版本的docker会立即生效)

Bash
# centos6 的命令
chkconfig daemon-reload
service docker restart

# centos7/8 的命令
systemctl daemon-reload
systemctl restart docker

重启容器
docker run -d -p 5000:5000 -v /app/myregistry/:/tmp/registry --privileged=true registry

注:重启容器后,容器ID会变化,这里容器id变为4e9aea0a4ee3。

三、推送到私仓

1.添加一个对应私仓地址的tag

image-20240425231730969

2.推送到私服库

Bash
docker push 10.22.51.63:5000/jerionubuntu:1.2

image-20240425232550471

3.再次验证私服库

Bash
curl http://10.22.51.63:5000/v2/_catalog

image-20240425232622868

四、pull到本地并运行

1.复制一份到主机

​ 将10.22.51.63:5000/jerionubuntu复制一份到主机(可忽略次步骤)

Bash
docker run -it 92c1dbc89906 /bin/bash   #运行一个10.22.51.63:5000/joshubuntu虚拟机(不加-d退出即停止运行)
docker export 202062990a66 >bak.tar #将虚拟机打包到Linux
docker rmi -f 92c1dbc89906      #删掉原有的images镜像包

2.pull到本地

Bash
curl -XGET http://10.22.51.63:5000/v2/_catalog
docker pull 10.22.51.63:5000/jerionubuntu:1.2

image-20240425235836544