最近在项目需要依赖于Docker,但是博主之前没有接触出过这个,所以小白方式来给大家分享,如果有哪些不足的地方可以在留言区提出来。看完本篇文章可以掌握以下内容:
- 了解Docker为什么会出现
- 了解Docker历史
- 了解Docer能干嘛
- 完成Docer安装
文章目录
一、Docker为什么会出现
一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协助我们需要关心的问题很多,这也是很多互联网公司不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验。
环境配置如此麻烦,换一台机器,就要重新来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样的复制过来。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。
开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。
之前在服务器配置一个应用的运行环境,要安装各种软件,就拿某电商项目为例,Java/Tomcat/Mysql/JDBC驱动包等,安装和配置这些东西有多麻烦就不必多说了,
它还不能跨平台。假设我们是在Windows上安装的这些环境,到了Linux又得重新安装。况且就算不跨操作系统,换另一台同样操作系统的服务器,要移植应用也是非常的麻烦的。
Docker镜像的设计,使得Docker得以打破过去【程序即应用】的观念。 透过镜像(images)将作业系统核心除外,运作应用程式所需要的系统环境,由下而上打包,达到应用程式跨平台间的无缝接轨运作。
二、Docker历史
Docker 公司位于旧金山,由法裔美籍开发者和企业家 Solumon Hykes 创立
,其标志如下图所示。
有意思的是,Docker 公司起初是一家名为 dotCloud
的平台即服务(Platform-as-a-Service, PaaS)提供商。
底层技术上,dotCloud 平台利用了 Linux 容器技术。为了方便创建和管理这些容器,dotCloud 开发了一套内部工具,之被命名为“Docker”。Docker就是这样诞生的!
2013年,dotCloud 的 PaaS 业务并不景气,公司需要寻求新的突破。于是他们聘请了 Ben Golub 作为新的 CEO,将公司重命名为“Docker”,放弃dotCloud PaaS 平台怀揣着“将 Docker 和容器技术推向全世界”的使命,开启了一段新的征程
。
如今 Docker 公司被普遍认为是一家创新型科技公司,据说其市场价值约为 10 亿美元。Docker 公司已经通过多轮融资,吸纳了来自硅谷的几家风投公司的累计超过 2.4 亿美元的投资。
几乎所有的融资都发生在公司更名为“Docker”之后。
虚拟机与镜像的区别
虚拟机:
- 像一台电脑
- 隔离、需要开启多个虚拟机
- 非常大
- 开机需要几分钟
镜像:
- 十分小巧
- 启动运行镜像就可以
- 小巧
- 启动只需要几秒钟
三、Docker 能干嘛
之前的虚拟技术
虚拟机技术缺点:
- 资源占用十分多
- 冗余步骤多
- 启动很慢!
容器化技术
比较Docker和虚拟机技术不同:
- 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装运行软件
- 容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了。
- 每个容器键是互相隔离,每个容器内都有一个属于自己的文件系统,互补影响。
应用更快的交付部署
传统:一个帮助文档,安装程序。
Docker:打包镜像发布测试一键运行。
更便捷的升级和扩容
使用了Docker字后,我们部署应用就和搭积木一样
项目打包为一个镜像,扩展服务器A!服务器B
更简单的系统运维
在容器化后,我们的开发,测试化劲都是高度一致
更高效的计算利用
Docker 是内核级别的虚拟化,可以在一个物理机上可以运行很多的容器!服务器的性能可以被压榨到极致。
四、Docker安装
4.1 Docker基本组成部分
镜像(image):
docker镜像就好比一个模板,可以通过这模板来创建服务,tomcat镜像 ==> run ==>tomcat01容器(提供服务)通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。
容器(container):
Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建的
启动,停止,删除等基本命令。
目前就可以吧这个容器理解为就是一个简易的Linux系统。
仓库(repository):
仓库就是存放镜像的地方!
仓库分为公有仓库和私有仓库!
4.2 环境准备
最新的Docker 需要具备Linux Contos7以上的版本
如果小伙伴没有安装的请看https://blog.csdn.net/hongchenshijie/article/details/102946732 进行安装下载,在进行后续的操作。
官方链接安装文档
4.3 开始安装
- 卸载旧的docker所依赖东西
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 安装需要安装包
yum install -y yum-utils
- 安装镜像仓库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo #默认是国外的不推荐使用
#推荐使用阿里云的镜像仓库地址
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 更新yum的软件包最新的索引
yum makecache fast
- 安装docker相关的 docker-ce社区 (常用) ee 企业
yum install docker-ce docker-ce-cli containerd.io
- 启动Docker
systemctl start docker
# 查看是否启动成功 出现以下结构说明启动成功
[root@192 ~]# docker version
Client: Docker Engine - Community
Version: 19.03.13
API version: 1.40
Go version: go1.13.15
Git commit: 4484c46d9d
Built: Wed Sep 16 17:03:45 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.13
API version: 1.40 (minimum version 1.12)
Go version: go1.13.15
Git commit: 4484c46d9d
Built: Wed Sep 16 17:02:21 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.3.7
GitCommit: 8fba4e9a7d01810a393d5d25a3621dc101981175
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
- 测试docker hello-world
docker run hello-world
8. 查看刚刚下载hello-word镜像
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 10 months ago 13.3kB
9.删除Docker
#删除依赖
yum remove docker-ce docker-ce-cli containerd.io
#删除资源 /var/lib/docker docker默认的工作目录
rm -rf /var/lib/docker
4.3 使用阿里云的镜像加速器
登录到阿里云 选择镜像服务
执行以下内容
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://t4bt9dhe.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
五、Docker运行流程
六、底层原理
6.1 Docker是怎么工作的?
- Docker 是一个Client -Server结构的系统,Docker的守护进程运行在主机上通过Socket
从客户端访问! - DockerServer接收到 Docker-Clinet,就会执行这个命令!
6.2 Docker为什么比Vm快?
- Docker 有着比虚拟机跟小的抽象层
- Docker利用的是宿主机的内核,Vm需要时Guest OS。
所以说,新建一个容器的时候,Docker不需要像虚拟机一样重行加载操作系统,避免引导。虚拟机是加载Cuest OS,分钟级别的,而Docker是利用宿主机的操作系统,省略了这个复杂的过程,秒级。
7.总结
到这里本篇文章基本上就结束了,总结一下本篇文章我们都学到了啥,了解了Docker,以及后面Docker能干啥,成功安装Doker,深度了解下Docker是怎样运行的,下期我们学习Docker的常用命令。我们下期见~~