软件测试修炼之路 A Tester

Docker介绍及安装

2016-10-06
i.itest.ren

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker的应用场景

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

Docker 的优点

1、简化程序:

Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的任务,在Docker容器的处理下,只需要数秒就能完成。

2、避免选择恐惧症:

如果你有选择恐惧症,还是资深患者。Docker 帮你打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。

3、节省开支:

一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

相关链接:

  • Docker 官网:http://www.docker.com
  • Github Docker 源码:https://github.com/docker/docker

Docker 架构

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

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

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

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

Docker 安装

CentOS Docker 安装

Docker支持以下的CentOS版本:

  • CentOS 7 (64-bit)
  • CentOS 6.5 (64-bit) 或更高的版本

前提条件:

  • 目前,CentOS 仅发行版本中的内核支持 Docker。
  • Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
  • Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。

使用 yum 安装(CentOS 7下)

Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

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

[zdx@localhost ~]$ uname -r
3.10.0-327.el7.x86_64

安装 Docker Docker 软件包和依赖包已经包含在默认的 CentOS-Extras 软件源里,安装命令如下:

[root@localhost ~]# yum -y install docker
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.yun-idc.com
 * extras: mirrors.neusoft.edu.cn
 * updates: mirrors.neusoft.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 docker.x86_64.0.1.10.3-46.el7.centos.14 将被 安装
--> 正在处理依赖关系 docker-common = 1.10.3-46.el7.centos.14,它被软件包 docker-1.10.3-46.el7.centos.14.x86_64 需要
--> 正在处理依赖关系 oci-systemd-hook >= 1:0.1.4-4,它被软件包 docker-1.10.3-46.el7.centos.14.x86_64 需要
--> 正在处理依赖关系 oci-register-machine >= 1:0-1.8,它被软件包 docker-1.10.3-46.el7.centos.14.x86_64 需要
--> 正在处理依赖关系 docker-selinux >= 1.10.3-46.el7.centos.14,它被软件包 docker-1.10.3-46.el7.centos.14.x86_64 需要
--> 正在处理依赖关系 libseccomp.so.2()(64bit),它被软件包 docker-1.10.3-46.el7.centos.14.x86_64 需要
--> 正在检查事务
---> 软件包 docker-common.x86_64.0.1.10.3-46.el7.centos.14 将被 安装
---> 软件包 docker-selinux.x86_64.0.1.10.3-46.el7.centos.14 将被 安装
--> 正在处理依赖关系 policycoreutils-python,它被软件包 docker-selinux-1.10.3-46.el7.centos.14.x86_64 需要
---> 软件包 libseccomp.x86_64.0.2.2.1-1.el7 将被 安装
---> 软件包 oci-register-machine.x86_64.1.0-1.8.gitaf6c129.el7 将被 安装
---> 软件包 oci-systemd-hook.x86_64.1.0.1.4-4.git41491a3.el7 将被 安装
--> 正在处理依赖关系 libyajl.so.2()(64bit),它被软件包 1:oci-systemd-hook-0.1.4-4.git41491a3.el7.x86_64 需要
--> 正在检查事务
---> 软件包 policycoreutils-python.x86_64.0.2.2.5-20.el7 将被 安装
--> 正在处理依赖关系 libsemanage-python >= 2.1.10-1,它被软件包 policycoreutils-python-2.2.5-20.el7.x86_64 需要
--> 正在处理依赖关系 audit-libs-python >= 2.1.3-4,它被软件包 policycoreutils-python-2.2.5-20.el7.x86_64 需要
--> 正在处理依赖关系 python-IPy,它被软件包 policycoreutils-python-2.2.5-20.el7.x86_64 需要
--> 正在处理依赖关系 libselinux-python,它被软件包 policycoreutils-python-2.2.5-20.el7.x86_64 需要
--> 正在处理依赖关系 libqpol.so.1(VERS_1.4)(64bit),它被软件包 policycoreutils-python-2.2.5-20.el7.x86_64 需要
--> 正在处理依赖关系 libqpol.so.1(VERS_1.2)(64bit),它被软件包 policycoreutils-python-2.2.5-20.el7.x86_64 需要
--> 正在处理依赖关系 libcgroup,它被软件包 policycoreutils-python-2.2.5-20.el7.x86_64 需要
--> 正在处理依赖关系 libapol.so.4(VERS_4.0)(64bit),它被软件包 policycoreutils-python-2.2.5-20.el7.x86_64 需要
--> 正在处理依赖关系 checkpolicy,它被软件包 policycoreutils-python-2.2.5-20.el7.x86_64 需要
--> 正在处理依赖关系 libqpol.so.1()(64bit),它被软件包 policycoreutils-python-2.2.5-20.el7.x86_64 需要
--> 正在处理依赖关系 libapol.so.4()(64bit),它被软件包 policycoreutils-python-2.2.5-20.el7.x86_64 需要
---> 软件包 yajl.x86_64.0.2.0.4-4.el7 将被 安装
--> 正在检查事务
---> 软件包 audit-libs-python.x86_64.0.2.4.1-5.el7 将被 安装
---> 软件包 checkpolicy.x86_64.0.2.1.12-6.el7 将被 安装
---> 软件包 libcgroup.x86_64.0.0.41-8.el7 将被 安装
---> 软件包 libselinux-python.x86_64.0.2.2.2-6.el7 将被 安装
---> 软件包 libsemanage-python.x86_64.0.2.1.10-18.el7 将被 安装
---> 软件包 python-IPy.noarch.0.0.75-6.el7 将被 安装
---> 软件包 setools-libs.x86_64.0.3.3.7-46.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

===============================================================================================================================================================================================
 Package                                              架构                                 版本                                                     源                                    大小
===============================================================================================================================================================================================
正在安装:
 docker                                               x86_64                               1.10.3-46.el7.centos.14                                  extras                               9.5 M
为依赖而安装:
 audit-libs-python                                    x86_64                               2.4.1-5.el7                                              base                                  69 k
 checkpolicy                                          x86_64                               2.1.12-6.el7                                             base                                 247 k
 docker-common                                        x86_64                               1.10.3-46.el7.centos.14                                  extras                                61 k
 docker-selinux                                       x86_64                               1.10.3-46.el7.centos.14                                  extras                                79 k
 libcgroup                                            x86_64                               0.41-8.el7                                               base                                  64 k
 libseccomp                                           x86_64                               2.2.1-1.el7                                              base                                  49 k
 libselinux-python                                    x86_64                               2.2.2-6.el7                                              base                                 247 k
 libsemanage-python                                   x86_64                               2.1.10-18.el7                                            base                                  94 k
 oci-register-machine                                 x86_64                               1:0-1.8.gitaf6c129.el7                                   extras                               1.1 M
 oci-systemd-hook                                     x86_64                               1:0.1.4-4.git41491a3.el7                                 extras                                27 k
 policycoreutils-python                               x86_64                               2.2.5-20.el7                                             base                                 435 k
 python-IPy                                           noarch                               0.75-6.el7                                               base                                  32 k
 setools-libs                                         x86_64                               3.3.7-46.el7                                             base                                 485 k
 yajl                                                 x86_64                               2.0.4-4.el7                                              base                                  39 k

事务概要
===============================================================================================================================================================================================
安装  1 软件包 (+14 依赖软件包)

总下载量:12 M
安装大小:54 M
Downloading packages:
(1/15): audit-libs-python-2.4.1-5.el7.x86_64.rpm                                                                                                                        |  69 kB  00:00:00     
(2/15): libcgroup-0.41-8.el7.x86_64.rpm                                                                                                                                 |  64 kB  00:00:00     
(3/15): docker-selinux-1.10.3-46.el7.centos.14.x86_64.rpm                                                                                                               |  79 kB  00:00:00     
(4/15): docker-common-1.10.3-46.el7.centos.14.x86_64.rpm                                                                                                                |  61 kB  00:00:00     
(5/15): libseccomp-2.2.1-1.el7.x86_64.rpm                                                                                                                               |  49 kB  00:00:00     
(6/15): checkpolicy-2.1.12-6.el7.x86_64.rpm                                                                                                                             | 247 kB  00:00:01     
(7/15): oci-systemd-hook-0.1.4-4.git41491a3.el7.x86_64.rpm                                                                                                              |  27 kB  00:00:00     
(8/15): libsemanage-python-2.1.10-18.el7.x86_64.rpm                                                                                                                     |  94 kB  00:00:01     
(9/15): python-IPy-0.75-6.el7.noarch.rpm                                                                                                                                |  32 kB  00:00:00     
(10/15): libselinux-python-2.2.2-6.el7.x86_64.rpm                                                                                                                       | 247 kB  00:00:01     
(11/15): yajl-2.0.4-4.el7.x86_64.rpm                                                                                                                                    |  39 kB  00:00:00     
(12/15): oci-register-machine-0-1.8.gitaf6c129.el7.x86_64.rpm                                                                                                           | 1.1 MB  00:00:02     
(13/15): policycoreutils-python-2.2.5-20.el7.x86_64.rpm                                                                                                                 | 435 kB  00:00:02     
(14/15): setools-libs-3.3.7-46.el7.x86_64.rpm                                                                                                                           | 485 kB  00:00:03     
(15/15): docker-1.10.3-46.el7.centos.14.x86_64.rpm                                                                                                                      | 9.5 MB  00:00:19     
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总计                                                                                                                                                           654 kB/s |  12 MB  00:00:19     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : libsemanage-python-2.1.10-18.el7.x86_64                                                                                                                                   1/15 
  正在安装    : audit-libs-python-2.4.1-5.el7.x86_64                                                                                                                                      2/15 
  正在安装    : yajl-2.0.4-4.el7.x86_64                                                                                                                                                   3/15 
  正在安装    : 1:oci-systemd-hook-0.1.4-4.git41491a3.el7.x86_64                                                                                                                          4/15 
  正在安装    : 1:oci-register-machine-0-1.8.gitaf6c129.el7.x86_64                                                                                                                        5/15 
  正在安装    : libseccomp-2.2.1-1.el7.x86_64                                                                                                                                             6/15 
  正在安装    : python-IPy-0.75-6.el7.noarch                                                                                                                                              7/15 
  正在安装    : checkpolicy-2.1.12-6.el7.x86_64                                                                                                                                           8/15 
  正在安装    : libcgroup-0.41-8.el7.x86_64                                                                                                                                               9/15 
  正在安装    : libselinux-python-2.2.2-6.el7.x86_64                                                                                                                                     10/15 
  正在安装    : docker-common-1.10.3-46.el7.centos.14.x86_64                                                                                                                             11/15 
  正在安装    : setools-libs-3.3.7-46.el7.x86_64                                                                                                                                         12/15 
  正在安装    : policycoreutils-python-2.2.5-20.el7.x86_64                                                                                                                               13/15 
  正在安装    : docker-selinux-1.10.3-46.el7.centos.14.x86_64                                                                                                                            14/15 
  正在安装    : docker-1.10.3-46.el7.centos.14.x86_64                                                                                                                                    15/15 
  验证中      : setools-libs-3.3.7-46.el7.x86_64                                                                                                                                          1/15 
  验证中      : docker-common-1.10.3-46.el7.centos.14.x86_64                                                                                                                              2/15 
  验证中      : docker-1.10.3-46.el7.centos.14.x86_64                                                                                                                                     3/15 
  验证中      : libselinux-python-2.2.2-6.el7.x86_64                                                                                                                                      4/15 
  验证中      : libcgroup-0.41-8.el7.x86_64                                                                                                                                               5/15 
  验证中      : 1:oci-systemd-hook-0.1.4-4.git41491a3.el7.x86_64                                                                                                                          6/15 
  验证中      : checkpolicy-2.1.12-6.el7.x86_64                                                                                                                                           7/15 
  验证中      : python-IPy-0.75-6.el7.noarch                                                                                                                                              8/15 
  验证中      : libseccomp-2.2.1-1.el7.x86_64                                                                                                                                             9/15 
  验证中      : 1:oci-register-machine-0-1.8.gitaf6c129.el7.x86_64                                                                                                                       10/15 
  验证中      : docker-selinux-1.10.3-46.el7.centos.14.x86_64                                                                                                                            11/15 
  验证中      : yajl-2.0.4-4.el7.x86_64                                                                                                                                                  12/15 
  验证中      : audit-libs-python-2.4.1-5.el7.x86_64                                                                                                                                     13/15 
  验证中      : policycoreutils-python-2.2.5-20.el7.x86_64                                                                                                                               14/15 
  验证中      : libsemanage-python-2.1.10-18.el7.x86_64                                                                                                                                  15/15 

已安装:
  docker.x86_64 0:1.10.3-46.el7.centos.14

作为依赖被安装:
  audit-libs-python.x86_64 0:2.4.1-5.el7                          checkpolicy.x86_64 0:2.1.12-6.el7                           docker-common.x86_64 0:1.10.3-46.el7.centos.14                   
  docker-selinux.x86_64 0:1.10.3-46.el7.centos.14                 libcgroup.x86_64 0:0.41-8.el7                               libseccomp.x86_64 0:2.2.1-1.el7                                  
  libselinux-python.x86_64 0:2.2.2-6.el7                          libsemanage-python.x86_64 0:2.1.10-18.el7                   oci-register-machine.x86_64 1:0-1.8.gitaf6c129.el7               
  oci-systemd-hook.x86_64 1:0.1.4-4.git41491a3.el7                policycoreutils-python.x86_64 0:2.2.5-20.el7                python-IPy.noarch 0:0.75-6.el7                                   
  setools-libs.x86_64 0:3.3.7-46.el7                              yajl.x86_64 0:2.0.4-4.el7

完毕!

启动 Docker 后台服务

[root@localhost ~]# service docker start
Redirecting to /bin/systemctl start  docker.service

测试运行 hello-world

[root@localhost ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
Trying to pull repository docker.io/library/hello-world ... 
latest: Pulling from docker.io/library/hello-world
c04b14da8d14: Pull complete 
Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9
Status: Downloaded newer image for docker.io/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 client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker Hub account:
 https://hub.docker.com

For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/

由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。

使用脚本安装 Docker

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

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

$ sudo yum update

3、执行 Docker 安装脚本。

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

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

4、启动 Docker 进程。

$ sudo service docker start

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

$ sudo docker run hello-world

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

Ubuntu Docker 安装

Docker 支持以下的 Ubuntu 版本:

  • Ubuntu Precise 12.04 (LTS)
  • Ubuntu Trusty 14.04 (LTS)
  • Ubuntu Wily 15.10
  • 其他更新的版本……

前提条件

Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的 Ubuntu 版本是否支持 Docker。

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

使用脚本安装 Docker

wget -qO- https://get.docker.com/ | sh

当要以非root用户可以直接运行docker时,需要执行 sudo usermod -aG docker runoob 命令,然后重新登陆,否则会有报错.

启动docker 后台服务

sudo service docker start

测试运行hello-world

docker run hello-world

Windows Docker 安装

Docker 引擎使用的是 Linux 内核特性,所以我们需要在 Windows 上使用一个轻量级的虚拟机 (VM) 来运行 Docker。

我们通过 Boot2Docker 来安装虚拟机和运行 Docker

安装

1、安装Boot2Docker

最新版 Boot2Docker 下载地址: https://github.com/boot2docker/windows-installer/releases/latest

目前最新版为v1.8.0, 下载地址为: https://github.com/boot2docker/windows-installer/releases/download/v1.8.0/docker-install.exe

2、运行安装文件

运行安装文件,它将会安装 virtualbox、MSYS-git boot2docker Linux 镜像和 Boot2Docker 的管理工具。

安装三步走直至安装完成。

从桌面上或者 Program Files 中运行 Boot2Docker Start

Boot2Docker Start 将启动一个 Unix shell 来配置和管理运行在虚拟主机中的 Docker,我们可以通过运行 docker version 来查看它是否正常工作。

运行 Docker

使用boot2docker.exe ssh 连接到虚拟主机上,然后执行docker run hello-world

到此,docker在Windows系统的安装完成。


上一篇 JavaScript

下一篇 Docker使用

Comments