文章目录

  • 前言
  • 一、docker仓库是啥
  • 二、公共仓库使用
  • 三、(重要)私有仓库搭建使用(registry)
  • 四、私有仓库配置加密及认证
  • 4.1 给仓库加密
  • 4.2 加用户认证


前言

在docker-镜像篇中我们学习了关于docker的概念与镜像操作docker容器技术1 --镜像篇 本篇继续学习关于docker仓库的使用

一、docker仓库是啥

参考链接docker-hub官网 Docker 仓库是用来包含镜像的位置,Docker提供一个注册服务器(Register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。
Docker运行中使用的默认仓库是 Docker Hub 公共仓库。
docker hub是docker公司维护的公共仓库,用户可以免费使用,也可以购买私有仓库。

docker 共有仓库 docker公共仓库_HTTP

二、公共仓库使用

首先在https://cloud.docker.com/网站注册一个账号

docker 共有仓库 docker公共仓库_docker_02

然后在docker主机上登录

docker 共有仓库 docker公共仓库_HTTP_03

上传格式

docker 共有仓库 docker公共仓库_docker 共有仓库_04


在docker hub上新建一个公共仓库

docker 共有仓库 docker公共仓库_HTTP_05


上传镜像到docker hub

docker 共有仓库 docker公共仓库_linux_06

三、(重要)私有仓库搭建使用(registry)

官方参考使用手册

下载registry镜像
docker pull registry:2

运行registry镜像
docker run -d --name registry -p 5000:5000 -v /opt/registry:/var/lib/registry registry
   # -d     后台运行 
   # --name 给容器起名  
   # -p     映射端口  docker机端口(本地):容器端口
   # -v     指定路径  本地路径:容器路径
   
按仓库格式打标签
docker tag webserver:v5  localhost:5000/webserver:latest

上传至私有仓库
docker push localhost:5000/webserver

启动server2,并安装docker和server1一样
server1配置了私有仓库,拿server2做测试
给server2配置加速器

[root@server2 docker]# cat daemon.json 
{
  "insecure-registries" : ["1.2.3.1:5000"]
}

四、私有仓库配置加密及认证

参考官方文档

4.1 给仓库加密

用openssl工具生成加密密钥对放到/root/certs目录下
openssl req   -newkey rsa:4096 -nodes -sha256 -keyout certs/westos.org.key -x509 -days 365 \
-out /root/certs/westos.org.crt

停止registry运行或者直接删除
docker container stop registry 或者 docker rm registry

重启registry带有加密功能
docker run -d --name registry \
-p 443:443 \
-v /opt/registry:/var/lib/registry \
-v root/certs:/certs \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key \

把公钥传给给客户机或者自身(也可以是客户机),不然无法上传下载
mkdir /etc/docker/certs.d/reg.westos.org/ -p
cp /root/certs/westos.org.crt /etc/docker/certs.d/reg.westos.org/ca.crt

docker push reg.westos.org/webserver:v0 #测试上传

4.2 加用户认证

yum install -y httpd-tools
mkdir  /root/auth
htpasswd --help
htpasswd -B -c /root/auth/htpasswd haojin
htpasswd -B auth/htpasswd admin
cat auth/htpasswd 


docker rm -f registry 
docker run -d --name registry \
-p 443:443 \
-v /opt/registry:/var/lib/registry \
-v "$(pwd)"/certs:/certs \
-v "$(pwd)"/auth:/auth \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry

测试,这里不可以上传和下载
docker images 
docker tag ubuntu:latest reg.westos.org/ubuntu:latest
docker push reg.westos.org/ubuntu:latest

用户登陆仓库,测试就可以上传下载了
docker login reg.westos.org

docker push reg.westos.org/ubuntu:latest

登陆的密码信息保存目录:
/root/.docker/config.json

docker 共有仓库 docker公共仓库_linux_07



---仓库基本使用说到这,下一篇企业级仓库harbor的使用---