Docker: 企业级镜像仓库Harbor的使用
上一节,演示了Harbor的安装部署
这次我们来讲解 Harbor的使用。
我们需要了解到:
1. 如何推镜像到镜像仓库
2. 如何从镜像仓库拉取镜像
3. 如何运行从私有仓库拉取的镜像
# 查看 harbor服务状态,都是up说明 harbor服务状态正常
[root@ harbor]# docker-compose ps
如果状态不对,使用docker-compose restart重启,或者使用docker-compose up -d 启动容器,并后台运行
浏览器打开 http://192.168.1.30 用户名:admin 密码:Harbor123456(在harbor.cfg配置的默认密码,在部署harbor过程中没有修改过,所以用默认密码登录)
可以通过[新建项目]来创建项目,
访问级别:公开,代表不需要登陆账号就拉取(下载)镜像; 私有,代表必须有登陆账号和账号的项目权限正确才可以拉取(下载)镜像; 不管什么访问级别,推送(上传)镜像到harbor仓库,必须先登陆账号,并且登陆账号的项目权限正确。
新建了一个用户:testuser1,密码:Test12345567;
给用户testuser1添加library项目的权限
docker和harbor之间交互的基本使用:
1、配置http镜像仓库可信任(docker默认是通过https访问harbor的,但是私有仓库是在公司内网的话,没有必要配置https, 所以我们要在daemon.json配置harbor服务器地址被docker认为是可信任的站点;如果docker通过https访问harbor,就不需要进行如下设置)
# vi /etc/docker/daemon.json
{"insecure-registries":["192.168.1.30"]}
格式不能写错,修改该配置后,需要重启docker服务,如果写错,重启docker会有问题。
# systemctl restart docker #重启docker的话,要留意一下,通过docker启动的容器是否正常运行, harbor就启动在docker容器里的,所以需要用docker-compose ps查看harbor服务状态,如果harbor状态不全是Up状态,那么使用 docker-compose up -d 再次启动所有
2、打标签
# docker tag centos:6 192.168.1.30/library/centos:6
3、上传
# docker push 192.168.1.30/library/centos:6
4、下载
# docker pull 192.168.1.30/library/centos:6
#修改docker的配置文件daemon.json(docker通过http访问harbor的话,需要配置harbor的服务器地址为可信任;如果通过https方式访问harbor,这里不需要修改)
[root@ harbor]# vi /etc/docker/daemon.json
[root@ harbor]# cat /etc/docker/daemon.json
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"],
"insecure-registries":["192.168.1.30"]
}
#重启docker
[root@ harbor]# systemctl restart docker
#重启查看harbor状态,因为harbor也是运行在docker容器里的,容器服务重启,相应的容器也要检查一下状态是否正常
[root@ harbor]# docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------
harbor-adminserver /harbor/start.sh Exit
harbor-db /entrypoint.sh postgres Exit
harbor-jobservice /harbor/start.sh Exit
harbor-log /bin/sh -c /usr/local/bin/ ... Up (health: starting) 127.0.0.1:->/tcp
harbor-ui /harbor/start.sh Up (health: starting)
nginx nginx -g daemon off; Exit
redis docker-entrypoint.sh redis ... Exit
registry /entrypoint.sh /etc/regist ... Up (health: starting) /tcp
#(没有的)创建和有的直接启动容器,-d参数代表在后台运行服务
[root@ harbor]# docker-compose up -d
harbor-log is up-to-date
Starting harbor-db ...
registry is up-to-date
Starting harbor-adminserver ...
Starting redis ...
harbor-ui is up-to-date
Starting harbor-jobservice ...
Starting nginx ...
#查看harbor服务状态
[root@ harbor]# docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------------------
harbor-adminserver /harbor/start.sh Up (health: starting)
harbor-db /entrypoint.sh postgres Up (health: starting) /tcp
harbor-jobservice /harbor/start.sh Up
harbor-log /bin/sh -c /usr/local/bin/ ... Up (healthy) 127.0.0.1:->/tcp
harbor-ui /harbor/start.sh Up (health: starting)
nginx nginx -g daemon off; Up (health: starting) 0.0.0.0:->/tcp,
0.0.0.0:->/tcp,
0.0.0.0:->/tcp
redis docker-entrypoint.sh redis ... Up /tcp
registry /entrypoint.sh /etc/regist ... Up (healthy) /tcp
#列出docker镜像
[root@ harbor]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat v1 5f8fe4ca82ba hours ago 427MB
php v1 d48e00d7de94 hours ago 514MB
nginx v1 a5412fe37cac hours ago 361MB
nginx latest 881bd08c0b08 days ago 109MB
mysql 5.7 ee7cbd482336 days ago 372MB
busybox latest d8233ab899d4 weeks ago .2MB
centos 1e1148e4cc2c months ago 202MB
centos latest 1e1148e4cc2c months ago 202MB
goharbor/chartmuseum-photon v0.7.1-v1.6.1 f0a2dbee1ff1 months ago 350MB
goharbor/harbor-migrator v1.6.1 60e8be845b35 months ago 798MB
goharbor/redis-photon v1.6.1 6a67380bb061 months ago 210MB
goharbor/clair-photon v2.0.6-v1.6.1 c4fcdbae7df2 months ago 302MB
goharbor/notary-server-photon v0.5.1-v1.6.1 f1afd44d9f9b months ago 209MB
goharbor/notary-signer-photon v0.5.1-v1.6.1 83aa51867207 months ago 207MB
goharbor/registry-photon v2.6.2-v1.6.1 f4cb5e83f0a4 months ago 196MB
goharbor/nginx-photon v1.6.1 9ca888fe33b2 months ago 132MB
goharbor/harbor-log v1.6.1 9b1ea3f29465 months ago 198MB
goharbor/harbor-jobservice v1.6.1 9ca6fd371ca6 months ago 192MB
goharbor/harbor-ui v1.6.1 305ee5b8952c months ago 215MB
goharbor/harbor-adminserver v1.6.1 a3e95f74984e months ago 181MB
goharbor/harbor-db v1.6.1 3bea3bff0190 months ago 219MB
java d23bdf5b1b1b years ago 643MB
# 配置 php:v1这个镜像,推送到哪里去,这里推送到私有仓库地址
[root@ harbor]# docker tag php:v1 192.168.1.30/library/php:v1 # docker登陆镜像仓库,成功 [root@ harbor]# docker login 192.168.1.30 username:testuser1 password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store # 下次再登陆,不需要重复输入用户名,密码 [root@ harbor]# docker login 192.168.1.30 Authenticating with existing credentials... WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded #推送到Harbor镜像仓库 [root@ harbor]# docker push 192.168.1.30/library/php:v1 The push refers to repository [192.168.1.30/library/php] v1: digest: sha256:dff46139f7bbcaf014ef2f1b9a564b99fdf0fd6cedbce965d01e6ad4091566bb size: # 将nginx:v1打上推送到镜像仓库的地址标签,并推送 [root@ harbor]# docker tag nginx:v1 192.168.1.30/library/nginx:v1 [root@ harbor]# docker push 192.168.1.30/library/nginx:v1 The push refers to repository [192.168.1.30/library/nginx] v1: digest: sha256:4b4183c9fc6af4479c0b9632f13076c4276c83ccdc32784b521225f878963c74 size: # 将tomcat:v1打上推送到镜像仓库的地址标签,并推送 [root@ harbor]# docker tag tomcat:v1 192.168.1.30/library/tomcat:v1 [root@ harbor]# docker push 192.168.1.30/library/tomcat:v1 The push refers to repository [192.168.1.30/library/tomcat] v1: digest: sha256:37a025411fc5250673100c51cc60a48878695c9f1f59c953a6751f21b9db18df size: #从镜像仓库拉取nginx:v1 [root@ harbor]# docker pull 192.168.1.30/library/nginx:v1 v1: Pulling from library/nginx Digest: sha256:4b4183c9fc6af4479c0b9632f13076c4276c83ccdc32784b521225f878963c74 Status: Image is up to date for 192.168.1.30/library/nginx:v1 [root@ harbor]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.1.30/library/tomcat v1 5f8fe4ca82ba hours ago 427MB tomcat v1 5f8fe4ca82ba hours ago 427MB 192.168.1.30/library/php v1 d48e00d7de94 hours ago 514MB php v1 d48e00d7de94 hours ago 514MB 192.168.1.30/library/nginx v1 a5412fe37cac hours ago 361MB nginx v1 a5412fe37cac hours ago 361MB nginx latest 881bd08c0b08 days ago 109MB mysql 5.7 ee7cbd482336 days ago 372MB busybox latest d8233ab899d4 weeks ago .2MB centos 1e1148e4cc2c months ago 202MB centos latest 1e1148e4cc2c months ago 202MB goharbor/chartmuseum-photon v0.7.1-v1.6.1 f0a2dbee1ff1 months ago 350MB goharbor/harbor-migrator v1.6.1 60e8be845b35 months ago 798MB goharbor/redis-photon v1.6.1 6a67380bb061 months ago 210MB goharbor/clair-photon v2.0.6-v1.6.1 c4fcdbae7df2 months ago 302MB goharbor/notary-server-photon v0.5.1-v1.6.1 f1afd44d9f9b months ago 209MB goharbor/notary-signer-photon v0.5.1-v1.6.1 83aa51867207 months ago 207MB goharbor/registry-photon v2.6.2-v1.6.1 f4cb5e83f0a4 months ago 196MB goharbor/nginx-photon v1.6.1 9ca888fe33b2 months ago 132MB goharbor/harbor-log v1.6.1 9b1ea3f29465 months ago 198MB goharbor/harbor-jobservice v1.6.1 9ca6fd371ca6 months ago 192MB goharbor/harbor-ui v1.6.1 305ee5b8952c months ago 215MB goharbor/harbor-adminserver v1.6.1 a3e95f74984e months ago 181MB goharbor/harbor-db v1.6.1 3bea3bff0190 months ago 219MB java d23bdf5b1b1b years ago 643MB
有个规则:给镜像打好标签后,用docker images是看不到镜像的变化的, 只有通过dockor push 把镜像推送到harbor仓库后, docker images才会看到有新增的镜像
验证结果:
下面演示如何从私有镜像仓库Harbor拉取镜像并运行 nginx, php, 假设 Docker: 快速搭建LNMP网站平台 里面创建的容器,删除掉,只保留lnmp_mysql
[root@ nginx]# docker container rm -f lnmp_nginx
lnmp_nginx
[root@ nginx]# docker container rm -f lnmp_php
lnmp_php
#运行没什么特别,就是把镜像名和标签换成私有仓库的就可以
[root@ nginx]# docker run -d --name lnmp_php --net lnmp --mount src=wwwroot,dst=/wwwroot 192.168.1.30/library/php:v1
c3624fb185f93351af97bea35a604155b52b2e4eca600d5be4e4e5be93b1ee7f
[root@ nginx]# docker run -d --name lnmp_nginx --net lnmp -p : --mount type=bind,src=$(pwd)/nginx.conf,dst=/usr/local/nginx/conf/nginx.conf --mount src=wwwroot,dst=/wwwroot 192.168.1.30/library/nginx:v1
3cc9715ef1f0bb9b4039c3aa58a3508d14f3825e8b275e2a50467b7e037709b6
[root@ nginx]# docker container ls -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3cc9715ef1f0 192.168.1.30/library/nginx:v1 "nginx -g 'daemon of…" seconds ago Up seconds 0.0.0.0:->/tcp lnmp_nginx
[root@ nginx]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3cc9715ef1f0 192.168.1.30/library/nginx:v1 "nginx -g 'daemon of…" seconds ago Up seconds 0.0.0.0:->/tcp lnmp_nginx
c3624fb185f9 192.168.1.30/library/php:v1 "php-fpm" About a minute ago Up About a minute /tcp lnmp_php
9b2acdc4e0d4 192.168.1.30/library/php:v1 "--name lnmp_php" minutes ago Created /tcp gracious_borg
31416cb93251 192.168.1.30/library/php:v1 "-name lnmp_php" minutes ago Created /tcp vigorous_wiles
679f5aa83443 5f8fe4ca82ba "catalina.sh run" hours ago Up hours 0.0.0.0:->/tcp gifted_gates
ce152fffc931 goharbor/harbor-jobservice:v1.6.1 "/harbor/start.sh" hours ago Up hours harbor-jobservice
d5a971fcf319 goharbor/nginx-photon:v1.6.1 "nginx -g 'daemon of…" hours ago Up hours (healthy) 0.0.0.0:->/tcp, 0.0.0.0:->/tcp, 0.0.0.0:->/tcp nginx
197b6f639c4b goharbor/harbor-ui:v1.6.1 "/harbor/start.sh" hours ago Up hours (healthy) harbor-ui
443fd0c18620 goharbor/harbor-db:v1.6.1 "/entrypoint.sh post…" hours ago Up hours (healthy) /tcp harbor-db
4943f885123b goharbor/harbor-adminserver:v1.6.1 "/harbor/start.sh" hours ago Up hours (healthy) harbor-adminserver
d29f080f8615 goharbor/redis-photon:v1.6.1 "docker-entrypoint.s…" hours ago Up hours /tcp redis
5130724e6c5b goharbor/registry-photon:v2.6.2-v1.6.1 "/entrypoint.sh /etc…" hours ago Up hours (healthy) /tcp registry
737c956d3c64 goharbor/harbor-log:v1.6.1 "/bin/sh -c /usr/loc…" hours ago Up hours (healthy) 127.0.0.1:->/tcp harbor-log
845547a65a14 mysql:5.7 "docker-entrypoint.s…" hours ago Up hours /tcp, /tcp lnmp_mysql
f4f3056e14b6 mysql:5.7 "docker-entrypoint.s…" hours ago Exited () hours ago objective_wozniak
[root@ nginx]# docker container ls -a|grep lnmp
3cc9715ef1f0 192.168.1.30/library/nginx:v1 "nginx -g 'daemon of…" seconds ago Up seconds 0.0.0.0:->/tcp lnmp_nginx
c3624fb185f9 192.168.1.30/library/php:v1 "php-fpm" About a minute ago Up About a minute /tcp lnmp_php
845547a65a14 mysql:5.7 "docker-entrypoint.s…" hours ago Up hours /tcp, /tcp lnmp_mysql
[root@ nginx]# docker container ls -a|grep lnmp
3cc9715ef1f0 192.168.1.30/library/nginx:v1 "nginx -g 'daemon of…" About a minute ago Up About a minute 0.0.0.0:->/tcp lnmp_nginx
c3624fb185f9 192.168.1.30/library/php:v1 "php-fpm" minutes ago Up minutes /tcp lnmp_php
845547a65a14 mysql:5.7 "docker-entrypoint.s…" hours ago Up hours /tcp, /tcp lnmp_mysql
打开浏览器看一下:
到此,测试从私有仓库harbor上拉取镜像,并运行,测试通过。 这里需要注意的是, php,nginx运行是有顺序的,需要先运行 php,在运行nginx. 因为nginx.cnf配置文件里,配置了转发到lnmp_php,找不到这个服务器, nginx服务就会退出 。
作者: 梅梅~
出处: https://www.cnblogs.com/keeptesting
关于作者:专注软件测试,测试运维相关工作,请多多赐教!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 欢迎沟通交流加微信联系。 微信:yangguangkg20140901 暗号:博客园.
Docker: 企业级镜像仓库Harbor的使用的更多相关文章
- docker企业级镜像仓库Harbor管理
Harbor概述 Harbor是由VMWare公司开源的容器镜像仓库.事实上,Harbor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括: ...
- Docker 企业级镜像仓库 Harbor 的搭建与维护
目录 一.什么是 Harbor 二.Harbor 安装 2.1.Harbor 安装环境 2.2.Harbor安装 2.3 配置HTTPS 三.Harbor 的使用 3.1.登录Harbor并使用 3. ...
- Docker: 企业级镜像仓库Harbor部署(http)
Harbor离线安装包下载地址:https://github.com/goharbor/harbor Docker compose(安装harbor需要用到docker compose)下载地址:ht ...
- Docker企业级镜像仓库harbor(vmware 中国团队)
第一步:安装docker和docker-compose 第二步:下载harbor-offline-installer-v1.3.0.tgz 第三步:上传到/opt,并解压 第四步:修改harbor.c ...
- docker企业级镜像仓库harbor
第一步:安装docker和docker-compose 第二步:下载harbor-offine-installer-v1.5.1.tgz 第三步:上传到/opt,并解压 第四步:修改harbor.cf ...
- 企业级镜像仓库harbor搭建
企业级镜像仓库harbor搭建 一. Harbor概述 VMware公司最近开源了企业级Registry项目Harbor,其的目标是帮助用户迅速搭建一个企业级的Docker registry 服 ...
- 企业级镜像仓库 harbor
企业级镜像仓库 harbor 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器 c. 上一篇:跨 Docker 宿主机网络 overlay 类型 h ...
- docker进阶-搭建私有企业级镜像仓库Harbor
为什么要搭建私有镜像仓库 对于一个刚刚接触Docker的人来说,官方的Docker hub是用于管理公共镜像.既然官方提供了镜像仓库我们为什么还要去自己搭建私有仓库呢?虽然也可以托管私有镜像.我们 ...
- 使用docker搭建“企业级镜像仓库”Harbor
一.前沿 docker的官方镜像仓库registry,功能比较单一,不太好用,特别是删除镜像操作,不够友好. Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一 ...
随机推荐
- qt 窗口鼠标穿透
Qt 不规则窗体 – 鼠标点击穿透 qt实现鼠标穿透,如果要被穿透窗口只有一层,也即没有嵌套窗口,直接只用对子窗口使用setAttribute (Qt::WA_TransparentForMouseE ...
- C#版 - PAT乙级(Basic Level)真题 之 1021.个位数统计 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - P ...
- Linux 虚拟内存
查看进程占用内存情况: ps -aux VSZ表示占用虚拟内存单位KBRSS表示占用物理内存单位KB 添加swap文件大小为4G 内部存储块每块1M dd if=/dev/zero of=/swap ...
- 【Java基础】【09面向对象_多态&抽象类&接口】
09.01_面向对象(多态的概述及其代码体现) A:多态(polymorphic)概述 事物存在的多种形态 B:多态前提 a:要有继承关系. b:要有方法重写. c:要有父类引用指向子类对象. C:案 ...
- jaeger 使用初探
导读:有一天我们接到这样一条客诉“你们的收银软件最近特别慢,严重影响我们的收银效率,再不解决我们就不用了”,我相信大家应该都遇到过这种问题,即使现在没遇到,将来一定会遇到的,那遇到了怎么办呢?就这个话 ...
- so beautiful so white
Topic Link http://ctf5.shiyanbar.com/stega/white.zip 1) 打开压缩包,接着打开图片,发现是白色的但根据提示 压缩包的密码就藏在这幅白色图片中,仔 ...
- C++STL模板库适配器之stack容器
目录 适配器 一丶适配器简介 二丶栈(stack)用法 1.栈的常用方法 适配器 一丶适配器简介 Stl中的适配器,有栈 (stack) 队列 queue 根priority_queue 适配器都是包 ...
- 【Node.js】一、搭建基于Express框架运行环境+更换HTML视图引擎
1)安装express generator生成器 这个express generator生成器类似于vue-cli脚手架工具,用来创建一个后端项目,首先我们要对生成器进行全局安装,在cmd中输入下 ...
- SpringBoot整合系列-整合SpringMVC
原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9984607.html SpringBoot整合Spring MVC 步骤 第一步:添加必 ...
- 服务器SSH连接时间设置
用SSH客户端连接linux服务器时,经常会出现与服务器会话连接中断现象,造成这个问题的原因便是SSH服务有自己独特的会话连接机制. 解决方案: 1.设置服务器向SSH客户端连接会话发送频率和时间 v ...