Docker 介绍,Linux简单安装

在这里插入图片描述

什么是 Docker?
  • 一个简单的应用程序打包工具
  • 使用最广泛的开源容器
  • 一种操作系统级的虚拟化技术
  • 依赖于Linux内核特性:Namespace 和 Cgroups
  1. Docker 是应用最广泛的开源容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中

  2. 然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。

  3. 每个容器拥有一套和宿主机完全隔离的文件系统(共用linux内核),程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。

容器:
  1. 容器是一个操作系统级别下的虚拟化技术,运行一个容器就行运行一个进程一样

  2. 容器依赖linux内核特性:Namespace(资源隔离)和Cgroups(资源限制)

Docker的设计目标
  • 提供了简单的应用程序打包
  • 开发人员和运维人员职责逻辑分离
  • 多环境保持一致性

Docker的思想
  1. Docker的思想源于集装箱,集装箱解决了什么问题呢?
  2. 在早期运输货物需要不同分类的船,例如运输水果的船,运输生活用品的船
  3. 有了集装箱后,在大船上,可以把货物分类到不同的集装箱中,水果一个集装箱,生活用品一个集装箱
  4. 它们之间互不影响,只要把货物封装好集装箱里,就可以把不同类的货物一起运走。
  5. 通过Docker logo也可以看出所以然来,Docker就像大船,集装箱就是容器。
  6. 一条鲸鱼拖着若干个集装箱的经典形象已经深入人心。

Docker的基本组成

在这里插入图片描述

DockerClient 客户端
Docker Daemon 守护进程
Docker Images 镜像
Docker Container 容器
Docker Registry 镜像仓库

虚拟机 和 容器

在这里插入图片描述

VM
Infrastructure 代表他 可以是 台式 笔记本 服务器 云主机
Hypervisor 运行在物理设备上 和 操作糸统之间的 中间软件管理层 ,也叫 宿主机
Guest OS 虚拟出的系统
Bins/Libx 二进制文件 / 库
App 部署的应用
Container
Infrastructure 代表他 可以是 台式 笔记本 服务器 云主机
Host OS 主机OS,这台机器的操作系统
Docker 系统级别的虚拟化技术,所以要基于已有的操作系统之上
Bins/Libx 二进制文件 / 库
App 部署的应用

在这里插入图片描述
在这里插入图片描述

由上图可看 容器呢 只包含了 二进制文件 和 库、应用程序,而虚拟机是 Guest OS 承载的 二进制文件 和 库、应用程序


对比

Container VM
启动速度 秒级 分钟级
运动性能 接近原生 5%左右损失
磁盘占用 MB GB
数量 成百上千 一般几十台
隔离性 进程级别 系统级(更彻底)
操作系统 只支持Linux 几乎所有
封装程度 只打包项目代码和依赖关系,共享宿主机内核 完整的操作系统
解答:
  1. docker设计小巧,部署迁移快速,运行高效,按照应用隔离,管理人员可以看到所有容器的内容。

  2. 虚拟化技术比较臃肿,需要先创建新的系统,按照系统隔离,管理员无法看到系统内部信息。

举例:
  • Docker就是手机中的各种APP,只需要一个系统就可以下载自己所需的应用
  • 虚拟化技术相当于苹果手机安装一个庞大软件,这个软件上安装安卓系统、魅族系统等,每个系统上还要安装各类应用。


Docker 的应用场景
  • 应用程序打包和发布
  • 应用程序隔离
  • 持续集成
  • 部署微服务
  • 快速搭建测试环境
  • 提供Paas产品(平台即服务)
详解:
  • 节省项目环境部署时间

    • 单项目打包
    1. 每次部署项目到测试、生产等环境,都要部署一大堆依赖的软件、工具,时间久,出错概率大。
    2. Docker主要理念就是环境打包部署,可在任意Docker Engine运行。
    3. 我们只需要将每个项目环境打包到镜像,push到镜像仓库,当有需要部署这个项目时,直接pull镜像启动容器,这个项目就可以访问了!一次构建多次部署,一劳永逸。
    • 整套项目打包
    1. 比如有一个产品可以整套部署到客户那里,以往都是派一名实施工程师到客户那部署。
    2. 如果用了Docker,我们可以前期将这套项目封装打包起来,实现一键部署,分分钟钟搞定,就不需要再派人过去了。比如官方的Docker Compose编排工具。
    • 新开源技术试用
    1. 有时,我们想调研一些开源项目,我们可以直接从公共镜像仓库pull项目官方做好镜像启动容器即可。
  • 环境一致性

  1. 项目在开发电脑本地运行没问题,到了测试或生产环境就运行不起来。

  2. Docker将项目环境打包成镜像,可以在任何Docker Engine部署。

  • 持续集成
  1. 一个项目版本快速迭代的测试场景,需要一个合理的CI(持续集成)/CD(持续部署)环境支撑。

  2. CI/CD是一个周期性自动化项目测试流程,包括构建、部署、测试、发布等工作,很少需要人工干预。

  3. Docker通过项目镜像构建和快速部署,打通测试环境与生产环境,高度保持多个环境之间一致性。

  • 微服务
  1. 微服务指尽可能细粒度拆分业务程序架构,由多个独立服务组成业务系统。

  2. Docker容器作为这些独立服务的部署单元,每个服务单独部署到一个docker容器中。


Linux 上安装 Docker
docker版本

docker V1.13 版本的时候区分的 以下两个版本,大约是在17年初,我们用的是 最新版 V18.03

  1. 社区版(Community Edition, CE)

  2. 企业版(Enterprise Edition, EE)

docker安装参考官方文档

  1. docker官方文档:https://docs.docker.com/

  2. centos安装docker:https://docs.docker.com/install/linux/docker-ce/centos/
    注:docker CE只支持 centos7 不支持centos6

在这里插入图片描述

# 1.安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2

# 2.添加Docker软件包源(否则doker安装的不是新版本)
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

# 3.安装Docker CE
yum install -y docker-ce

# 4.启动Docker服务并设置开机启动
systemctl start docker
systemctl enable docker

# 5.测试docker是否安装成功(hello-world是官方提供的一个测试镜像)
docker run hello-world

# 6.查看docker基本信息
docker info
docker version
docker简单使用 创建Nginx容器
# 1、创建一个nginx容器
docker run -it nginx
 
# 2、查看docker运行的容器(可以获取到这个容器的id)
docker ps

# 3、访问这个容器
# 进入这个nginx容器(进入的文件系统和宿主机是完全隔离的,有自己独立的文件系统)
docker exec -it 73877e65c07d bash

# 4、查看当前容器的 IP
docker inspect 73877e65c07d   # 73877e65c07d是通过docekr ps查看到的容器ID
curl 172.17.0.2               # 测试这个nginx容器是否可以访问

发布了91 篇原创文章 · 获赞 174 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/weixin_44685869/article/details/104591577