本节索引:
一、Docker image介绍
二、BusyBox
三、示例:推送镜像到镜像仓库
四、示例:搭建docker镜像私有仓库
五、Harbor™ by VMware®
一、Docker image介绍
Docker镜像含有启动容器所需要的文件系统及其内容,因此,
其用于创建并启动docker容器
采用分层构建机制,最底层为bootfs,其之为rootfs
bootfs:用于系统引导的文件系统,包括bootloader和kernel,容器启动完
成后会被卸载以节约内存资源;
rootfs:位于bootfs之上,表现为docker容器的根文件系统;
传统模式中,系统启动之时,内核挂载rotfs时会首先将其挂载为“只读”模式,
完整性自检完成后将其重新挂载为读写模式;
docker中,rootfs由内核挂载为“只读”模式,而后通过“联合挂载 ”技术额外挂
载一个“可写”层;
位于下层的镜像称为父镜像(parent image),最底层的称为基础镜像(base image)
最上层为“可读写”层,其下的均为“只读”层
Repositry
由某特定的docker镜像的所有迭代版本组成的镜像仓库
一个 Registry中可以存在多个Repositry
Repositry可分为“顶层仓库”和“用户仓库”
用户仓库名称格式为“用户名/仓库名”
每个仓库可以包含多个Tag(标签) ,每个标签对应一个镜像
Index
维护用户帐户、镜像的校验以及公共命名空间的信息
相当于为Registry提供了一个完成用户认证等功能的检索接口
Registry用于保存docker镜像,包括镜像的层次结构和元数据
用户可自建Registry,也可使用官方的Docker Hub
Sponsr Registry:第三方的registry,供客户和Docker社区使用
Miro Registry:第三方的registry,只让客户使用
Vendor Registry:由发布Docker镜像的供应商提供的registry
Private Rgistry:通过设有防火墙和额外的安全层的私有实体提供的registry
Docker Registry中的镜像通常由开发人员制作,而后推送至“公共”或“私有”Registry上保存,
供其他人员使用,例如“部署”到生产环境;
示例:利用docker image安装redis容器
以下是docker hub官方库支持的redis镜像版本
若要指定版本下载,例如下载redis-4-alpne版本
docker run –name kvstor1 -d redis:4-alpine
以/bin/sh运行redis镜像
docker exec -it kvstor1 /bin/sh
二、BusyBox
BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。BusyBox 包含了一些简单
的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount
以及telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个
大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Android 系统的自带的shell。
示例:运行busybox开启一个http服务
以b1为name运行busybox镜像
docker run –name b1 -it busybox
/ # mkdir /data/html -p
/ # http -f -h /data/html/
/ # echo test > /data/html/index.html
-f表示以前台工作运行httpd服务,-b则表示后台运行
/ # httpd -f -h /data/html/
开启另外一个tty终端
查看容器网络信息可使用docker inspect命令
docker inspect b1
docker ps #查看当前运行的容器状态信息
由于未对b1容器做网络转发,只能在本机访问web服务
三、示例:推送镜像到镜像仓库
示例:推送镜像到docker hub
说明:docker hub允许匿名用户下载镜像,但当用户需要将镜像上传至docker hub时,必须在
docker hub创建用户,这里我们创建了一个ms03560355的用户
首先先在docker hub创建一个项目;一个项目中,可以包含多个tags版本
查看本地库中的镜像,我们以上传busybox为例
要将image上传至docker hub,image名称格式必须为 用户名/项目名:tag
镜像打标签规则:
1、不加tag默认tag为:lastest
2、同一镜像可添加多个tags
docker tag busybox:latest ms03560355/busybox
docker tag busybox:latest ms03560355/busybox:v1.0
再次查看本地镜像
上传镜像到docker hub
docker push ms03560355/busybox
docker push ms03560355/busybox:v1.0
此时,取docker官网查看:
示例:推送镜像到阿里云
鉴于访问docker hub境外网站速度缓慢,国内用户可选用其他互联网厂商提供的镜像库服务,
我们以阿里云镜像库服务位例介绍如何使用
首页 –> 产品 –> 云计算基础 –> 容器镜像服务
创建镜像仓库,按照要求填写,点击下一步
这里选择本地仓库,下一步
登录阿里云镜像库
docker login –username=ms03560355 registry.cn-hangzhou.aliyuncs.com
给镜像打tag标签
docker tag registry.cn-hangzhou.aliyuncs.com/wxlinux/hello-world:v1.0
推送镜像到阿里云仓库
docker push registry.cn-hangzhou.aliyuncs.com/wxlinux/hello-world
此时我们回到阿里云仓库管理控制台,可以看到镜像已上传成功
四、示例:搭建docker镜像私有仓库
安装docker-regsitry(extras源)
yum install docker-registry.x86_64
实际安装的是docker-distribution包
开启服务
systemctl start docker-distribution.service
默认监听5000端口
docker tag busybox:latest 192.168.30.10:5000/busybox:v1
推送镜像到镜像库,提示错误,必须使用https
修改配置可以使用不安全的仓库连接
vim /etc/docker/daemon.json
“insecure-registries”: [“192.168.30.10:5000”]
重启docker-distribution与docker服务,再次推送,成功!
systemctl restart docker-distribution.service docker
五、Harbor™ by VMware®
harbor,基于docker-registry进行二次开发,为私有镜像库提供友好的web访问界面
官方网站:http://vmware.github.io/harbor/
参考文档:https://github.com/vmware/harbor/tree/master/docs
Git下载地址:https://github.com/vmware/harbor/releases
特性:
支持多租户内容签署和校验
支持安全及风险扫描分析
支持审计日志
支持标识、集成,基于角色的访问控制
支持可扩展的API
支持图形用户界面
国际化支持(目前只支持英文和中文)
系统要求:
docker 1.10.0+和docker-compose 1.6.0+。
主要配置文件:
/etc/harbor/harbor.cfg
客户端若想访问harbor,也许配置非安全端口
vim /etc/docker/daemon.json
登录
docker login
打标镜像
docker tag myweb:v0.3-1 192.168.30.10/devel/myweb:v0.3-1
推送镜像
docker push 192.168.30.10/devel/myweb
暂停/停止harbor服务
docker-compose pause/stop
暂停后再次开启harbor服务
docker-compose unpause
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/104444