Docker入门教程(一)——基本介绍

1、Docker概念

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

2、Docker架构

Docker使用客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器。Docker容器通过Docker镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。

Docker系统有两个程序,docker服务端和docker客户端。其中docker服务端是一个服务进程,管理着所有的容器。docker客户端则扮演着docker服务端的远程控制器,可以用来控制docker的服务端进程。大部分情况下,docker服务端和客户端运行在一台机器上。客户端与服务器端不一定要在一起。客户端可以运行在windows、linux等机器上,然后服务器端必须运行在linux 64bit的操作系统上。

3、Docker应用场景

(1)web应用的自动化打包和发布;
(2)自动化测试和持续集成、发布;
(3)在服务型环境中部署和调整数据库或其他的后台应用;
(4)从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

4、Docker特征

Docker有不少有趣的功能,通过本教程相信你会更好地理解它们。Docker的特性主要包括以下几点:
(1)速度飞快以及优雅的隔离框架;
(2)物美价廉;
(3)CPU/内存的低消耗;
(4)快速开/关机;
(5)跨云计算基础构架。

5、Docker组件与元素

Docker有三个组件和三个基本元素。

5.1 三个组件
Docker Client是用户界面,它支持用户与Docker Daemon之间通信。
Docker Daemon运行于主机上,处理服务请求。
Docker Index是中央registry,支持拥有公有与私有访问权限的Docker容器镜像的备份。

5.2 三个基本要素
Docker Containers负责应用程序的运行,包括操作系统、用户添加的文件以及元数据。
Docker Images是一个只读模板,用来运行Docker容器。
DockerFile是文件指令集,用来说明如何自动创建Docker镜像。

这里写图片描述

6、Docker运行原理

运行任何应用程序,都需要有两个基本步骤:
构建一个镜像。
运行容器。

这些步骤都是从Docker Client的命令开始的。Docker Client使用的是Docker二进制文件。在基础层面上,Docker Client会告诉Docker Daemon需要创建的镜像以及需要在容器内运行的命令。当Daemon接收到创建镜像的信号后,会进行如下操作:

(1)第1步,构建镜像

如前所述,Docker Image是一个构建容器的只读模板,它包含了容器启动所需的所有信息,包括运行程序和配置数据。
每个镜像都源于一个基本的镜像,然后根据Dockerfile中的指令创建模板。对于每个指令,在镜像上创建一个新的层面。

一旦镜像创建完成,就可以将它们推送到中央registry:Docker Index,以供他人使用。然而,Docker Index为镜像提供了两个级别的访问权限:公有访问和私有访问。你可以将镜像存储在私有仓库,Docker官网有私有仓库的套餐可以供你选择。总之,公有仓库是可搜索和可重复使用的,而私有仓库只能给那些拥有访问权限的成员使用。Docker Client可用于Docker Index内的镜像搜索。

(2)第2步,运行容器

运行容器源于我们在第一步中创建的镜像。当容器被启动后,一个读写层会被添加到镜像的顶层。当分配到合适的网络和IP地址后,需要的应用程序就可以在容器中运行了。

7、Docker安装相关命令
这里以在unbuntu14.04上安装为例:

//创建docker用户并将其纳入docker这个用户组
#useradd docker -g docker

//更新源
#sudo apt-get update

//安装依赖包
#sudo apt-getinstall linux-image-generic-lts-trusty

//重启
#sudo reboot

//安装docker
#sudo apt-getinstall wget     // 可以通过命令which wget是否已安装
#wget -qO-https://get.docker.com/ | sh   //获取最新版本

//验证安装是否成功
#sudo docker run hello-world

8、Docker服务相关命令

//Docker服务启动|重启|停止
#service docker start    //启动
#service docker restart  //重启
#service docker stop    //停止

//Docker服务对应的版本查看
# sudo docker version

//Docker环境查看
#sudo docker info

//Docker命令帮助
#sudo docker  //查看docker的所有命令
#sudo docker command --help  //查看单个docker命令的帮助,如docker ru--help
什么是Docker Docker 最初是dotCloud 公司创始人Solomon Hykes 在法国期间发起的一个公司内部项目, 它是基于dotCloud 公司多年云服务技术的一次革新,并于2013 年3 月以Apache 2.0 授权 协议开源,主要项目代码在GitHub 上进行维护。Docker 项目后来还加入了Linux 基金会, 并成立推动开放容器联盟(OCI)。 Docker 自开源后受到广泛的关注和讨论,至今其GitHub 项目已经超过4 万6 千个星标和一 万多个fork。甚至由于Docker 项目的火爆,在2013 年底,dotCloud 公司决定改名为 DockerDocker 最初是在Ubuntu 12.04 上开发实现的;Red Hat 则从RHEL 6.5 开始对 Docker 进行支持;Google 也在其PaaS 产品中广泛应用DockerDocker 使用Google 公司推出的Go 语言进行开发实现,基于Linux 内核的 cgroup,namespace,以及AUFS 类的Union FS 等技术,对进程进行封装隔离,属于操作 系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容 器。最初实现是基于LXC,从0.7 版本以后开始去除LXC,转而使用自行开发的 libcontainer,从1.11 开始,则进一步演进为使用runC 和containerd。 Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极 大的简化了容器的创建和维护。使得Docker 技术比虚拟机技术更为轻便、快捷。 下面的图片比较了Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件 后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程 直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比 传统虚拟机更为轻便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值