随着计算机近年来的蓬勃发展,产生了大量优秀系统和软件。软件开发人员可以自由选择各种软件应用。但同时带来的问题就是需要维护一个非常庞大的开发、测试和生成环境。面对这种情况,Docker容器技术横空出世,提供了非常简单、灵活、高效的解决方案,不再需要过多的改变现有的使用习惯,就可以和已有的工具配合使用。因此,因此掌握Docker也是途径云计算的必经之路。

一、Docker概述

1)Docker简介

Docker作为开源社区最火爆的项目,它是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”,docker的全部源代码都在https://github.com/docker 进行相关维护,其官网是:https://www.docker.com

Docker的设计宗旨:通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的一次封装,到处运行的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。

2)Docker与虚拟机的区别

作为一种轻量级的虚拟化方案,Docker与传统虚拟机相比有显著的优势。

特性 Docker容器 传统虚拟机
启动速度 秒级 分钟级
计算能力损耗 几乎无 损耗50%左右
性能 接近原生 弱于
系统支持量(单机) 上千个 几十个
隔离性 资源限制 完全隔离

Docker之所以拥有众多优势,与操作系统虚拟化自身的特点是分不开的。传统虚拟机需要有额外的虚拟机管理程序和虚拟操作系统层,而Docker容器是直接在操作系统层面之上实现的虚拟化。

如图:

20200302165618

3)Docker的使用场景

现在需要能方便地创建运行在云平台上的应用,必须要脱离底层的硬件,同时还需要任何时间、地点可获取这些资源,这正是Docker所能提供的。

Docker的容器技术可以在一条主句上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。通过这种容器打包应用程序,意味着简化了重新部署、调试这些琐碎的重复工作,极大地提高了工作效率。

比如:服务器从腾讯云迁移到阿里云,如果采用了Docker容器技术,迁移只需要在新的服务器上启动需要的容器即可。

二、Docker的核心概念

1)Image(镜像)

镜像是创建docker容器的基础,docker镜像类似于虚拟机镜像,可以将它理解为一个面向docker引擎的只读模块,包含文件系统。

Docker提供了简单的机制来创建和更新现有的进行,用户也可以从网上下载已经做好的应用进行来直接使用。

2)Container(容器)

容器是从镜像创建的应用运行实例,容器之间是相互隔离、互不可见的。可以把容器看做一个简易版的linux系统环境(包括root权限、进程空间、用户空间和网络空间等),以及运行在这个环境上的应用打包而成的应用盒子。

3)Repository(仓库)

Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用命令将它上传到公有仓库或私有仓库,这样一来当下次要在另外一条机器上使用这个镜像是,只需从仓库拉取下来即可!

仓库注册服务器是存放仓库的地方,其中包含了多个仓库,每个仓库集中存放某一类镜像,并且使用不同的标签来区分它们。目前最大的公有仓库Docker Hub,存放了数量庞大的镜像提供用户下载使用。

三、安装Docker

本次使用CentOS 7.5版本,安装的Docker为18.09版本!

1)安装指定的Docker版本

[root@docker ~]# systemctl stop firewalld && setenforce 0
#关闭防火墙与SELinux,如果不关闭,会阻碍docker的正常启动
[root@docker ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
#安装docker所需依赖
[root@docker ~]#  yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#获取阿里云的docker-ce的repo配置文件
[root@docker ~]# yum makecache             #建立yum元数据缓存
[root@docker ~]# yum repolist            #列出yum仓库的docker可用软件包
                ......................                             //省略部分内容
docker-ce-stable/x86_64                Docker CE Stable - x86_64                     65
#确认docker.....这一列有可用的包,我这里显示的是65个(但是,一定不可以为0)
[root@docker ~]# yum list docker-ce.x86_64 --showduplicates
#/查看docker可用版本,其中stable表示为稳定版
[root@docker ~]# yum install -y docker-ce-18.09.0-3.el7 docker-ce-cli-18.09.0-3.el7 containerd.io-1.2.0-3.el7
#需安装docker-ce、docker-ce-cli、containerd.io这三个工具
#其中docker-ce、docker-ce-cli需指定版本
[root@docker ~]# systemctl daemon-reload
[root@docker ~]# systemctl start docker
#启动docker
[root@docker ~]# docker -v         #查看docker-ce-cli的版本
Docker version 18.09.0, build 4d60db4
[root@docker ~]# docker version     #查看docker的详细信息
Client:
 Version:           18.09.0
 API version:       1.39
 Go version:        go1.10.4
 Git commit:        4d60db4
 Built:             Wed Nov  7 00:48:22 2018
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.0
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.4
  Git commit:       4d60db4
  Built:            Wed Nov  7 00:19:08 2018
  OS/Arch:          linux/amd64
  Experimental:     false

如果是最小化安装的docker,则需执行以下命令,便于支持Docker命令自动补全!

[root@docker ~]# yum -y install bash-completion        //支持docker命令自动补全,以下命令可以不输入
[root@docker~]# curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
//下载支持docker命令自动补全的脚本文件
[root@docker ~]# source /etc/bash_completion.d/docker-compose
//执行脚本之后,切换bash即可生效

2)docker镜像下载加速

采用阿里云的镜像加速器!

[root@docker ~]#  tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://5zntnq0h.mirror.aliyuncs.com"]
}
EOF
[root@docker ~]# systemctl daemon-reload && systemctl restart docker
#更改完成后,需重启docker
[root@docker ~]# cat /etc/docker/daemon.json 
#这个就是和加速相关的文件,json文件的是以键值对的格式存储的
{
  "registry-mirrors": ["https://5zntnq0h.mirror.aliyuncs.com"]
}

———————— 本文至此结束,感谢阅读 ————————