docker仓库,用来管理镜像。主要分为公共仓库和私人仓库。下面介绍了公共仓库Docker Hub、私人仓库Registry和harbor。DockerHUb仓库管理
保存和分发镜像的最直接方法就是使用 Docker Hub。 Docker Hub 是 Docker 公司维护的公共 Registry。用户可以将自己的镜像保存到 Docker Hub 免费的 repository 中,如果不希望别人访问自己的镜像,也可以购买私有 repository。
一般,你需要先在docker中心创建一个账户(如果您尚未有)。你可以直接在Docker Hub创建你的账户。
如果有已有账号可以点击sign in 进行登录,登陆后是这个样子
使用docker login登录dockerhub 这将提示您输入用户名,这个用户名将成为你的公共存储库的命名空间名称。如果你的名字可用,docker会提示您输入一个密码和你的邮箱,然后会自动登录到Docker Hub,你现在可以提交和推送镜像到Docker Hub的你的存储库。
出现 Login Succeeded就说明我们登录成功管理镜像
注:你的身份验证凭证将被存储在你本地目录的.dockercfg文件中
通过docker images可以看到我们所有的镜像列表
我们现在的learn-docker-storage有三个版本,现在我们把前两个有问题的版本删除,docker rmi 镜像ID可以删除镜像
这样我们就删除了我们没有用的镜像了,可以节省内存空间修改镜像命名
修改镜像的 repository 使之与 Docker Hub 账号匹配。 Docker Hub 为了区分不同用户的同名镜像,镜像的 registry 中要包含用户名,完整格式为:[用户名]/镜像名:tag
我们通过 docker tag 命令重命名镜像
这样就将我们的镜像改名了,这个就符合我们的dockerhub的规范了推送镜像
现在我们要将我们的镜像推送到docker hub
推送镜像的规范是docker push 注册用户名/镜像名:tag,因为我们上面已经把镜像名字改正确了,所以可以直接推送。
这样我们就将我们的数据推送到docker hub,我们发现只有最顶层的镜像推送了,openjdk的镜像并没有推送,直接复用了仓库的,这就是分层的好处检查镜像
我们可以到docker hub检查我们的镜像
可以看到我们的镜像已经推送过来了,点开详情可以看到我们镜像的内容以及tag号
可以通过docker rmi 镜像ID删除本地镜像
再次查看本地镜像,已经没有了我们的微服务的镜像
这个时候可以从docker hub拉取镜像
这个时候已经将镜像拉取下来了,我们可以运行镜像了运行镜像
执行下面的命令进行创建镜像
我们访问下,检查下是否可以正常运行
到这里我们就完成dockerhub仓库的发布与拉取直接运行测试
在真实环境中,我们一般不会拉取在运行,一般都是直接运行,如果docker检查镜像不存在会自动拉取
停止服务并删除镜像
我们直接运行容器
这一个run命令就解决了容器的拉取以及容器运行的问题registry仓库管理
我们可以通过获取官方的 registry 镜像来运行。 这将使用官方提供的 registry 镜像来启动私有仓库,默认情况下,仓库会被创建在容器的 /var/lib/registry 目录下。我们可以通过 -v 参数将镜像文件存放在本地的指定路径。
这样我们的registry已经启动起来了访问测试
这时我们可以通过浏览器访问 http://ip:5000/v2/_catalog 查看仓库是否启动成功。
registry 上传镜像的命名规范是 仓库IP:5000/镜像名称:tag修改镜像名称
将我们的镜像改成服务规范的名字
使用命令推送镜像
我们发现推送报错了,这是因为docker推送默认使用的https的方式,而我们的registry只支持http的方式
对于 Linux 系统,我们可以在 /etc/docker/daemon.json (daemon.josn 文件不存在则新建该文件)
添加下面的配置
完整的配置如下
执行以下命令重启重新加载配置并生效
执行命令再次推送
我们发现这次推送成功了再次访问registry
访问测试检查是否已经推送
我们发现我们的镜像已经推送到了registry,我们通过以下URL访问下tag列表
可以通过docker rmi 镜像ID删除本地镜像
我们发现自己的registry很快就拉取并且运行起来了访问微服务测试
harbor是一个由vm公司开源的企业级容器镜像仓库,有以下功能 harbor是构建企业级私有docker镜像的仓库的开源解决方案,它是 Docker Registry的更高级封装,它除了提供友好的Web UI界面,角色和用户权限管理,用户操作审计等功能外,它还整合了K8s的插件(Add-ons)仓 库,即Helm通过chart方式下载,管理,安装K8s插件,而chartmuseum 可以提供存储chart数据的仓库。
- 管理用户界面
- 基于角色的访问控制
- LDAP/AD 集成及日志审计等基本运维操作
这里我们使用离线安装
公司的项目一般不予许我们上传到 Docker Hub 这类的公共仓库中,所有学会创建一个私有仓库也是非常必要的 虽然hub.docker.com上可以保存镜像,但是网速相对较慢,在内部环境中搭建一个私有的公共仓库是个更好的方案。
Harbor官方地址:https://github.com/goharbor/harbor/releases 下载最新版安装包
需要安装docker以及docker-compose的环境上面我们已提前安装了
解压harbor的安装包
进入目录 然后将harbor.yml.tmp复制一份并该命为harbor.yml
harbor作为私有仓库作用在公司内网,一般都是信任关系,没多大必要做https,使用http即可!
所以 把https相关的已经注释掉
并注意配置文件的用户名密码配置,默认是 用户名是:admin,密码是:Harbor12345,如果修改需要安装前修改<img alt="image-20210324144045203" loading="lazy">
使用docker load命令加载本地镜像,不用再从dockerhub下载了
这样容器镜像就被加载到了本地,我们可以通过docker images命令查看导入的镜像
先执行预处理命令,会创建一些文件夹,初始化一些文件
然后开始真正的安装过程
如果出现-Harbor has been installed and started successfully表示安装成功,并查看docker进程
可以看到很多服务已经起来了。启动和停止harbor
在harbor的安装目录执行以下命令就可以启动和停止了
输入 http://harborIP就可以直接访问了,这里访问我们的地址http://192.168.64.153/
输入用户名密码就可以登录了 ,如果没有修改配置文件 默认是 用户名是:admin,密码是:Harbor12345
登录后就可以进行操作了Docker登录harbor
使用docker login命令就可以登录harbor了
我们发现登录报错了,这和registry一样,docker模式使用https方式,而我们使用的是http的方式登录修改Docker配置
对于 Linux 系统,我们可以在 /etc/docker/daemon.json (daemon.josn 文件不存在则新建该文件)
添加下面的配置
完整的配置如下
执行以下命令重启重新加载配置并生效
这次我们就成功登录了
到这里我们就已经登录成功了修改镜像tag
我们推送镜像我要把我们的镜像名称改成符合规范的格式
这里有一个library路径,是harbor默认的项目名称
可以通过docker push进行推送镜像,注意需要先登录在进行推送
到这里我们已经推送到了harbor,我们可以登录library页面查看
可以通过docker rmi 镜像ID删除本地镜像
执行运行命令
详情里面会显示拉取次数
HarBor用户角色在项目(项目-成员-新加成员)中为3类:项目管理员、开发人员、访客
点击创建用户可以创建一个用户
我们创建一个itcast的用户
创建用户后进入项目模块添加成员
选择成员后并选择权限
访客只能进行拉取不能推送和管理
我们用itcast用户通过web端登录测试下,我们发现用户是没有修改权限的
登录docker客户端
尝试推送镜像
我们发现是无法进行推送镜像的拉取镜像测试
先删除本地的容器以及镜像
尝试拉取并启动本地镜像
微服务访问测试
为了支持微服务推送我们需要将HarBor设置为https,可以让HarBor在任何地方使用以及推送生成SSL证书
前面说了怎么搭建harbor仓库,这里讲一讲harbor实现https访问,因为只需要内网访问,没必要去申请一个ssl证书,所以我就用openssl颁发自签名证书,实现https访问。创建证书目录
这里subj是主题的意思含义如下
生成一个证书签名, 设置访问域名为itcastharbor.com
然后进入harbor安装目录修改harbor.yml,修改下面几个选项
停止运行中的服务
运行目录harbor下的prepare完成https的配置
在harbor目录下运行安装命令
我们需要将推送的IP改成域名
上文中我们对registry已经操作了,这里需要改用harbor,需要重新配置
完整的配置如下
执行以下命令重启重新加载配置并生效
为了让本机能够正常访问到harbor的web环境需要配置本地的hosts文件增加如下配置
windows环境下host路径在C:\Windows\System32\drivers\etc域名访问harbor
通过域名访问harbor,域名就是我们刚才配置的itcastharbor.com域名访
因为我们的证书是自签的,不是第三方认证的,素以有安全性提示,点击继续就可以访问
到这里登录后就可以访问了
本文由传智教育博学谷教研团队发布。
如果本文对您有帮助,欢迎关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力。
转载请注明出处!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |