公有镜像中心的搭建和使用
1 )在 官方docker镜像中心推送
-
在 hub.docker.com 上注册账号 (国内一般访问不了,原因不多说)
-
找到 Create Repository 按钮就行仓库的创建
-
这样就在官方创建了一个仓库,比如地址为: xx/y-y
- xx 是我的账户名
- y-y 是刚创建的仓库名
-
现在,我将本地的docker镜像,推送到这个仓库里
- 没有登录过,先使用 docker login 进行登录
- 假设本地的 nginx:latest 镜像,现在我要对其进行打一个新的tag
- $
docker tag nginx xx/y-y:latest
- 之后,将其推送到远程
- $
docker push xx/y-y:latest
-
如果 hub.docker.com 在国内无法访问,可以在阿里云上创建 docker hub
-
为官方docker镜像中心加速
-
配置国内 Docker 镜像源 $
vi /etc/docker/daemon.json
{ "registry-mirrors": ["https://registry.docker-cn.com"], "live-restore": true }
-
配置之后,需要重启 $
systemctl restart docker
2 )在阿里云docker镜像中心搭建
- 在阿里云控制台,选择 容器镜像服务
- 为何选择阿里云,因为当你下载的时候,会走cdn来加速
- 进入实例列表,有两种,个人版和企业版本
- 可以选择个人版实验一下,创建后,在 仓库管理/镜像仓库即可进行管理
搭建私有镜像中心
- 我们现在用的私有docker镜像中心是JCR,也就是 JFrog Container Registry
- 这个和开源的harbor有点类似,但是这个比harbor更加的好用,更加的强大
- 因为它不仅能管这个通用仓库,还有helm仓库,harbor是没有通用类型仓库的
整体架构图如下
- docker client 连接的是 JCR, JCR 一般连的是 docker.io/library 这个远程
- JCR 是部署在本地私有环节中的, JCR 对外除了连接官方的,还可以连接阿里云容器服务
- JCR 在这里做了一个远程代理的作用,JCR里面可以有多种不同的仓库
安装 JCR (JFrog Container Registry)
- 在 master 节点上执行以下命令
- 设置环境变量
- $
vi ~/.bash_profile
增加 JFROG_HOME 环境变量export JFROG_HOME=~/jfrog
- $
source ~/.bash_profile
生效
- $
- 设置目录和文件
- $
sudo mkdir -p $JFROG_HOME/artifactory/var/etc
- $
cd $JFROG_HOME/artifactory/var/etc
- $
sudo touch ./system.yaml
- $
sudo chown -R 1030:1030 $JFROG_HOME/artifactory/var
- $
sudo chmod -R 777 $JFROG_HOME/artifactory/var
- $
- 运行docker
- docker 镜像可以先行下载,比较大
- $
docker pull releases-docker.jfrog.io/jfrog/artifactory-jcr:latest
- 注意,这个镜像在 Mac 上正常运行,在 centos 9 上会有问题
- 如果在 c9 上运行,按照官方下载 jcr 版本的 Linux版自行安装, 不再赘述
- $
docker run --name artifactory-jcr -v $JFROG_HOME/artifactory/var/:/var/opt/jfrog/artifactory -d -p 8081:8081 -p 8082:8082 releases-docker.jfrog.io/jfrog/artifactory-jcr:latest
- $
sudo docker ps | grep jcr
查看运行状态 - 在Mac客户端浏览器上访问master节点上的服务
master.k8s:8081
- 在访问前,可能需要先等一会儿
- 设置环境变量