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)
上一篇 2018-08-01 19:21
下一篇 2018-08-03 20:30

相关推荐

  • 第一周作业

    1、描述计算机的组成及其功能。 计算机由运算器,控制器,存储器,输入设备和输出设备五大部分组成。 (1)运算器的功能是用于完成算术运算、逻辑运算。负责计算机执行的所有数学与逻辑功能。 (2)控制器的功能是主要负责对程序所执行的指令进行分析,并协调计算机各部件进行工作计算机的所有 其他部件。 (3)存储器的功能是用于储存信息的设备,通常是将信息数字化后再利用电…

    Linux笔记 2018-05-11
  • 第一周作业-Linux Basic

      Linux 入门基础 计算机组成及功能 一般而言,计算机的组成应该分为两部分: 一部分指的是硬件部分。根据冯诺伊曼提出的计算机体系架构,一台计算机主要分为五个部分:控制器、运算器、存储器、输入设备、输出设备 运算器: 包含算数逻辑单元(ALU)、累加器、状态寄存器、通用寄存器组等,主要作用如下 算数逻辑单元(ALU):进行二位元的算术运算,如加减乘(不包…

    Linux笔记 2018-06-24
  • MYSQL数据库

    MYSQL数据库 数据的时代 涉及的数据量大 数据不随程序的结束而消失 数据被多个应用程序共享 大数据   数据库的发展史: 萌芽阶段—–文件系统: 使用磁盘文件来存储数据 初级阶段—–第一代数据库: 出现了网状模型、层次模型的数据库 中级阶段—–第二代数据库: …

    Linux笔记 2018-06-18
  • centos 7.4 实现二进制安装mariadb-10.2.15-linux-x86_64.tar.gz mysql 数据库

    实验:centos 7.4 实现二进制安装mariadb-10.2.15-linux-x86_64.tar.gz mysql 数据库 1,检查相应的坏境 查看下防火墙iptables和selinux 是否关闭,没关闭先关闭。 再查看下原来主机上是否已有 mariadb 数据库,如果有先卸载在进行安装。 2,下载对应的二进制文件 3,准备用户账号,mysql,…

    Linux笔记 2018-06-05