docker镜像的制作以及容器的运行
前言:docker安装对Linux的内核要求3.8以上版本,可以通过uname -r查询linux内核另一个要求必须运行在64位的操作系统上;现在的docker可以运行在windows系统和Linux系统实现跨平台。
介绍docker:
Docker的英文本意是“搬运工”,在程序员的世界里,Docker搬运的是集装箱(Container),集装箱里装的是任意类型的App,开发者通过Docker可以将App变成一种标准化的、可移植的、自管理的组件,可以在任何主流系统中开发、调试和运行。
说白了,docker是一种用了新颖方式实现的轻量级虚拟机,类似于VM,但是在原理和应用上和VM的差别还是很大的.并且docker的专业叫法是应用容器(Application Container)。
为啥要用容器?
应用容器是个啥样子呢,一个做好的应用容器长得就像一个装好了一组特定应用的虚拟机一样,比如我现在想用mysql,那我就找个装好了mysql的容器就可以了,然后运行起来,我就能使用mysql了。
为啥不能直接安装一个mysql?安装一个SQL Server也可以啊,可是有的时候根据每个人电脑的不同,在安装的时候可能会报出各种各样的错误,万一你的机器中毒了,你的电脑挂了,你所有的服务都需要重新安装.但是有了docker,或者说有了容器就不同了,你就相当于有了一个可以运行起来的虚拟机,只要你能运行容器,mysql的配置就省了.而且如果你想换个电脑,直接把容器”端过来”就可以使用容器里面的服务.
1:(安装docker)
安装docker有两种方式:
(1)使用centos版本提供的docker,现在是docker1.13版本
(2)通过互联网docker的官方下载网站为http://www.hop5.in/yum/el6/hop5.repo最新版本为docker17版本,docker的最新版本和之前的版本跳度较大
在这里使用的是centos提供的docker
(3)docker的17版本分为两种dockerCE:社区版dockerEE:企业版
2:docker镜像:
注:容器的运行离不开镜像
镜像的存在方式分为两种:一种是本地镜像;另一种是仓库镜像
查看镜像的命令:docker images
3:容器:
容器用来封装任意类型的app,将app变成标准化轻量级的应用程序。差容器的命令: docker ps -a
优点:部署和容易扩展;效率高,内核级虚拟化,简单来说四个字:多快好省
4:docker的结构:
C/s结构; c:docker daemon 服务端 s:docker client
Docker daemon 一般在宿主主机后台运行。
Docker client以系统命令的形式存在,用户用docker命令来跟docker daemon 交互。
Docker 守护进程(Docker daemon)
如上图所示,Docker 守护进程运行在一台主机上。用户并不直接和守护进程进行交互,而是通过 Docker 客户端间接和其通信。
Docker 客户端(Docker client)
Docker 客户端,实际上是docker的二进制程序,是用户与 Docker 交互方式。它接收用户指令并且与背后的 Docker 守护进程通信。
5:docker和传统的虚拟化技术对比:
Docker 在如下几个方面具有较大的优势。
更快速的交付和部署
对开发和运维(devop)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。
更高效的虚拟化
Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。
更轻松的迁移和扩展
Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。
更简单的管理
使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。
对比传统虚拟机总结
特性 |
容器 |
虚拟机 |
启动 |
秒级 |
分钟级 |
硬盘使用 |
一般为MB |
一般为GB |
性能 |
接近原生 |
弱于 |
系统支持量 |
单机支持上千个容器 |
创建镜像有两种方式:
(1)docker commit 制作
缺点:容易有黑盒操作;不便和用户之间共同分享
(2)dockerfile创建images
首先自定义目录之后编写dockerfile文件
文件格式:
# 注释说明
FROM 基础镜像
MAINTAINER 作者
RUN 更新容器的指令
注 :镜像最多为127层否则不会成功为了较少层,可以在更新容器的指令中执行多条指令使用&&符号链接
6:安装docker服务:
1.安装docker :yum -y install docker
2.启动docker :systemctl enable docker
3.导入基础镜像
方法一:
4.将基础镜像加入镜像仓库: docker load --input centos7.tar
5.将基础镜像运行在容器中: docker run -i -t docker.io/centos:latest /bin/bash // 环境变量,可以不写linux默认是此变量环境
6.在容器中作出修改,更新容器: yum -y install openssh-clients
7.退出容器后将修改后的容器做成镜像 :docker -m “信息” -a “制作人” 容器的ID号 新的镜像名称
方法二:
8.创建dockerfile文件
9.编写dockerfile文件注意文件格式
10.生成新的镜像:docker build -t=”新的进项名称:标签” . 或者绝对路径
11.导出镜像到本地文件: docker save -o 导出后的包.tar 镜像:标签
12.将本地文件载入镜像:docker load --input 以.tar结尾的镜像