Docker(简单概念,入门操作)(未完成)

来源:互联网 发布:什么叫seo营销 编辑:程序博客网 时间:2024/05/26 02:20

1.什么是Docker

1.1容器技术

   在计算机的世界中,容器拥有一段漫长且传奇的历史。容器与管理程序虚拟化(hypervisor virtualization,HV)有所不同,管理程序虚拟化通过中间层将一台或者多台独立的机器虚拟运行与物理硬件之上,而容器则是直接运行在操作系统内核之上的用户空间。因此,容器虚拟化也被称为“操作系统级虚拟化”,容器技术可以让多个独立的用户空间运行在同一台宿主机上。

   由于“客居”于操作系统,容器只能运行与底层宿主机相同或者相似的操作系统,这看起来并不是非常灵活。例如:可以在Ubuntu服务中运行Redhat Enterprise Linux,但无法再Ubuntu服务器上运行Microsoft Windows。

   相对于彻底隔离的管理程序虚拟化,容器被认为是不安全的。而反对这一观点的人则认为,由于虚拟容器所虚拟的是一个完整的操作系统,这无疑增大了攻击范围,而且还要考虑管理程序层潜在的暴露风险。

   尽管有诸多局限性,容器还是被广泛部署于各种各样的应用场合。在超大规模的多租户服务部署、轻量级沙盒以及对安全要求不太高的隔离环境中,容器技术非常流行。最常见的一个例子就是“权限隔离监牢”(chroot jail),它创建一个隔离的目录环境来运行进程。如果权限隔离监牢正在运行的进程被入侵者攻破,入侵者便会发现自己“身陷囹圄”,因为权限不足被困在容器所创建的目录中,无法对宿主机进一步破坏。

   最新的容器技术引入了OpenVZ、Solaris Zones以及Linux容器(LXC)。使用这些新技术,容器不在仅仅是一个单纯的运行环境。在自己的权限类内,容器更像是一个完整的宿主机。对Docker来说,它得益于现代Linux特性,如控件组(control group)、命名空间(namespace)技术,容器和宿主机之间的隔离更加彻底,容器有独立的网络和存储栈,还拥有自己的资源管理能力,使得同一台宿主机中的多个容器可以友好的共存。

   容器被认为是精益技术,因为容器需要的开销有限。和传统虚拟化以及半虚拟化相比,容器不需要模拟层(emulation layer)和管理层(hypervisor layer),而是使用操作系统的系统调用接口。这降低了运行单个容器所需的开销,也使得宿主机中可以运行更多的容器。

   尽管有着光辉的历史,容器仍未得到广泛的认可。一个很重要的原因就是容器技术的复杂性:容器本身就比较复杂,不易安装,管理和自动化也很困难。而Docker就是为了改变这一切而生的。

1.2容器与虚拟机比较

1.2.1 本质上面的比较

1.2.2 使用上的比较

所以说,容器才是未来,虚拟机要GG.

1.3Docker容器

  Docker可以帮助构建部署容器,只需要把自己的应用程序或者服务打包放进容器即可。容器是基于镜像启动起来的,容器可以运行一个多个进程。我们可以认为,镜像是Docker生命周期的构建或者打包阶段容器则是启动或者执行阶段。  容器基于镜像启动,一旦容器启动完成后,我们就可以登录到容器安装自己需要的软件或者服务

所以Docker容器就是:

一个镜像格式;

一些列标准操作;

一个执行环境

   Docker借鉴标准集装箱的概念。标准集装箱将货物运往世界各地,Docker将这个模型运用到自己的设计唯一不同的是:集装箱运输货物Docker运输软件。

和集装箱一样Docker在执行上述操作时,不关心容器到底装了什么,不管是web服务器,还是数据库,或者是应用程序服务器什么的所有的容器都按照相同方式将内容“装载”进去

   Docker关心你要容器运到何方:我们可以在自己的笔记本中构建容器,上传到Registry然后下载一个物理或者虚拟的服务来测试,在容器部署具体主机中。像标准集装箱一样Docker容器方便替换,可以叠加,易于分发,并且尽量通用。

   使用Docker,我们可以快速的构建一个应用程序服务器一个消息总线、一套实用工具一个持续集成(CI测试环境或者任意一种应用程序服务工具。我们可以在本地构建一个完整的测试环境,也可以为生产或开发快速复制一套复杂的应用程序

2. Docker安装与启动

2.1 安装环境说明

   Docker官方建议在Ubuntu中安装,因为Docker是基于Ubuntu发布的,而且一般Docker出现的问题Ubuntu是最先更新或者打补丁的。在很多版本的CentOS中是不支持更新最新的一些补丁包的.

   由于之前学的都是centos,所以这里将Docker安装到centose上,这里建议安装到Centos建议安装在CentOS7.x以上的版本,在CentOS6.x的版本中,安装前需要安装其他很多的环境而且Docker很多补丁不支持更新

2.2安装Docker

2.2.1 使用yum命令在线安装

yum install docker

2.2.2 启动与停止docker

 systemctl命令是系统服务管理器指令,它 service 和 chkconfig 两个命令组合

l 启动docker:systemctl start dockerl 停止docker:systemctl stop dockerl 重启docker:systemctl restart dockerl 查看docker状态:systemctl status dockerl 开机启动:systemctl enable dockerl 查看docker概要信息:docker infol 查看docker帮助文档:docker --help

3.Docker镜像操作

3.1什么是Docker镜像

   Docker镜像是由文件系统叠加而成(是一种文件的存储形式)。最底端一个文件引导系统bootfs,这很像典型的Linux/Unix引导文件系统Docker用户几乎永远不会引导系统有什么交互。实际上,一个容器启动后,移动内存中,引导文件系统则会被卸载出更多的内存供磁盘镜像使用。Docker容器启动是需要的一些文件而这些文件就可以称为Docker镜像

3.2列出镜像

列出docker下的所有镜像:docker images

REPOSITORY:镜像所在的仓库名称

TAG镜像标签

IMAGE ID镜像ID

CREATED镜像的创建日期(不是获取该镜像的日期)

SIZE镜像大小

这些镜像都是存储Docker宿主机的/var/lib/docker目录

    为了区分同一个仓库下的不同镜像,Docker提供了一种称为标签(Tag)的功能。每个镜像在列出来时都带有一个标签,例如12.10、12.04等等。每个标签对组成特定镜像的一些镜像层进行标记(比如,标签12.04就是对所有Ubuntu12.04镜像层的标记)。这种机制使得同一个仓库中可以存储多个镜像。--- 版本号我们在运行同一个仓库中的不同镜像时,可以通过在仓库名后面加上一个冒号和标签名来指定该仓库中的某一具体的镜像,例如docker run --name custom_container_name –i –t docker.io/ubunto:12.04 /bin/bash,表明从镜像Ubuntu:12.04启动一个容器,而这个镜像的操作系统就是Ubuntu:12.04。在构建容器时指定仓库的标签也是一个好习惯。

  







原创粉丝点击