欢迎您的光临,本博所发布之文章皆为作者亲测通过,如有错误,欢迎通过各种方式指正。由于本站位于香港虚拟主机,故速度比较慢。

文摘  Docker入门教程:Docker的简介和安装

Docker 本站 478 0评论

如今在云计算时代,虚拟化技术无疑是整座信息大厦最核心的。 

虚拟化既可以通过硬件模拟来实现,也能通过操作系统来实现。而近些年出现的容器虚拟化方案,更是充分利用了操作系统本身已有的机制和特性,轻量级虚拟化。 

Docker毫无疑问就是其中的佼佼者。


一. 什么是Docker


Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。意思很明显了,按照我的理解,先不考虑Docker的实现方式,其实docker就是一个包含运行环境的应用,由于自身带有所有需要的运行环境促成了他的可移植性和快速部署。

Docker官网:https://www.docker.com

Docker中文网:http://www.docker.org.cn 


Docker是一个开源的容器项目,基于go语言开发。之所以被称为容器技术,是因为docker对进程进行封装,隔离于宿主系统和其它的进程,类似于一个装东西的容器,而且在容器里面装有一系列文件系统、网络、依赖包等应用程序运行需要的环境,开发人员可以快速将他们的应用程序部署到容器内运行。容器技术属于操作系统层面的虚拟化技术,它和虚拟机技术主要的区别如下:

1-20181109111114.png


虚拟机需要先在宿主机操作系统上安装虚拟机管理软件Hypervisor,然后在每台虚拟机内用户安装需要的操作系统和依赖文件,并且需要预分配一定的硬件资源。虚拟机一旦开启,无论应用程序需要的资源量大小,预分配的资源将被全部占用,造成很大的资源浪费,而且每次启动虚拟机,都需要启动一次虚拟机内的操作系统,很耗时。


容器相当于直接在宿主机操作系统的基础上开启一个进程,各个容器共享宿主机的硬件资源和操作系统,可以实现资源的动态分配,并且启动容器就是启动一个进程,速度很快,应用程序直接在各个容器内运行,互不影响。资源和时间都开销很低。


二. 为什么使用Docker?


举个简单例子,例如运营一个网站,传统做法要先安装Linux,在安装Apache服务器,MySql数据库,PHP以及他们所依赖的环境。之后还需要进行配置(包括创建用户,配置参数等)。大量操作后,进行功能性测试,如果出现了问题,还需要进行代码查看等等。这些很繁琐无趣的体力活,极大的就降低了工作效率。 

而Docker,提供了一种聪明的方法,通过容器打包应用,意味着只要迁移到新的服务器上启动所需要的容器即可。这无意是大大节约了宝贵时间,降低部署过程中的风险。


Docker的优势:

更快速的交付和部署(使用Docker,开发人员可以用镜像来快速构建一套标准的开发环境;开发完成之后,测试和运维人员可以直接使用相同环境来部署代码。)

更轻松的迁移和扩展(Docker容器几乎可以在任意平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。可以在不同的平台轻松地迁移应用)

更简单的更新管理(使用Dockerfile,只需要修改小小的配置,就可以替代以往大量的更新工作)


与传统虚拟机对比


传统虚拟机Docker
硬盘使用一般为GB一般为MB
硬件使用模拟硬件行为最大程度上使用硬件资源
性能弱于接近原生
启动速度分钟级秒级
隔离情况物理机隔离、完全隔离容器间隔离、安全隔离
系统支持量一般几十个单机支持上千个容器


场景示例-传统开发流程

2-20170408154322284.jpg


场景示例-docker环境开发流程

3-20170408154455025.jpg

Docker通常用于如下场景:

· web应用的自动化打包和发布;

· 自动化测试和持续集成、发布;

· 在服务型环境中部署和调整数据库或其他的后台应用;

· 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。


三、Docker架构及相关概念


1.虚拟机、容器和镜像


虚拟机虚拟机在本质上就是在模拟一台真实的计算机设备,同时遵循同样的程序执行方式。虚拟机能够利用“虚拟机管理程序”运行在物理设备之上。反过来,虚拟机管理程序则可运行在主机设备或者“裸机”之上。

主机虚拟机管理程序运行在主机设备的操作系统之上。举例来说,一台运行有OS X的计算机可以在操作系统之上安装虚拟机(例如VirtualBox或者VMware Workstation 8)。该虚拟机并不会直接访问硬件,因此其需要经由主机操作系统(也就是Mac OS X)实现资源获取。

优势:其基本摆脱了对底层硬件的要求。该主机操作系统负责提供硬件驱动程序,而非由虚拟机管理程序自身提供,因此我们认为其具备更理想的“硬件兼容性”。 

缺点:这种介于硬件与虚拟机管理程序之间的额外层会带来更多资源消耗,进而降低虚拟机性能表现。


容器:容器通过对“用户空间”的抽象化处理提供操作系统层级的虚拟化机制。

出于各种考量与需求,容器在外观上与虚拟机非常相似。容器会把应用直接运行在宿主机的内核中,这样会比虚拟机有更好的性能。 

和虚拟机的共同点:二者皆拥有专有处理空间、能够作为root执行命令、提供专有网络接口与IP地址、允许定制化路由及iptable规则,且可启动文件系统等等。 

容器与虚拟机间的最大区别:虚拟机单独使用自己的内核,而各容器系统共享主机系统的内核。默认情况下,容器和宿主机是完全隔离的,最多也只会在配置了的情况下,使用宿主机的hosts文件和端口。 

优势:性能优越,因为虚拟机只能通过hypervisor(超级监督者)来间接的使用宿主机资源的虚拟权限。容器可以获得原生的资源使用权限,每个都运行在独立的进程中,不需要额外的内存。


镜像:是轻量的,独立的,可执行的包。镜像属于只读模板,大家可以借此配合Dockerfile中的编写指令集进行容器构建。镜像定义了打包的应用程序以及其相关依赖。这些依赖就好像是其启动时需要运行的进程。

Docker镜像利用Dockerfile实现构建。Dockerfile中的每条指令都会在镜像中添加一个新的“层”,这些层则表现为镜像文件系统中的一个分区——我们可以对其进行添加或者替换。层概念正是Docker轻量化的基础。Docker利用一套Union 

File System建立起这套强大的结构:

Docker为基于Linux容器的开源项目,其利用Linux内核中的各项功能——例如命名空间与控制组——以在操作系统之上创建容器,提供对应的底层Linux系统视图,同时也实现了系统隔离:即限制容器的查看与访问范畴。

容器概念并不是什么新鲜事物; 谷歌公司多年来一直在使用自己开发的容器技术。其它Linux容器技术方案还包括Solaris Zones、BSD jails以及LXC,且其都已经拥有多年的发展历史。


2.Docker核心概念


容器技术的核心概念有容器(container)、镜像(image)、仓库(registry)三个。

容器:具体的运行应用程序的一个进程,它里面包含应用程序的各种依赖。

镜像:创建容器的模板,根据不同配置的镜像来创建不同的容器使用。镜像和容器的关系可以理解为面向对象中类和实例对象的关系。

仓库:一个镜像只可以创建一种类型的容器,镜像多了就需要放到镜像仓库中存起来,仓库有本地镜像仓库和公共镜像仓库,平时使用本地仓库的镜像,没有的话去Registry hub公共镜像仓库下载。


3.Docker的组成架构


Docker主要有以下几部分组成:

Docker Client 客户端

Docker daemon 守护进程

Docker Image 镜像

Docker Container 容器

Docker Registry 仓库


客户端和守护进程:

Docker是C/S(客户端client-服务器server)架构模式。 

Docker通过客户端连接守护进程,通过命令向守护进程发出请求,守护进程通过一系列的操作返回结果。

Docker客户端可以连接本地或者远程的守护进程。

Docker客户端和服务器通过socket或RESTful API进行通信。

如图:

20170311134107772.jpg

docker image 镜像 

镜像是容器的基石,容器基于镜像启动和运行。镜像就好像容器的源代码,保存了容器各种启动的条件。镜像是一个层叠的只读文件系统。

docker container 容器

容器通过镜像来启动,容器是docker的执行来源,可以执行一个或多个进程。镜像相当于构建和打包阶段,容器相当于启动和执行阶段。容器启动时,Docker容器可以运行、开始、停止、移动和删除。每一个Docker容器都是独立和安全的应用平台。

docker registry 仓库 

docker仓库用来保存镜像。docker仓库分为公有和私有。docker公司提供公有仓库docker hub,网址:https://hub.docker.com/。我们也可以创建自己私有的仓库。


这几部分之间的关系如图: 

20170311133953474.png


Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。


运行和交互模式:

1、Docker守护进程 

Docker守护进程运行在一台主机上,用户不直接和守护进程交互,而是通过Docker客户端交互。

2、Docker客户端 

Docker客户端,实际是Docker的二进制程序,是主要的用户与Docker的交互方式。它接收用户指令,并与背后的Docker守护进程交互,如此来回往复。


容器与镜像的关系类似于面向对象编程中的对象与类。

Docker面向对象
容器对象
镜像

20160902113034273.jpg

概念说明
Docker 镜像(Images)Docker 镜像是用于创建 Docker 容器的模板。
Docker 容器(Container)容器是独立运行的一个或一组应用。
Docker 客户端(Client)Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信。
Docker 主机(Host)一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
Docker 仓库(Registry)Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。
Docker MachineDocker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。


四、安装Docker


安装Docker的先决条件:

· 必须是64位CPU架构的计算机,Docker目前不支持32位CPU;

· 运行Linux3.8或更高版本内核,CentOS时内核必不小于3.10;

· 内核必须支持一种合适的存储驱动,可以是Device Manager、AUFS、vfs、btrfs、以及默认的驱动Device Mapper中的一个;

· 内核必须支持并开启cgroup和命名空间namespace功能。


安装常见的情况: 

linux安装,window和mac安装可以参考官网的版本安装指导。


Docker有很多种安装的选择,我们推荐您在Ubuntu下面安装,因为Docker是在Ubuntu下面开发的,安装包测试比较充分,可以保证软件包的可用性。Mac, windows和其他的一些linux发行版本无法原生运行Docker,可以使用虚拟软件创建一个ubuntu的虚拟机并在里面运行Docker。


1.Ubuntu14.04安装Docker


前决条件

Docker官方要求Linux内核不低于3.1,可使用如下命令查看当前linux内核。

root@ubuntu:~# uname -a

Linux ubuntu 4.2.0-27-generic #32~14.04.1-Ubuntu SMP Fri Jan 22 15:32:26 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

PS:如果版本低于官方要求,请先升级内核,升级内核这里就不展开讲了。


Docker有2种安装方法: 

1.安装Ubuntu维护Docker版本(优点:安装方便。缺点版本较低) 

2.安装Docker维护版本(优点:版本最新,缺点:安装略复杂)(最常用)


第一种方法:

$ sudo apt-get update

$ sudo apt-get install -y docker.io

$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker

$ sudo docer version 

20160623104150894.jpg

以上使用Ubuntu14.04系统默认自带的docker.io安装包安装Docker 这样安装的Docker版本比较旧,所以官方推荐我们使用Docker官方源安装最新版本,也就是第二种方法。


第二种方法:

$ sudo apt-get install–y apt-transport-https ca-certificates

$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D


根据Ubuntu版本不同,选择不同的源

On Ubuntu Precise 12.04 (LTS)

deb https://apt.dockerproject.org/repo ubuntu-precise main

On Ubuntu Trusty 14.04 (LTS)

deb https://apt.dockerproject.org/repo ubuntu-trusty main

Ubuntu Wily 15.10

deb https://apt.dockerproject.org/repo ubuntu-wily main

Ubuntu Xenial 16.04 (LTS)

deb https://apt.dockerproject.org/repo ubuntu-xenial main

由于我这边使用的14.04版本 故采用deb https://apt.dockerproject.org/repo ubuntu-trusty main


sudo vi /etc/apt/sources.list.d/docker.list 

添加deb https://apt.dockerproject.org/repo ubuntu-trusty main 保存退出。 


使用cat命令确认新增内容。

$ cat /etc/apt/sources.list.d/docker.list

deb https://apt.dockerproject.org/repo ubuntu-trusty main


继续执行以下命令更新

$ apt-get update

$ apt-get purge lxc-docker*

$ apt-cache policy docker-engine 

20160623104549843.jpg


列表显示最新的Docker版本为1.11.2-0~trusty

$ apt-get install -y docker-engine=1.11.2-0~trusty

$ sudo docer version

20160623104736142.jpg


2.CentOS 7上安装Docker


目前,CentOS 仅发行版本中的内核支持 Docker。

Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。

Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。


第一种方式:使用 yum 安装


1、通过 uname -r 命令查看你当前的内核版本

$ uname -r


2、使用 root 权限登录 Centos。确保 yum 包更新到最新。

$ sudo yum update


3、卸载旧版本(如果安装过旧版本的话)

$ sudo yum remove docker  docker-common docker-selinux docker-engine


4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2


5、设置yum源

$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

1107037-20180128094640209-1433322312.png


6、可以查看所有仓库中所有docker版本,并选择特定版本安装

$ yum list docker-ce --showduplicates | sort -r

1107037-20180128095038600-772177322.png


7、安装docker

$ sudo yum install docker-ce  #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0

$ sudo yum install <FQPN>  # 例如:sudo yum install docker-ce-17.12.0.ce

1107037-20180128103448287-493824081.png


8、启动并加入开机启动

$ sudo systemctl start docker

$ sudo systemctl enable docker


9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

$ docker version

1107037-20180128104046600-1053107877.png


第二种方式:使用脚本安装 Docker


1、使用 sudo 或 root 权限登录 Centos。


2、确保 yum 包更新到最新。

$ sudo yum update


3、执行 Docker 安装脚本。

$ curl -fsSL https://get.docker.com -o get-docker.sh

$ sudo sh get-docker.sh

执行这个脚本会添加 docker.repo 源并安装 Docker。


4、启动 Docker 进程。

sudo systemctl start docker


5、验证 docker 是否安装成功并在容器中执行一个测试的镜像。

$ sudo docker run hello-world

docker ps


到此,Docker 在 CentOS 系统的安装完成。


镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。


新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。

请在该配置文件中加入(没有该文件的话,请先建一个):

{

  "registry-mirrors": ["http://hub-mirror.c.163.com"]

}


删除 Docker CE

执行以下命令来删除 Docker CE:

$ sudo yum remove docker-ce

$ sudo rm -rf /var/lib/docker


3.Windows 安装Docker


win7、win8 系统

win7、win8 等需要利用 docker toolbox 来安装,国内可以使用阿里云的镜像来下载,下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ 


docker toolbox 是一个工具集,它主要包含以下一些内容:

· Docker CLI 客户端,用来运行docker引擎创建镜像和容器

· Docker Machine. 可以让你在windows的命令行中运行docker引擎命令

· Docker Compose. 用来运行docker-compose命令

· Kitematic. 这是Docker的GUI版本

· Docker QuickStart shell. 这是一个已经配置好Docker的命令行环境

· Oracle VM Virtualbox. 虚拟机

下载完成之后直接点击安装,安装成功后,桌边会出现三个图标,入下图所示:

icon-set.png


点击 Docker QuickStart 图标来启动 Docker Toolbox 终端。

如果系统显示 User Account Control 窗口来运行 VirtualBox 修改你的电脑,选择 Yes。

1513667960-3359-b2d-shell.png

$ 符号那你可以输入以下命令来执行。

$ docker run hello-world
 Unable to find image 'hello-world:latest' locally
 Pulling repository hello-world
 91c95931e552: Download complete
 a8219747be10: Download complete
 Status: Downloaded newer image for hello-world:latest
 Hello from Docker.
 This message shows that your installation appears to be working correctly.
 To generate this message, Docker took the following steps:
  1. The Docker Engine CLI client contacted the Docker Engine daemon.
  2. The Docker Engine daemon pulled the "hello-world" image from the Docker Hub.
     (Assuming it was not already locally available.)
  3. The Docker Engine daemon created a new container from that image which runs the
     executable that produces the output you are currently reading.
  4. The Docker Engine daemon streamed that output to the Docker Engine CLI client, which sent it
     to your terminal.
 To try something more ambitious, you can run an Ubuntu container with:
  $ docker run -it ubuntu bash
 For more examples and ideas, visit:
  https://docs.docker.com/userguide/


Win10 系统

现在 Docker 有专门的 Win10 专业版系统的安装包,需要开启Hyper-V。


开启 Hyper-V

1513668234-4363-20171206211136409-1609350099.png


程序和功能

1513668234-4368-20171206211345066-1430601107.png


启用或关闭Windows功能

1513668234-9748-20171206211435534-1499766232.png

选中Hyper-V

1513668234-6433-20171206211858191-1177002365.png


1、安装 Toolbox

最新版 Toolbox 下载地址: https://www.docker.com/get-docker 

点击 Get Docker Community Edition,并下载 Windows 的版本:

A5C273D6-FED1-49AC-A26B-99CD2D2CFE47.jpg

9C20D846-32E1-4577-A66B-6FF233272636.jpg

2、运行安装文件

双击下载的 Docker for Windows Installe 安装文件,一路 Next,点击 Finish 完成安装。

1513669129-6146-20171206214940331-1428569749.png

1513668903-9668-20171206220321613-1349447293.png


安装完成后,Docker 会自动启动。通知栏上会出现个小鲸鱼的图标1513582421-4552-whale-x-win.png,这表示 Docker 正在运行。

桌边也会出现三个图标,入下图所示:

我们可以在命令行执行 docker version 来查看版本号,docker run hello-world 来载入测试镜像测试。

如果没启动,你可以在 Windows 搜索 Docker 来启动:

1513585082-6751-docker-app-search.jpg


启动后,也可以在通知栏上看到小鲸鱼图标:

1513585123-3777-whale-taskbar-circle.png


镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com  。

新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。

请在该配置文件中加入(没有该文件的话,请先建一个):

{

  "registry-mirrors": ["http://hub-mirror.c.163.com"]

}


附录:Docker 资源汇总

Docker官方英文资源

docker官网:http://www.docker.com 

Docker windows入门:https://docs.docker.com/windows/ 

Docker Linux 入门:https://docs.docker.com/linux/ 

Docker mac 入门:https://docs.docker.com/mac/ 

Docker 用户指引:https://docs.docker.com/engine/userguide/ 

Docker 官方博客:http://blog.docker.com/ 

Docker Hub: https://hub.docker.com/ 

Docker开源: https://www.docker.com/open-source 


Docker中文资源

Docker中文网站:https://www.docker-cn.com/ 

Docker安装手册:https://docs.docker-cn.com/engine/installation/ 


Docker 国内镜像

网易加速器:http://hub-mirror.c.163.com 

官方中国加速器:https://registry.docker-cn.com 

ustc的镜像:https://docker.mirrors.ustc.edu.cn 

daocloud:https://www.daocloud.io/mirror#accelerator-doc  (注册后使用)


参考网址:

http://www.docker.org.cn/book/install/supported-platform-17.html 

http://www.runoob.com/docker/ubuntu-docker-install.html 

https://blog.csdn.net/yanhongbin1993/article/details/81436849 

https://blog.csdn.net/relax_hb/article/details/69668815 

https://blog.csdn.net/zjcjava/article/details/78493724


转载请注明: ITTXX.CN--分享互联网 » Docker入门教程:Docker的简介和安装

最后更新:2018-11-13 16:35:14

赞 (4) or 分享 ()
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽