Docker容器技术之Docker Image

镜像是Docker容器的基石,容器是镜像的运行实例,有了镜像才能启动容器。

本节索引:

一、Docker image介绍

二、BusyBox

三、示例:推送镜像到镜像仓库

四、示例:搭建docker镜像私有仓库

五、Harbor™ by VMware®

 

 

 

一、Docker image介绍

Docker镜像含有启动容器所需要的文件系统及其内容,因此,

其用于创建并启动docker容器

采用分层构建机制,最底层为bootfs,其之为rootfs

bootfs:用于系统引导的文件系统,包括bootloader和kernel,容器启动完

成后会被卸载以节约内存资源;

rootfs:位于bootfs之上,表现为docker容器的根文件系统;

传统模式中,系统启动之时,内核挂载rotfs时会首先将其挂载为“只读”模式,

完整性自检完成后将其重新挂载为读写模式;

docker中,rootfs由内核挂载为“只读”模式,而后通过“联合挂载 ”技术额外挂

载一个“可写”层;

1

位于下层的镜像称为父镜像(parent image),最底层的称为基础镜像(base image)

最上层为“可读写”层,其下的均为“只读”层

2

 

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

 

3

Docker Registry中的镜像通常由开发人员制作,而后推送至“公共”或“私有”Registry上保存,

供其他人员使用,例如“部署”到生产环境;

 

 

示例:利用docker image安装redis容器

以下是docker hub官方库支持的redis镜像版本

4

若要指定版本下载,例如下载redis-4-alpne版本

docker run –name kvstor1 -d redis:4-alpine

5

以/bin/sh运行redis镜像

docker exec -it kvstor1 /bin/sh

6

 

二、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

1-1

/ # 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

1-2

 

docker ps    #查看当前运行的容器状态信息

由于未对b1容器做网络转发,只能在本机访问web服务

1-3

 

三、示例:推送镜像到镜像仓库

示例:推送镜像到docker hub

说明:docker hub允许匿名用户下载镜像,但当用户需要将镜像上传至docker hub时,必须在

docker hub创建用户,这里我们创建了一个ms03560355的用户

首先先在docker hub创建一个项目;一个项目中,可以包含多个tags版本

7

查看本地库中的镜像,我们以上传busybox为例

8

要将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

再次查看本地镜像

9

上传镜像到docker hub

docker push ms03560355/busybox

docker push ms03560355/busybox:v1.0

10

此时,取docker官网查看:

11

12

 

示例:推送镜像到阿里云

鉴于访问docker hub境外网站速度缓慢,国内用户可选用其他互联网厂商提供的镜像库服务,

我们以阿里云镜像库服务位例介绍如何使用

首页 –> 产品 –> 云计算基础 –> 容器镜像服务

13

创建镜像仓库,按照要求填写,点击下一步

14

这里选择本地仓库,下一步

15

登录阿里云镜像库

docker login –username=ms03560355 registry.cn-hangzhou.aliyuncs.com16

给镜像打tag标签

docker tag registry.cn-hangzhou.aliyuncs.com/wxlinux/hello-world:v1.0

17

推送镜像到阿里云仓库

docker push registry.cn-hangzhou.aliyuncs.com/wxlinux/hello-world

18

此时我们回到阿里云仓库管理控制台,可以看到镜像已上传成功

19

 

四、示例:搭建docker镜像私有仓库

安装docker-regsitry(extras源)

yum install docker-registry.x86_64

实际安装的是docker-distribution包

20

开启服务

systemctl start docker-distribution.service

默认监听5000端口

21

docker tag busybox:latest 192.168.30.10:5000/busybox:v1

22

推送镜像到镜像库,提示错误,必须使用https

23

修改配置可以使用不安全的仓库连接

vim /etc/docker/daemon.json

“insecure-registries”: [“192.168.30.10:5000”]

24

重启docker-distribution与docker服务,再次推送,成功!

systemctl restart docker-distribution.service docker

25

 

 

五、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

26

特性:

支持多租户内容签署和校验

支持安全及风险扫描分析

支持审计日志

支持标识、集成,基于角色的访问控制

支持可扩展的API

支持图形用户界面

国际化支持(目前只支持英文和中文)

 

系统要求:

docker 1.10.0+docker-compose 1.6.0+。

 

主要配置文件:

/etc/harbor/harbor.cfg

 

27

28

 

客户端若想访问harbor,也许配置非安全端口

vim /etc/docker/daemon.json

29

登录

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

30

 

暂停/停止harbor服务

docker-compose pause/stop

暂停后再次开启harbor服务

docker-compose unpause

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/104444

(0)
wangxczwangxcz
上一篇 2018-08-01
下一篇 2018-08-03

相关推荐

  • shell 脚本编程基础

    六、shell脚本编程 6.1bash脚本编程之变量 ​ 作业提交地址:scp N wang@172.20.102.77:home/wang/bin ​ 执行脚本的方法: 以bash程序来执行: bash hello.sh或cat hello.sh |bash 直接指令下达: 加权限:chmod +x hello.sh 绝对路径:/home/hello.sh…

    2018-05-01
  • 正则表达式

    基本正则表达式元字符

    Linux笔记 2018-06-22
  • https网络安全协议

    HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

    2018-06-22
  • Linux安全和加解密(一)

    本文主要介绍:1、安全机制 2、对称和非对称加密 3、散列算法 4、密钥交换 5、加密工具gpg 6、CA和证书

    2018-05-28
  • Linux系统软件包管理介绍

    Linux发行版中附带有成千上万的可用包,其中包括了Internet工具、开发工具、办公工具、游戏等,如果你没有选择完整安装,则只会安装这些包的“子集”,如何删除不想要的包,如何安装遗漏的包,学习LInux系统的软件包管理将解决你的这些问题

    2018-04-20
  • 第二周博客作业-N31-Linux文件、目录及其相关命令

    本篇文章主要围绕Linux的文件、目录及其相关的操作命令,如:mkdir、rmdir、tree、cat、tail、more、less、mv、cp、rm等命令

    2018-07-27