Appearance
Docker简介
bash
docker run --name nginx-test -p 8080:80 -d nginx
bash
docker run --rm -d -p 40001:3000 jayfong/yapi:play
# 默认的管理员账号:admin@docker.yapi,管理员密码:adm1n
centOS是为Docker做准备的。上面的命令是用一句话我们开启一个nginx,和Yapi,一个命令开启一个gitlab,如果没有docker手动配置gitlab,很麻烦还可能配置不成功。docker环境下有linux系统,镜像里面已经帮我们安装好了gitlab,Yapi。甚至还可以自己弄一个镜像,把常用的开发中的工具打包到一个镜像里面,然后一句话就可以开启这个镜像。
之前安装一个系统要一步一步去安装,很麻烦。有了docker之后就相当于有了ghost,把系统快速的恢复过来。
什么是 Docker
- Docker 是一个集打包、运行、测试、发布于一体的开放式平台
- 我们可以把开发过程中的基础设施(指的是用到的软件)分离出来部署到 Docker
- DevOps:开发、构建、自动化部署、测试、文档
- GitLib、Jenkins
- Nginx、Apache
- MySQL、MongoDb
- 文档管理工具
- 使用 Docker 可以避免复杂的应用环境配置,并以秒级的速度开启
- 支持绝大多数平台,容器的性能开销极低,相对于虚拟机(虚拟机还要虚拟cpu、内存、显卡等硬件,开销很大)。
Docker 应用场景
- Web 应用的自动化打包和发布
- 自动化测试和持续集成、发布
- 在服务型环境中部署和调整数据库或其他的后台应用
- github Actions就是开启了Docker的一个容器处理
Docker 核心概念
- Docker是一个软件,是CS(客户端服务器)模式的。
- Docker Daemon 守护进程
- Docker Daemon 是 Docker 的守护进程
- Docker Client 通过命令行与 Docker Daemon 通信完成 Docker 相关操作
- Docker Client 客户端
- 通过终端和用户交互
- 终端中输入指令,Docker 客户端把指令传递给 Docker Daemon
- Docker Image 镜像
- 可以认为是一个最小版本的 Linux 系统的镜像,包含了所需的文件系统和一些配置好的应用
- 需要通过容器来加载镜像
- 是静态的,可以和面向对象中类对比
- Docker Container 容器
- 是运行起来的镜像
- 通过镜像创建一个容器
- 可以创建多个容器,每一个容器都会开启一个进程,多个容器之间是相互隔离的"
- 是动态的,可以和面向对象的实例对比
Docker 体系结构
- Docker 使用客户端-服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器
Docker 和虚拟机的区别
- 虚拟机是硬件级虚拟化,每一个虚拟机内部都要分割系统资源,需要虚拟出虚拟硬件
- Docker 是系统级虚拟化,容器共享系统资源,不会虚拟出硬件
- 官网的说明
- 容器技术和虚拟机区别
Container | VM | |
---|---|---|
启动速度 | 秒级 | 分钟级 |
运行性能 | 接近原生 | 5%左右损失 |
磁盘占用 | MB | GB |
数量 | 成百上千 | 一般几十台 |
隔离性 | 进程级别 | 系统级(更彻底) |
操作系统 | 只支持Linux | 几乎所有 |
封装程度 | 只打包项目代码和依赖关系,共享宿主机内核 | 完整的操作系统 |