Docker简介与搭建

Docker定义

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker的作用主要在于:让程序的运行环境得到充分虚拟与隔离的同时, 轻巧化.

  我是不推崇过分详细阐述如何安装某一个软件的.首先版本不同,安装的命令,参数,方式本就不同,其次,不同的操作系统,不同的系统现有设置也会有影响..安装这种事儿,是非常容易过期的,再详尽的介绍也不一定适合自己.我只推荐一个地方:官网. 只需要选对自己的操作系统,基本都会很顺利

在这里梳理几个官网安装链接:

  1. Mac
  2. Ubuntu
  3. Windows
  4. CentOS

Docker的其他信息:

Docker(左)和传统虚拟化(右)的体系架构有这样2张经典的图解释:

  显然,同样是为了虚拟化,解耦,第二种方式需要支撑起不同的操作系统运行,消耗较大.而docker仅仅是在Docker服务(由Docker引擎支撑)之下,使得程序在虚拟化环境中运行.

Docker产生的目的:

  • 环境管理复杂,有各种各样的OS,中间件,App,一款产品能够成功发布,开发者需要关注过多琐碎的细节,管理困难,部署麻烦.
  • 云计算时代的到来:(如AWS BPM的成功),引导开发者将应用转移到云上,这个虽然能大部分的解决硬件管理问题,然而软件配置和管理问题依然存在,Docker可以尝试新的软件管理办法解决这个问题.
  • 虚拟化手段变化:云时代为了解决上述问题,采用标配硬件降低成本,采用虚拟化手段满足用户按需分配的资源需求和保证可用性和隔离性.但是这种虚拟化,往往用的是OS,GuestOS,对于Docker来说,这些虚拟化手段对资源的浪费是不小的.

Docker的4个性质: 

  • 隔离性: 每个用户实例时间相互隔离,互不影响. 一般的硬件虚拟化给出的方法是VM,而LXC给出的方法是container,更细一些讲就是kernel namespace.其中pid、net、ipc、mnt、uts、user等namespace将container的进程、网络、消息、文件系统、UTS("UNIX Time-sharing System")和用户空间隔离开。
  • 可配额/可度量: 提供类似文件的接口,在文件夹中新建task文件,写入相关配置可以实现对进程的资源控制.
  • 便携性:支持将不同目录挂在到同一个虚拟文件系统下. 例如将宿主机器的硬盘挂载到容器上,使得在不改变image的基础上,允许用户进行读写操作.
  • 安全性:实现的Linux系统固有的安全标准, Docker Deamon的安全接口,

比较传统虚拟化和docker,两种方式还有2个比较大的不同:

  1. 传统虚拟化方式并没有严格要求在一个虚拟操作系统中只运行一个程序,是相对自由的一整个生态系统,里面不严格地有许多程序在运行.
  2. Docker在启动镜像的时候,无论是在命令的设置上,还是其根本的理念上,都希望用户使得一个容器只运行一个应用程序,可以形象理解成,一个鱼缸里只养一条鱼.因此,大家也可以参考这里十项Docker不该做的事儿

但是这2种虚拟化方式其实还是有些类似的地方的,比如:都是以镜像(images)为启动基础的,不同的镜像保存不同的系统/状态. 需要的时候,只需要读取某个镜像即可.

镜像和容器是2个很关键的概念.镜像可以理解为某种用以加载的资源,而容器,是运行着的镜像的实例.一个镜像可以有多个容器.

参考:[镜像(image)是动态的容器的静态表示(specification),包括容器所要运行的应用代码以及运行时的配置。Docker 镜像包括一个或者多个只读层( read-only layers ),因此,镜像一旦被创建就再也不能被修改了。一个运行着的Docker 容器是一个镜像的实例( instantiation )。]

我们可以在利用docker的commit命令将容器固化,将动态的镜像实例变成该瞬间的一个新的镜像.

生成镜像的两种方法:

  1. 利用一个已有的(来自本地/hub的)镜像创建一个容器,进入容器运行一些命令,利用docker commit生成新镜像.
  2. 在某个自己的目录,创建Dockerfile,在其中指挥一系列动作,直接用docker build利用已有的(来自本地/hubd)镜像创建一个镜像. // 这是更被推崇的方式

生成镜像的2种方法可以参考这篇文章

  • 可以得到从一个基础镜像,最终生成自己想要的镜像: 或者是对元数据的修改,或者是对文件系统的修改.
  • Docker在执行指令之后会创建临时镜像存储在cache中
  • Docker镜像是基于基础镜像的多层叠加. 当Docker创建一个容器时,它会在基础镜像的容器层上添加一层可写容器层,接下来对容器的话是在这个层是进行的.

附10件使用容器时应避免的做法:

  • 不要在容器中保存数据(Don’t store data in containers
  • 将应用打包到镜像再部署而不是更新到已有容器(Don’t ship your application in two pieces
  • 不要产生过大的镜像 (Don’t create large images
  • 不要使用单层镜像 (Don’t use a single layer image
  • 不要从运行着的容器上产生镜像 (Don’t create images from running containers )
  • 不要只是使用 “latest”标签 (Don’t use only the “latest” tag
  • 不要在容器内运行超过一个的进程 (Don’t run more than one process in a single container )
  • 不要在容器内保存 credentials,而是要从外面通过环境变量传入 ( Don’t store credentials in the image. Use environment variables
  • 不要使用 root 用户跑容器进程(Don’t run processes as a root user )
  • 不要依赖于IP地址,而是要从外面通过环境变量传入 (Don’t rely on IP addresses )

参考资料:

Docker 命令大全

http://www.cnblogs.com/yudar/p/4391556.html

http://www.cnblogs.com/sammyliu/p/5877964.html   刘世民

时间: 2024-05-23 23:58:03

Docker简介与搭建的相关文章

【docker】01、docker简介

一.docker简介 Docker 官网:http://www.docker.com Github Docker 源码:https://github.com/docker/docker 1.docker是什么 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口(类似 i

Docker 简介及安装

Docker简介: 什么是Docker?将应用程序自动部署到容器 go语言开源引擎  Github地址:https://github.com/docker/docker 2013年初 dotCloud 基于Apache2.0 开源授权协议发行 Docker的目标和特点 提供简单轻量的建模方式 职责的逻辑分离 快速高效的开发生命周期 鼓励使用面向服务的架构 Docker使用场景: 1 使用Docker容器开发,测试,部署服务 2 创建隔离的运行环境 3 搭建测试环境 4 构建多用户的平台既服务PA

Docker简介以及使用领域和架构

Docker 简介 1.Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. 2.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. 3.容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低. Docker 架构 1.Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容

Docker简介

Docker简介 什么是Docker: 正所谓Docker的英文本意为"搬运工",所以在我们的世界里,可以理解为Docker搬运的是装满任意类型的APP的集装箱,开发者可以通过Docker将APP变成一种标准化的.可移动植的.自动管理的组件.它用一种新的方式实现了轻量级的虚拟机,专业术语成为应用容器(Application Container) Docker的优势: 1.利用率高 ·Docker对系统资源的利用率很高,一台主机可以同时运行数千个Docker容器 2.可以快速的交付应用程

《第一本Docker》笔记(一)之Docker简介

一.Docker简介 1.Docker是一个能够把开发的应用程序自动部署到容器的开源引擎.Docker的特别之处:Docker在虚拟化的容器执行环境中增加了一个应用程序部署引擎.该引擎的目标就是提供一个轻量.快速的环境,能够运行开发者的程序,并方便高效地将程序从开发者的笔记本部署到测试环境,然后再部署到生产环境. 2.Docker提供一个简单.轻量的建模方式:Docker依赖于"写时复制"模型(写时复制技术:内核只为新生成的子进程创建虚拟空间结构,它们来复制于父进程的虚拟究竟结构,但是

Docker简介(一)

Docker简介 Docker 是 Docker.Inc 公司开源的一个基于 LXC技术之上构建的Container容器引擎, 源代码托管在 GitHub 上, 基于Go语言并遵从Apache2.0协议开源. Docker是通过内核虚拟化技术(namespaces及cgroups等)来提供容器的资源隔离与安全保障等.由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机(VM)额外的操作系统开销,提高资源利用率. 三大理念:Build(构建).Ship(运

1 docker简介和安装

docker简介 简介 2013年诞生,容器虚拟化,在系统中实际上是一个进程. 使用go语言开发,基于apache 2.0协议 redhat6.5以后的版本支持docker 特点 容器虚拟化,轻量级(进程),启动速度极快(不用手动分配CPU.内存资源) 对硬件资源的利用率更高 一次创建和配置后,可以在任意地方运行和使用,让运维人员或者开发人员快速部署和交付资源,大大提高了工作效率 内核级别的虚拟化,不需要额外的hypervisor 迁移十分方便 VM和docker的比较 基本概念 镜像:是一个只

Docker简介与安装(一)

Docker简介 Docker 是 Docker.Inc 公司开源的一个基于 LXC技术之上构建的Container容器引擎, 源代码托管在 GitHub 上, 基于Go语言并遵从Apache2.0协议开源. Docker是通过内核虚拟化技术(namespaces及cgroups等)来提供容器的资源隔离与安全保障等.由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机(VM)额外的操作系统开销,提高资源利用率. 三大理念:Build(构建).Ship(运

Docker Registry使用:公有Docker Registry使用、私有Docker Registry的搭建

公有Docker Registry的操作 首先必须注册自己的dockerhub账号,假设为simpledockerhub [[email protected] ]# docker login --默认即https://hub.docker.com Username : simpledockerhub Password: ***** Login Succeeded [[email protected] ]# docker pull hello-world [[email protected] ]#