1. 了解Docker
1.1 什么是Docker?
1)为什么要出现了docker服务器?
环境和配置会导致部署的项目出现不同的效果(或者错误),不同的版本环境的兼容,对运维人员的考验。
解决办法就是:将代码、环境、配置、数据等整个打包发送给运维人员,再部署就可以运行。
也就是说运维工程师的工作就变成了:安装一个个【原始环境、代码、配置、数据等】的一个个包的部署。
2)docker的理念:
一次构建处处运行。
3)docker是基于Go语言实现的云开源项目。构建一次、在任何地方可以运行。配置一次,运行在任何地方
解决了运行环境的和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。
1.2 如何使用docker工作
1)客户端通过docker命令行工具提交docker指令。
2)docker后台服务端接收到指令,调用本机上的docker镜像,创建我们要使用docker容器。
3)如果docker后台服务端接收到指令,客户端没有相关的镜像,可以从docker仓库中拉取相关镜像。
2. 虚拟机与容器
1)虚拟机:通过底层硬件的虚拟化,操作系统支持的虚拟化技术,独立的运行多个guest os,这就是操作系统,再在器上跑文件系统和应用,这样就比较安全。但是Guest os对cpu、内存都有独立的开销。
2)容器:共享的是linux内核,通过内核的cgropu和namespace来做资源的隔离和限制。每个容器的表现其实是一个个特殊的线程,所以他的隔离型没有传统虚拟机的Guest os彻底。
3)对比:
虚拟机 | docker容器 | |
---|---|---|
操作系统 | 宿主机上运行虚拟机os | 共享宿主机os |
存储 | 镜像比较大(GB) | 镜像小(MB) |
性能 | 操作系统额外的cpr、内存消耗 | 几乎无性能损耗 |
一致性 | 笨重、与虚拟化技术耦合度高 | 轻量、灵活迁移 |
隔离型 | 完全隔离 | 只能做到安全隔离 |
部署 | 慢、分钟级 | 快速、秒级 |
运行密度 | 一般最多运行几十个 | 单机支持上千容器 |
3. 运行一个容器
1)下载安装包:可以官方下载(比较慢)、也可以使用阿里云下载:
[root@client2 docker]# ls
containerd.io-1.2.5-3.1.el7.x86_64.rpm docker-ce-18.09.6-3.el7.x86_64.rpm
container-selinux-2.21-1.el7.noarch.rpm docker