云计算———虚拟化技术镜像的构建及Harbor的使用(三)
创始人
2024-01-28 11:24:06
0

一、容器管理

1.1容器命令

在这里插入图片描述

在这里插入图片描述

docker ps :查看正在运行的容器 ,已经关闭的不能查看 `docker ps -a`(显示所有容器)  可以
docker -f rm MyWordPress:-f 强制删除容器
[root@localhost ~]# docker ps -a -q   #显示所有容器只显示进程号
d5e7b06bc162
891c4dd2bdc8
2e4b69330b0f
a61e545e5822docker rm -f $(docker ps -a -q)#删除所有镜像

在这里插入图片描述

[root@localhost ~]# docker exec db ls /  #查看容器db根目录下文件
bin
boot
dev
docker-entrypoint-initdb.d
etc
home
lib
lib32
lib64
libx32
media
mnt
opt
proc
root
[root@localhost ~]# docker exec -it db /bin/bash   ###登入容器
root@a61e545e5822:/# ls
bin   dev                         etc   lib    lib64   media  opt   root  sbin  sys  usr
boot  docker-entrypoint-initdb.d  home  lib32  libx32  mnt    proc  run   srv   tmp  var
root@a61e545e5822:/# dcd /
bash: dcd: command not found
root@a61e545e5822:/# cd /
root@a61e545e5822:/# touch 1.txt
root@a61e545e5822:/# ls
1.txt  boot  docker-entrypoint-initdb.d  home  lib32  libx32  mnt  proc  run   srv  tmp  var
bin    dev   etc                         lib   lib64  media   opt  root  sbin  sys  usr
root@a61e545e5822:/# 

1.2 run延伸

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

修改容器名

--add-host hostname:IP  	#修改文件命

在这里插入图片描述
在这里插入图片描述
**docker rm ***
在这里插入图片描述

二、镜像、仓库管理

2.1 镜像特性

在这里插入图片描述
在这里插入图片描述

2.2 Docker构建msql镜像

获取centOS镜像
注册网易蜂巢
->控制台,注册登录->设置用户名
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

注意:不要下载7.0以上版本,CMD不能运行

加粗样式

————————————————————————————————————————————————————————————

Docker安装mysql
hub.c.163.com/public/centos:6.5-tools Docker可以后台运行

docker pull hub.c.163.com/public/centos:6.5-tools
[root@localhost ~]# docker run --name mysql -d hub.c.163.com/public/centos:6.5-tools
d5c8669af7722778b51f1c018cdd4a3f26c82f947d6db42d71b40d47260c8911
#--name  别名mysql  
#-d 后台运行ggf    [root@localhost ~]# docker ps
CONTAINER ID        IMAGE                                   COMMAND                  CREATED              STATUS              PORTS                  NAMES
d5c8669af772        hub.c.163.com/public/centos:6.7-tools   "/usr/bin/supervisord"   About a minute ago   Up About a minute   22/tcp                 mysql[root@localhost ~]# docker exec -it mysql  /bin/bash  	#进入容器
yum -y install mysql mysql-server		#下载mysqlsystemctl start mysql #启动mysql
chkconfig mysqld on
mysqladmin -uroot password123mysql -uroot -p
password:123mysql>create database  DockerMysql;
show databases;
exit

在这里插入图片描述

Docker构建mysql镜像

 docker commit mysql mysql:5.1## mysql转换成镜像#查看docker images#运行docker run --name mysql-my -d mysql#mysql镜像运行#查看docker ps -a####再使用mysql查看数据库service  mysqld startmysql -uroot -p123show databases;****里面有DockerMysql

在这里插入图片描述

2.3 Dockerfile安装Tomcat

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

准备环境:mkdir tomcat放入下面两个包
tomcat
JDK
apache-tomcat-9.0.1.tar.gz
jdk-8u151-linux-x64.tar.gz

#创建Dockerfile文件
FROM hub.c.163.com/public/centos:6.7
MAINTAINER zhangyifan@itxdl.cnADD ./apache-tomcat-9.0.1.tar.gz /root
ADD ./jdk-8u151-linux-x64.tar.gz /rootENV JAVA_HOME /root/jdk1.8.0_151
ENV PATH $JAVA_HOME/bin:$PATH  EXPOSE 8080ENTRYPOINT /root/apache-tomcat-9.0.1/bin/startup/.sh && tailf /root/apache-tomcat-9.0.1/logs/catalina.out
##构建Tomcat镜像
docker build -t tomcat:v1.0 .
##看到这行运行成功
Step 8/8 : ENTRYPOINT /root/apache-tomcat-9.0.1/bin/startup/.sh && tailf /root/apache-tomcat-9.0.1/logs/catalina.out---> Running in 03e4802e6c0c---> 9c5ab545f0ad
Removing intermediate container 03e4802e6c0c
Successfully built 9c5ab545f0ad##查看镜像
[root@localhost tomcat]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
tomcat                        v1.0                9c5ab545f0ad        About an hour ago   790 MB##运行镜像
docker run --name tomcat -p 80:8080 -d tomcat:v1.0
[root@localhost tomcat]# docker ps
CONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS              PORTS                          NAMES
45942a717313        tomcat:v1.0                             "/bin/sh -c '/root..."   4 seconds ago       Up 4 seconds        22/tcp, 0.0.0.0:80->8080/tcp   tomcat
0e40ca4911e7        hub.c.163.com/public/centos:6.5-tools   "/usr/bin/supervisord"   24 minutes ago      Up 24 minutes       22/tcp                         mysql

登录192.168.159.128
在这里插入图片描述

2.4 docker常用命令

docker ps ##查看运行容器
docker stop ** ##停止运行容器  
docker rm  **  ##删除  ##停止运行才能删除
**:ID/NAME 
docker ps -a ##查看所有容器
docker rm $(docker ps -a)#删除所有容器docker images ##查看镜像
docker rmi ID/NAME ##删除镜像
docker rmi $(docker ps -a) 

三、Docker构建官方私有仓库

3.1 准备环境

网易蜂巢写可以存储自己的公开镜像,但是要存不能被别人看见的镜像,需要购买私有镜像;
但是我们可以自己构建存储私有镜像
准备环境: 192.168.159.128 192.168.159.129
**第二台安装Docker配置阿里云;阿里云加速器
其中重启报错:Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details.
**
解决方法:

mv /etc/docker/daemon.json /etc/docker/daemon.conf
systemctl daemon-load
systemctl restart docker

3.2 建立镜像仓库

docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always registry
vim /etc/docker/daemon.json###这个文件对192.168.159.129配置
{"insecure-registries":["192.168.159.128:5000"]##空格4
}

上传镜像

[root@localhost ~]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
tomcat                        v1.0                41a0bdd5632e        5 hours ago         790 MB
###修改标签ID
[root@localhost ~]# docker tag tomcat:v1.0 192.168.159.128:5000/tomcat:v1.0
[root@localhost ~]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
tomcat                        v1.0                41a0bdd5632e        5 hours ago         790 MB
192.168.159.128:5000/tomcat   v1.0                41a0bdd5632e        5 hours ago         790 MB
[root@localhost ~]# docker push 192.168.159.128:5000/tomcat:v1.0##上传
curl -XGET http://192.168.159.128:5000/v2/_catalog##查看已有镜像
{"repositories":["tomcat"]}scp /etc/docker/daemon.json  192.168.159.129:/etc/docker

客户机下载镜像
客户机192.168.159.129

systemctl restart docker 
docker pull 192.168.159.128:5000/tomcat:v1.0 ##下载[root@localhost Docker]# docker images  ##查看
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
192.168.159.128:5000/tomcat   v1.0                41a0bdd5632e        6 hours ago         790 MB[root@localhost Docker]# docker run --name tomcat -p 80:8080 -d 192.168.159.128:5000/tomcat:v1.0 ##运行
78ffede353ff9b71d958437bf760ee668b67314f39221b058985483d4418ab0f[root@localhost Docker]# docker ps
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS              PORTS                          NAMES
78ffede353ff        192.168.159.128:5000/tomcat:v1.0   "/bin/sh -c '/root..."   5 seconds ago       Up 4 seconds        22/tcp, 0.0.0.0:80->8080/tcp   tomcat

浏览器登录192.168.159.129验证

四、Harbor构建私有仓库

4.1 Harbor简介

VMware开源的企业级Registry项目Harbor,以Docker公司开源的registry 为基础,提供了管理UI, 基于角色的访问控制(Role Based Access Control),AD/LDAP集成、以及审计日志(Audit logging) 等企业用户需求的功能,同时还原生支持中文,主要特点:

  • 基于角色的访问控制 - 用户与 Docker 镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。

  • 镜像复制 - 镜像可以在多个 Registry 实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。

  • 图形化用户界面 - 用户可以通过浏览器来浏览,检索当前 Docker 镜像仓库,管理项目和命名空间。

  • AD/LDAP 支持 - Harbor 可以集成企业内部已有的 AD/LDAP,用于鉴权认证管理。

  • 审计管理 - 所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。

  • 国际化 - 已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。

  • RESTful API - RESTful API 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易。

  • 部署简单 - 提供在线和离线两种安装工具, 也可以安装到 vSphere 平台(OVA 方式)虚拟设备

4.2 Harbor架构介绍

Harbor运行起来有如下容器:
在这里插入图片描述
在这里插入图片描述
如上图所描述,Harbor由6个大的模块所组成:

  • Proxy: Harbor的registry、UI、token services等组件,都处在一个反向代理后边。该代理将来自浏览器、docker clients的请求转发到后端服务上。

  • Registry: 负责存储Docker镜像,以及处理Docker push/pull请求。因为Harbor强制要求对镜像的访问做权限控制, 在每一次push/pull请求时,Registry会强制要求客户端从token service那里获得一个有效的token。

  • Core services: Harbor的核心功能,主要包括如下3个服务:
    1)UI: 作为Registry Webhook, 以图像用户界面的方式辅助用户管理镜像。
    2) WebHook:WebHook是在registry中配置的一种机制, 当registry中镜像发生改变时,就可以通 知到Harbor的webhook endpoint。 Harbor使用webhook来更新日志、初始化同步job等。
    3) Token 服务:负责根据用户权限给每个docker push/pull命令签发token. Docker 客户端向 Regiøstry服务发起的请求,如果不包含token, 会被重定向到这里,获得token后再重新向Registry进行 请求。

  • Database:为core services提供数据库服务,负责储存用户权限、审计日志、Docker image分组信息等数据。

  • Job services: 主要用于镜像复制,本地镜像可以被同步到远程Harbor实例上。

  • Log collector: 负责收集其他组件的日志到一个地方

这里我们与上面运行的7个容器对比,对harbor-adminserver感觉有些疑虑。其实这里harbor-adminserver主要是作为一个后端的配置数据管理,并没有太多的其他功能。harbor-ui所要操作的所有数据都通过harbor-adminserver这样一个数据配置管理中心来完成。

4.3 Harbor的实现

Harbor的每一个组件都被包装成一个docker容器。自然,Harbor是通过docker compose来部署的。在Harbor源代码的make目录下的docker-compose模板会被用于部署Harbor。打开该模板文件,可以看到Harbor由7个容器组件所组成:

proxy: 通过nginx服务器来做反向代理

registry: docker官方发布的一个仓库镜像组件

ui: 整个架构的核心服务。该容器是Harbor工程的主要部分

adminserver: 作为Harbor工程的配置数据管理器使用

mysql: 通过官方Mysql镜像创建的数据库容器

job services:通过状态机的形式将镜像复制到远程Harbor实例。镜像删除同样也可以被同步到远程Harbor实例中。

log: 运行rsyslogd的容器,主要用于收集其他容器的日志

这些容器之间都通过Docker内的DNS服务发现来连接通信。通过这种方式,每一个容器都可以通过相应的容器来进行访问。对于终端用户来说,只有反向代理(Nginx)服务的端口需要对外暴露。

4.4 部署Harbor

准备环境

一台安装了python 、docker、docker-compose的机器
Harbor下载office版

[root@localhost ~]# ls
harbor-offline-installer-v2.6.2.tgz  
tar -xzvf harbor-offline-installer-v2.6.2.tgz  
mv harbor /usr/local/	#存放harbor持久化数据

4.5 创建https证书以及配置目录相关权限

可以不配置

#创建私钥*.key
openssl genrsa -des3 -out server.key 2018
#创建证书签名请求文件.csr
openssl req -new -key server.key -out server.csr#退出验证密钥
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key#生成自签名证书*.crt,生成的证书文件包含公钥
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
mv server.* /data/cert/

4.6 配置相关文件

cd /usr/local/harbor	
cp harbor.yml.tmpl harbor.ymlvim harbor.yml
 1 # Configuration file of Harbor2 3 # The IP address or hostname to access admin UI and registry service.4 # DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.5 hostname:  yifan.com	//设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost。默认情况下,harbor使用的端口是80,若使用自定义的端口,除了要改docker-compose.yml文件中的配置外,这里的hostname也要加上自定义的端口,否则在docker login、push时会报错6 7 # http related config8 http:9   # port for http, default is 80. If https enabled, this port will redirect to https port10   port: 8111 12 # https related config13 #https:14   # https port for harbor, default is 44315 #  port: 44316   # The path of cert and key files for nginx17 #  certificate: /data/cert/server.crt18 #  private_key: /data/cert/server.key19 20 # # Uncomment following will enable tls communication between all harbor components21 # internal_tls:22 #   # set enabled to true means internal tls is enabled23 #   enabled: true24 #   # put your cert and key files on dir25 #   dir: /etc/harbor/tls/internal26 27 # Uncomment external_url if you want to enable external proxy28 # And when it enabled the hostname will no longer used29 # external_url: https://reg.mydomain.com:8433	//如果要启用外部代理,比如外层的NGINX、LB等,请取消注释external_url,当它启用时,hostname将不再使用。30 31 # The initial password of Harbor admin32 # It only works in first time to install harbor33 # Remember Change the admin password from UI after launching Harbor.34 harbor_admin_password: yifan123 //admin密码35 36 # Harbor DB configuration37 database:38   # The password for the root user of Harbor DB. Change this before any production use.39   password: root12340   # The maximum number of connections in the idle connection pool. If it <=0, no idle connections are retained.41   max_idle_conns: 5042   # The maximum number of open connections to the database. If it <= 0, then there is no limit on the number of open connections.43   # Note: the default number of connections is 1024 for postgres of harbor.44   max_open_conns: 90045 持久化数据目录46 # The default data volume47 data_volume: /usr/local/harbor

安装

./install.sh

访问页面
yifan.com:81 admin yifan123
在这里插入图片描述

在新建项创建yifan_first
在这里插入图片描述

五、Harbor的使用(上传下载镜像)

5.1 告诉docker安全域名

vim /etc/docker/dademon.json
{   		"insecure-registries":["yifan.com:81"]
}vim /etc/hosts
192.168.159.128 yifan.com```
**登录**
```bash
docker login yifan.com:81
admin
password:密码  #harbor.yml文件

5.2 准备要上传的镜像

随便准备一个镜像

docker run --name tomcat1 -p 80:8080 -d tomcat:v1.0
4842aa2a7820ea7c3aa4ef93783938ec729eaa412d6291596c55e3e481f7bd34
[root@localhost harbor]# docker ps
CONTAINER ID   IMAGE           COMMAND                   CREATED          STATUS       PORTS        NAMES                                
4842aa2a7820   tomcat:v1.0     "/bin/sh -c '/root/a…"   11 seconds ago   Up 10 seconds  22/tcp, 0.0.0.0:80->8080/tcp, :::80->8080/tcp   tomcat1修改tomcat镜像标签
docker tag tomcat:v1.0 yifan.com:81/yifan_first/tomcat:v1.0  把tomcat:v1.0修改[root@localhost harbor]# docker images##要上传的镜像
REPOSITORY      TAG         IMAGE ID       CREATED         SIZE
yifan.com:81/yifan_first/tomcat   v1.0        41a0bdd5632e   2 days ago      790MB

5.3 主机上传镜像

259.128登陆上传

[root@localhost ~]# docker login -u admin -p yifan123 yifan.com:81
Login Succeededdocker push yifan.com:81/yifan_first/tomcat:v1.0

然后浏览器yifan.com:81查看harbor新建项目yifan_first
在这里插入图片描述

5.4 159.129客户机下载

在这里插入图片描述

报错信息

  “冒号太多”

解决办法

  1. 修改 vim /usr/local/harbor/harbor.yml
hostname: yifan.com# http related config
http:# port for http, default is 80. If https enabled, this port will redirect to https portport: 81 
  1. vim /etc/hosts
192.168.159.128 yifan.com
  1. vim /etc/docker/daemon.json
{"insecure-registries":["yifan.com:81"]
}

登录

[root@localhost ~]# docker login -u admin -p yifan123 yifan.com:81
Login Succeeded
docker pull yifan.com:81/yifan_first/tomcat:v1.0
v1.0: Pulling from yifan_first/tomcat
4f4fb700ef54: Pull complete [root@localhost ~]# docker images
REPOSITORY                        TAG                 IMAGE ID            CREATED             SIZE
yifan.com:81/yifan_first/tomcat   v1.0                41a0bdd5632e        2 days ago          790 MB[root@localhost ~]# docker run --name tomcat -p 80:8080 -d yifan.com:81/yifan_first/tomcat:v1.0
ef02db17396c9a67c11dbb73fbd55a3e8c5965e48a194d1b5466410ac45ebf48

浏览器查看192.168.159.129
在这里插入图片描述

相关内容

热门资讯

大学生有前景的小本创业项目 大...   :摩托车果汁店佛山的王先生是个不折不扣的摩托车迷,他当初想出开家以宣传“摩托车文化”为主题的果汁...
【创业项目汇总】最新适合大学生... 为什么穷人多不敢去创业蛋糕创业蛋糕店创业30岁女人创业做什么适合女性创业的大学生适合什么创业毕业生如...
适合上班族的创业项目有哪些? ... 杨大伟在上海的一家台资企业工作,妻子在一家大型电器公司当推销员,他们手头上有一笔积蓄,因为银行利息太...
2016成都大学生创业优惠政策... 2016成都大学生创业优惠政策大学生自主创业优惠政策为鼓励高校毕业生自主创业,以创业带动就业,下面是...
成都大学生创业有哪些补贴政策成... 解答支持创业大学生创业一次性获5000元补贴据市人事局副局长罗建民介绍,成都将实施“千名高校毕业生创...
成都大学生创业“最新扶持政策&... 2.其所创办的企业录用城乡劳动者(含异地户籍)、签订1年期以上劳动合同并按规定缴纳社会保险费的,根据...
1万创业可以做什么 远比你想象... 招商帮:曾看过一个新闻,一个大学生村官利用5000块钱的政府资金办理了一个养鸡场,结果创业成功,年薪...
辞掉体制体面工作 我辞掉体制内... 逆天?辞掉体制体面工作,湖南长沙刘女士竟因为这个2019小本创业项目。婆婆不理解,就连丈夫也不理解,...
成都世运会进入倒计时30天 7月8日,成都世运会进入倒计时30天。赛会将于8月7日至8月17日在成都举行。图为成都天府广场倒计时...
小本创业平民项目 小本创业平民... 小本创业:500元起家到月入20万_创业小项目发布日期:2017-03-17来源:创业小项目作者:小...