Skip to content

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

image

Docker 和虚拟机的区别

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

image

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

MIT Licensed