phymooc / learn-docker

0 stars 0 forks source link

Docker 概述 #1

Open phymo opened 3 years ago

phymo commented 3 years ago

Docker 为什么出现

开发 -> 运维 :

我在我的电脑上可以运行

开发即运维!

环境配置:每一个机器都要部署环境 (redis 集群, ES, Haddop。。。) 很多项目不能跨平台 -> 发布项目 带上环境打包

Docker 解决方案

java -> jar(env) -> build with env (image) --> Docker repository --> 下载使用image

隔离: Docker 核心思想 --> 不用担心多项目时,环境 端口等冲突

Docker 历史

2010: dotCloud 公司 -> paas 云计算服务 LXC有关容器技术 -> Docker -> 2013:开源 -> 2014 Docker 1.0 特点:

  1. 容器相对于VM,轻巧, Docker 镜像仅需要最核心的环境 不需要完整的电脑
  2. 不需要VM开机, 秒级启动
phymo commented 3 years ago

Docker 基于Go, 开源

phymo commented 3 years ago

Docker 基本概念

Client

docker build
docker pull
docker run

Docker Host

  1. Docker deamon 守护进程
  2. Docker image 相当于模板,来创建容器服务,可以创建多个容器,服务或项目运行在容器里面
  3. Docker Container 独立运行一个或一组应用, 启动,停止,删除,

    Registry

  4. Docker Repository 存放 image
    • 公有仓库: Docker Hub(默认在国外,需要配置镜像加速),
    • 私有仓库:
phymo commented 3 years ago

安装docker

环境准备

  1. CentOS 7以上 2.Xshell 链接远程服务器
$uname -r 查看环境
$cat /etc/os....

参考 帮助文档:

  1. 卸载旧版本
  2. 需要的安装包 yum
  3. 设置镜像仓库 (默认是国外, 可以替换为阿里云镜像地址)
  4. 更新 yum 软件包索引: yum makecache fast
  5. 安装Docker: (docker-ce 社区版, docker-ee企业版)
  6. 启动docker : systemctl start docker , 查看是否成功docker version
  7. hello world : docker run hello-world : 先查找本地, 没有, 远程拉取, 运行
  8. 查看 下载的hello-world 镜像: docker images
  9. 卸载: 卸载依赖,删除目录 /var/lib/docker( 默认工作路径)
phymo commented 3 years ago

阿里云镜像加速 容器服务,镜像加速器

phymo commented 3 years ago

Docker Run

docker run

开始运行 => Docker 在本机寻找镜像 => 如果有直接运行,否则 => 去docker hub 查找 ,如果没有报错, 如果有 就下载 => 运行

底层原理

docker 的运行

Client-Server 结构系统,Docker守护进程运行在主机上,通过Socket 从客户端访问; Docker Server 接收到Docker Client 命令, 执行命令 image

docker vs VM
  1. 比虚拟机更少的抽象层
  2. docker 利用宿主机的内核, vm 需要 guest os, 所以docker 不需要像vm一样重新加载一个os内核
phymo commented 3 years ago

image

phymo commented 3 years ago

image

phymo commented 3 years ago

image Docker 架构

runc 是一个 Linux 命令行工具,用于根据 OCI容器运行时规范 创建和运行容器。 containerd 是一个守护程序,它管理容器生命周期,提供了在一个节点上执行容器和管理镜像的最小功能集。

phymo commented 3 years ago

image image

phymo commented 3 years ago

Docker 包括三个基本概念 镜像(Image) 容器(Container) 仓库(Repository)

phymo commented 3 years ago

大家虽然都共用一个内核和某些运行时环境(例如一些系统命令和系统库),但是彼此却看不到,都以为系统中只有自己的存在。这种机制就是容器(Container),利用命名空间来做权限的隔离控制,利用 cgroups 来做资源分配。