文章目录
镜像仓库简介
通俗来讲,镜像仓库就是存放着很多镜像的仓库,镜像仓库起到备份作用,方便其他机器下载使用
镜像仓库的种类可以大致分为两大类:
公共镜像仓库
官方:https://hub.docker.com/,基于各个软件开发或者有软件提供商开发的
非官方:其他组织或者公司开发的镜像,供大家免费使用
私有镜像仓库
公司自己搭建的,用于存放公司内部的镜像,自己管理,不提供给外部使用,避免了商业项目暴露出去的风险
阿里云镜像仓库的搭建与使用
阿里云镜像仓库申请地址:https://cr.console.aliyun.com/cn-shanghai/instances/repositories
创建仓库
登录,选择企业/个人实例
选择私有,其他可以自定义
选择本地仓库,创建
创建成功
点开仓库可以看到操作指南:
登录
docker login --username=豆浆两块钱 --password=xxx registry.cn-shanghai.aliyuncs.com
或者docker login --username=豆浆两块钱 registry.cn-shanghai.aliyuncs.com
将镜像推送到Registry
将本地mysql:5.7镜像推送上去:
(1)docker tag 0018a8d83892 registry.cn-shanghai.aliyuncs.com/zytenimages/mysql:5.7
(2)docker push registry.cn-shanghai.aliyuncs.com/zytenimages/mysql:5.7
推送成功
从Registry中拉取镜像
启动另一个虚拟机,从阿里云镜像仓库中拉取镜像:docker pull registry.cn-shanghai.aliyuncs.com/zytenimages/mysql:5.7
拉取成功:
harbor仓库搭建与使用
安装之前确保前置条件是否满足,需要安装docker、docker-compose、openssl以及python2.7以上
搭建harbor仓库
安装:yum -y install openssl
Harbor离线版安装下载地址:https://github.com/goharbor/harbor/releases
或者使用我下载的安装包地址:https://pan.baidu.com/s/14NfZYKz5-Y4hnkPG0koDYA?pwd=birc 提取码:birc
上传对应安装包到/usr/lcoal
目录下:
解压harbor-offline-installer-v2.7.1.tgz压缩包:tar -xf harbor-offline-installer-v2.7.1.tgz
进入解压后的harbor文件夹修改harbor.yml
配置: 如果没有这个文件,就把harbor.yml.tmpl
修改为harbor.yml
- 修改主机名为宿主机ip(注意空格): hostname: 10.24.200.10
- 修改密码(注意空格): harbor_admin_password: Harbor12345
执行脚本: sh prepare
执行安装命令:sh install.sh
执行命令: docker-compose ps
访问Harbor,默认用户名admin,密码是在harbor.yml
修改的密码
- 关闭:
docker-compose down
- 启动:
docker-compose up -d
因为是基于nginx搭建的仓库,可以看到端口默认是80,根据ip直接访问:
配置与使用harbor仓库
Docker配置使用自建仓库
- 默认docker只允许访问 https仓库
- 如果要访问http仓库需要自己配置
harbor网页上创建项目:
登录: docker login --username=admin 10.24.200.10
改名: docker tag mysql:5.7 10.24.200.10/zyten/mysql:5.7
推送: docker push 10.24.200.10/zyten/mysql:5.7
成功上传
下载: docker pull 10.24.200.10/zyten/mysql:5.7
下载成功
docker login
后有一个登录凭证(可删除,下次需要密码):
/root/.docker/config.json
(建议从安全角度出发,每次登录后进行删除)
本地镜像容器的载入与载出
一般情况下,都是把镜像上传到镜像仓库中使用时下载。但如果无法上外网,也没有私有仓库如harbor等,那只能把镜像以文件形式下载到本地,或者使用内网拷贝上传到服务器,载入这个镜像就可以使用了
两种办法:
- 保存镜像
- 保存容器
保存镜像
docker save c20987f18b13 -o /home/mysql.tar
-o
:指定输出位置
docker save mysql:5.7 > /home/mysql.tar
保存镜像成功
载入镜像: docker load -i mysql.tar
保存容器
docker export a43f4f969670 -o /home/mysql-export.tar
载入容器: docker import mysql-export.tar
可能出现的问题
输入正确的密码登录不进去阿里云镜像仓库
解决方法: 如果你的密码中包含数字,不要使用小键盘的数字输入,用字母上面一排的数字按键输入
执行sh prepare
报错
Error happened in config validation…
ERROR:root:Error: The protocol is https but attribute ssl_cert is not set
解决方法: 将harbor.yml中的12-18行都注释掉:
之后重新执行sh prepare
登录harbor仓库报错
Error response from daemon: Get “https://10.24.200.10/v2/”: dial tcp 10.24.200.10:443: connect: no route to host
配置允许访问http仓库:/etc/docker/daemon.json
{
"registry-mirrors": ["https://5xok66d4.mirror.aliyuncs.com"],"insecure-registries":["http://10.24.200.10"]
}
之后重启docker服务: systemctl restart docker.service
登陆成功