Docker简介

docker
docker run --name nginx-test -p 8080:80 -d nginx
1
docker run --rm -d -p 40001:3000 jayfong/yapi:play
# 默认的管理员账号:admin@docker.yapi,管理员密码:adm1n
1
2

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 容器

image

# Docker 和虚拟机的区别

  • 虚拟机是硬件级虚拟化,每一个虚拟机内部都要分割系统资源,需要虚拟出虚拟硬件
  • Docker 是系统级虚拟化,容器共享系统资源,不会虚拟出硬件

image

Container VM
启动速度 秒级 分钟级
运行性能 接近原生 5%左右损失
磁盘占用 MB GB
数量 成百上千 一般几十台
隔离性 进程级别 系统级(更彻底)
操作系统 只支持Linux 几乎所有
封装程度 只打包项目代码和依赖关系,共享宿主机内核 完整的操作系统
更新时间: 2022-01-26 22:04