上一篇我们主要把 Docker 的一些常见概念如 Image , Container , Repository 做了详细的阐述,也从传统虚拟化方式的角度阐述了 docker 的优势,我们从下图可以直观地看到 Docker 的架构:

docker服务使用skywalking docker服务端_Docker

Docker 使用 C/S 结构,即客户端/服务器体系结构。 Docker 客户端与 Docker 服务器进行交互,Docker服务端负责构建、运行和分发 Docker 镜像。 Docker 客户端和服务端可以运行在一台机器上,也可以通过 RESTful 、 stock 或网络接口与远程 Docker 服务端进行通信。

docker服务使用skywalking docker服务端_docker_02

这张图展示了 Docker 客户端、服务端和 Docker 仓库(即 DockerHub 和 DockerCloud ),默认情况下 Docker 会在 Docker 中央仓库寻找镜像文件,这种利用仓库管理镜像的设计理念类似于 Git ,当然这个仓库是可以通过修改配置来指定的,甚至我们可以创建我们自己的私有仓库。

Docker的安装和使用

Docker 的安装和使用有一些前提条件,主要体现在体系架构和内核的支持上。对于体系架构,除了 Docker 一开始就支持的 X86-64 ,其他体系架构的支持则一直在不断地完善和推进中。

Docker 分为 CE 和 EE 两大版本。 CE 即社区版(免费,支持周期 7 个月), EE 即企业版,强调安全,付费使用,支持周期 24 个月。

我们在安装前可以参看官方文档获取最新的 Docker 支持情况,官方文档在这里:



https://docs.docker.com/install/



 

Docker 对于内核支持的功能,即内核的配置选项也有一定的要求(比如必须开启 Cgroup 和 Namespace 相关选项,以及其他的网络和存储驱动等), Docker 源码中提供了一个检测脚本来检测和指导内核的配置,脚本链接在这里:



https://raw.githubusercontent.com/docker/docker/master/contrib/check-config.sh



 

在满足前提条件后,安装就变得非常的简单了。

DockerCE 的安装请参考官方文档:

  • MacOS:https://docs.docker.com/docker-for-mac/install/
  • Windows:https://docs.docker.com/docker-for-windows/install/
  • Ubuntu:https://docs.docker.com/install/linux/docker-ce/ubuntu/
  • Debian:https://docs.docker.com/install/linux/docker-ce/debian/
  • CentOS:https://docs.docker.com/install/linux/docker-ce/centos/
  • Fedora:https://docs.docker.com/install/linux/docker-ce/fedora/
  • 其他 Linux 发行版:https://docs.docker.com/install/linux/docker-ce/binaries/

这里我们以 CentOS7 作为本文的演示。

环境准备
  • 阿里云服务器(1核2G,1M带宽)
  • CentOS 7.4 64位

由于 Docker-CE 支持 64 位版本的 CentOS7 ,并且要求内核版本不低于 3.10

首先我们需要卸载掉旧版本的 Docker



$ sudo yum remove docker \

                 docker-client \

                 docker-client-latest \

                 docker-common \

                 docker-latest \

                 docker-latest-logrotate \

                 docker-logrotate \

                 docker-selinux \

                 docker-engine-selinux \

                 docker-engine



docker服务使用skywalking docker服务端_运维_03

 

我们执行以下安装命令去安装依赖包:



$ sudo yum install -y yum-utils \

          device-mapper-persistent-data \

          lvm2



 

这里我事先已经安装过了,所以提示我已经安装了最新版本

docker服务使用skywalking docker服务端_docker_04

安装Docker

Docker 软件包已经包括在默认的 CentOS-Extras 软件源里。因此想要安装 docker,只需要运行下面的 yum 命令



$ sudo yum install docker



 

当然在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本, CentOS 系统上可以使用这套脚本安装:



curl -fsSL get.docker.com -o get-docker.sh

sh get-docker.sh



 

具体可以参看 docker-install 的脚本:

  1. https://github.com/docker/docker-install

执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 DockerCE 的 Edge 版本安装在系统中。

安装完成后,运行下面的命令,验证是否安装成功:



docker version

or

docker info



 

返回docker的版本相关信息,证明 docker 安装成功

docker服务使用skywalking docker服务端_docker_05

启动Docker-CE



$ sudo systemctl enable docker

$ sudo systemctl start docker



 

Docker的简单运用---Hello World

由于服务器日常崩溃了, docker 出了点问题,所以以下案例的演示是基于 KaliLinux 环境下进行的。

我们通过最简单的 image 文件 hello world,感受一下 Docker 的魅力吧!

我们直接运行下面的命令,将名为 hello-world 的 image 文件从仓库抓取到本地。



docker pull library/hello-world



 

docker pull images 是抓取 image 文件, library/hello-world 是 image 文件在仓库里面的位置,其中 library 是 image 文件所在的组, hello-world 是 image 文件的名字。

docker服务使用skywalking docker服务端_docker_06

抓取成功以后,就可以在本机看到这个 image 文件了。



docker images



 

我们可以看到如下结果:

docker服务使用skywalking docker服务端_运维_07

现在,我们可以运行 hello-world 这个 image 文件



docker run hello-world



 

我们可以看到如下结果:

docker服务使用skywalking docker服务端_git_08

输出这段提示以后, hello world 就会停止运行,容器自动终止。有些容器不会自动终止,因为提供的是服务,比如Mysql镜像等。

是不是很 easy 呢?我们从上面可以看出, docker 的功能是十分强大的,除此之外,我们还可以拉去一些 Ubuntu , Apache 等镜像,在未来的教程中我们将会一一提到。

Docker 提供了一套简单实用的命令来创建和更新镜像,我们可以通过网络直接下载一个已经创建好了的应用镜像,并通过 DockerRUN 命令就可以直接使用。当镜像通过 RUN 命令运行成功后,这个运行的镜像就是一个 Docker 容器啦,容器可以理解为一个轻量级的沙箱, Docker 利用容器来运行和隔离应用,容器是可以被启动、停止、删除的,这并不会影响 Docker 镜像。

我们可以看看下面这幅图:

docker服务使用skywalking docker服务端_Docker_09

Docker 客户端是 Docker 用户与 Docker 交互的主要方式。当您使用 docker 命令行运行命令时, Docker 客户端将这些命令发送给服务器端,服务端将执行这些命令。 docker 命令使用 docker API 。 Docker 客户端可以与多个服务端进行通信。

总结

本篇主要给大家介绍了一下 Docker 环境的搭建,简单的介绍了一下 Docker 架构,以及用 Docker 命令简单演示了一下如何拉去一个 images 镜像,下一篇将会带大家深入了解 Docker 的一些基本命令以及 Docker 容器是如何运行。