麒麟系统V10 SP2 -- Docker 私有仓库 Registry

2022-11-19 09:49:51 浏览数 (1)

Docker镜像仓库(Repository)负责镜像文件的存储和分发的工作,也被称为registry;Docker客户端执行pull和push操作时与Docker仓库进行镜像交互。Docker的官方镜像仓库https://index.docker.io/v1/ 。在Docker客户端,执行docker info命令,查询docker配置的镜像仓库地址;

Docker私有镜像仓库主流的软件有Docker registry(Distribution), Harbor和Nexus。

Docker Registry搭建

1,下载registry image

代码语言:javascript复制
docker pull registry

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

2,创建镜像本地存储目录 /usr/local/registry

代码语言:javascript复制
mkdir -p /usr/local/registry

docker run 运行 registry

代码语言:javascript复制
docker run -d 
    -p 5000:5000 
    -v /usr/local/registry:/var/lib/registry 
    registry

查看容器端口映射

代码语言:javascript复制
docker port gallant_pare
5000/tcp -> 0.0.0.0:5000
5000/tcp -> :::5000

3,配置连接私有仓库(修改/etc/docker/daemon.json文件)

vim /etc/docker/daemon.json

代码语言:javascript复制
{
        "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
        "insecure-registries": ["http://192.168.100.221:5000"]
}

4,私有仓库上传、搜索、下载镜像

创建好私有仓库之后,使用 docker tag 来标记镜像,然后推送它到仓库。私有仓库地址为 127.0.0.1:5000

查看本地镜像

代码语言:javascript复制
docker image ls

5,镜像标记

命令格式

docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]

标记nginx镜像

代码语言:javascript复制
docker tag nginx  192.168.100.221:5000/nginx:v1.0

6,上传镜像

代码语言:javascript复制
docker push 192.168.100.221:5000/nginx:v1.0

7,curl 查看仓库中的镜像

代码语言:javascript复制
[root@docker01 /]# curl http://192.168.100.221:5000/v2/_catalog

8,删除本地image

代码语言:javascript复制
docker rmi 192.168.100.221:5000/nginx:v1.0

9,镜像存储目录查看镜像文件

代码语言:javascript复制
[root@docker01 v2]# cd /usr/local/registry/docker/registry/v2
[root@docker01 v2]# ls
blobs  repositories

10,拉取私有仓库镜像

代码语言:javascript复制
docker pull 192.168.100.221:5000/nginx:v1.0

Docker私有仓库Registry服务器开启认证配置

1,创建用户认证密码文件

用户:useradmin 密码:userpassword

创建用户账户存储目录

代码语言:javascript复制
mkdir auth

docker创建密码文件

代码语言:javascript复制
docker run 
 --entrypoint htpasswd 
 httpd:2 -Bbn useradmin userpassword > auth/htpasswd

系统命令创建密码文件

代码语言:javascript复制
yum install -y httpd-tools
#
mkdir auth
#
htpasswd -Bbn admin admin123 >> auth/htpasswd

2,启动registry

代码语言:javascript复制
docker run -d 
        -p 5000:5000 
        --restart=always 
        --name registry 
        -v "$(pwd)"/auth:/auth 
        -v /var/lib/registry:/var/lib/registry 
        -e "REGISTRY_AUTH=htpasswd" 
        -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" 
        -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd 
        registry:2

-v "$(pwd)" 当前工作目录

--restart=always,在容器退出时总是重启容器

查看容器日志

代码语言:javascript复制
docker logs -f --tail 20 registry

3,通过浏览器验证

代码语言:javascript复制
访问http://ip:5000/v2/_catalog

4,使用docker login登录私有仓库

代码语言:javascript复制
docker   login http://192.168.100.221:5000 
Username: admin
Password: 
Login Succeeded

用户名和密码存储在/root/.docker/config.json文件,可编辑该文件

登录:docker login -u username -p userpasswd http://192.168.100.221:5000

退出:docker logout http://192.168.100.221:5000

5,标记 registry镜像

代码语言:javascript复制
docker image tag registry 192.168.100.221:5000/registry:v202211
#查看本地image
docker image ls

6,推送本地 imgae 到私有仓库

代码语言:javascript复制
docker image push 192.168.100.221:5000/registry:v202211

7,curl访问验证

代码语言:javascript复制
[root@docker01 /]# curl  -u admin http://192.168.100.221:5000/v2/_catalog
Enter host password for user 'admin':
{"repositories":["nginx","registry"]}

8,删除本地 registry:v202211 镜像

代码语言:javascript复制
docker image rm  192.168.100.221:5000/registry:v202211

9,私有仓库下载镜像测试

代码语言:javascript复制
docker pull 192.168.100.221:5000/registry:v202211

0 人点赞