文章索引
Docker从入门到DevOps系列目录
- Docker从入门到DevOps| 第一篇:DevOps工程的基石 —— Docker
- Docker从入门到DevOps| 第二篇:Docker常用命令 —— 镜像与容器操作
- Docker从入门到DevOps| 第三篇:Docker镜像封装以及提交镜像至阿里云镜像库
- Docker从入门到DevOps| 第四篇:用Docker部署一个基于SpringBoot + vue 前后端分离的应用
- Docker从入门到DevOps| 第五篇:一键部署你的应用 —— docker-compose初体验
- Docker从入门到DevOps| 第六篇:初探DevOps思想,DevOps利器walle介绍
- Docker从入门到DevOps| 第七篇:Docker + walle + SpringBoot + Git实现项目的DevOps(一)
- Docker从入门到DevOps| 第八篇:Docker + walle + SpringBoot + Git实现项目的DevOps(二)
- Docker从入门到DevOps| 第九篇:Docker + walle + SpringBoot + Git实现项目的DevOps(三)
- Docker从入门到DevOps| 第十篇:初探Docker、Kubernetes与微服务思想
前言
- 本系列适合想了解Docker和DevOps的同学,学完你将可以熟练使用Docker,熟练使用DevOps思想部署你的项目。
- 本系列的每一行代码都是确保可用的,请放心使用。
- 本系列所有用到的软件将免费提供下载。
- 学习本系列,最快的方法是先动手将软件安装好,并简单使用一下,然后再回头来看这篇文章,效果更佳。
什么是Docker?
在讲解Docker
具体的概念前,我们先来单刀直入的定义下Docker:
- Docker是一个软件,英文单词意为集装箱,是一种成熟的轻量级类虚拟机技术。
- 每一个
Docker容器
可以看做一个单独分配有cpu、内存、硬盘
等设备的小虚拟机。 - 要初步入门Docker,你需要了解它的几个术语:
镜像库
,镜像
,容器
。
有使用过VMware
的同学一定会对「虚拟机」,「镜像」等词非常熟悉,如果你装过windows系统,你也一定见过windows的iso镜像。如果你都听说过,那么恭喜你已经差不多入门了,Docker在这方面跟VMware是类似的,他们都是一款基于指定格式镜像的虚拟机软件。
其实刚入门的朋友可以把Docker看做一款轻量的虚拟机技术,但实际上Docker并不是虚拟机,想深入了解Docker与VMware的区别,可以看另一篇文章Docker和VMware有什么区别?,这个话题就点到即止。
如果你没有使用过VMware也没关系,请看下图:
可以看到,一台搭载Linux系统(比如CentOS系统)并拥有一定配置的服务器,通过Docker引擎在系统中启动了多个Docker容器,每个容器都被自动分配了一定的配置,它们都可以看做一个独立的CentOS系统,这就是Docker —— 一款轻量级的类虚拟机软件。
相信你已经对Docker软件有了大概的了解,下面就来说下Docker软件的一些术语:
- 镜像(Image):类似于windows系统镜像。是封装好的Linux系统镜像。
- 容器(Container):基于镜像启动的容器,类似linux系统环境,作用是运行和隔离应用。如果你学习过Java或者面向对象编程,那镜像可以比作一个类,而容器就是该类的一个具体对象。
- 镜像仓库(Repository):类似Git代码仓库,Docker也有属于自己的镜像库,用来在线存储所有用户上传的镜像。用户可以方便的搜索想要的镜像,并通过Docker命令下载到本地。
目前Docker官方的镜像仓库网址是:https://hub.docker.com,但是需要梯子,不然很慢很慢,下一章我们会解决这个问题。
为什么要用Docker?
跟上一节一样,我们也先简单说一下为什么要用Docker:
- 如果你部署了很多应用在CentOS系统中,Docker能帮你把它做成镜像,让你在任何其他服务器复制该CentOS系统状态,实现集群环境下的系统低成本快速迁移。
- 镜像是Docker的灵魂,在国内外都有大量的镜像库供你使用,无论你要安装什么样的服务器(比如Nginx,Redis,数据库,消息队列等常用组件的服务器),已经有人替你安装好了并打包成镜像了,你无需再次重复复杂的安装过程,只需到镜像库找相关镜像即可。
- 给业界提供了新一代的虚拟化技术,Docker与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。
如果上面几点还不足以让你感受到使用Docker带来的好处,那我们可能还得从行业的痛点开始讲起。
- 开发和运维之间因为环境不同而导致的矛盾,“我本地环境没有这个问题”。
- 软件更新发布及部署低效,过程繁琐且需要人工介入,可能还会产生大量文档。
- 环境一致性难以保证,不同环境之间迁移成本太高。
而有了Docker则可以很大程度上解决上述问题,因为Docker的核心是构建镜像,甚至可以做到Build Once, Run Anywhere(一次构建,多处运行),事实上目前流行的DevOps方案,绝大部分都是基于Docker,可以说Docker是现代DevOps工程部署方案的基石。
Docker快速安装及使用
为了节省您宝贵的时间,请用主流的CentOS系统安装Docker。Docker目前仅支持CentOS 7以上的64位版本,使用命令
uname -r
查看你CentOS的内核版本,Docker 要求 CentOS 系统的内核版本高于 3.10。
如果您没有符合上述要求的CentOS环境,请点击下载VMWare虚拟机以及CentOS7镜像,并按文章指引安装。
如果您的系统就绪,可以按照下面6个步骤安装以及运行Docker。
- 卸载旧版本
如果没有安装过Docker,可以略过这一步。如果已安装过Docker,请卸载它们以及相关的依赖项。复制以下命令并执行即可。
sudo yum remove docker docker-common docker-selinux docker-engine
安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
设置yum源,使用以下命令来设置稳定的仓库。
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
用yum安装docker。
sudo yum install -y docker-ce docker-ce-cli containerd.io
Docker 安装完默认未启动,通过以下命令启动Docker。
sudo systemctl start docker
通过运行 hello-world 镜像来验证是否正确安装了 Docker。
sudo docker run hello-world
如图所示,出现Hello from Docker!
则表示Docker安装成功。
下面简单介绍一下docker run hello-world
命令:
hello-world
代表一个镜像。docker run [imageName]
表示用Docker引擎来对目标镜像启动一个容器。如果你本地没有该镜像,Docker会帮你从官方镜像库下载到本地。
查看用
hello-world
镜像生成的容器,用该命令可以查看所有在Docker引擎运行的容器:docker ps -a
如图所示,CONTAINER ID
表示用指定镜像生成的容器在Docker引擎里的唯一容器ID。IMAGE
表示该容器基于哪个镜像。
查看已经下载到本地的镜像。使用命令:
docker images
如图所示,REPOSITORY
字段表示镜像名,IMAGE ID
表示镜像在Docker引擎里面的唯一镜像ID。在第7步的容器信息IMAGE
字段跟镜像信息的REPOSITORY
字段是对应的关系。
看完相信你已经对Docker有了一定的了解,下一章将会具体讲解Docker的常用命令。
版权声明
本文采用 CC BY 3.0 CN协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
感恩有你
我会不定期发布系列技术文章,如果您觉得我的文章有帮助,可以关注下我哦。