【从零开始学Docker】安装篇

  • 一丶Docker浅谈
    • 1.1Docker为什么出现
    • 1.2Docker能干吗
  • 二、Docker的安装
    • 2.1 Docker的组成
    • 2.2 安装前提
    • 2.3 安装步骤
      • 第一步
      • 第二步
      • 第三步
      • 第四步
      • 第五步
  • 三、镜像加速
  • 四、run的工作原理
  • 五、Dokcer怎么工作的
  • 六、Docker为什么比VM快
    • Docker有更少的抽象层
    • Docker不需要Guest OS
  • 七、写在最后

一丶Docker浅谈

1.1Docker为什么出现

我们知道,传统的项目开发和运维是两套环境,而且要一一配置环境并且有的时候更新还会导致服务不可用,这就很麻烦了,那么有没有一种很方便不用这么麻烦的技术可以一键安装呢?有!那就是我们的Docker。

1.2Docker能干吗

现在,用Docker可以打包应用以及环境到一个可移植的镜像中,然后发布到Linux或Windows操作系统的机器上,也可以实现虚拟化,十分的方便,用docker隔离,打包装箱,为了让不同东西放在同一个环境,通过隔离机制,把服务器利用到极致。(容器与容器之间互不影响,就和集装箱一样,每个都是单独的个体)
我们来对比一下优缺点

VM:资源占用多,冗余步骤多,启动慢(虚拟出硬件,完整的操作系统,在系统上运行)
容器化技术:不是模拟完整的系统,每个都是隔离起来的,一个崩了不影响其他的,直接运行在宿主机内容,没有自己的内核,不虚拟硬件,轻便。

并且,Docker能让系统运维更简单,测试环境高度一致,也不会出现操作系统不同不能用,有着高效资源利用,内核级别虚拟化,不需要管理程序,可以在一个机器上运行很多容器实例,压榨服务器性能到极致。

二、Docker的安装

2.1 Docker的组成

Docker分为三个部分组成:
1.镜像 image
2.容器 container
3.仓库 repository

镜像:镜像就像一个模板,可以通过这个模板创建容器服务,比如有个tomcat镜像,我们要运行起来然后它就会变成一个容器(提供服务) 通过镜像可以创建多个容器,服务或者项目运行在容器中。

容器:Docker利用容器技术做到独立运行一个或者一组应用,通过镜像创建,有启动 停止,删除这种基础操作,可以把容器看成简易的linux。

仓库:存放镜像的地方,有公有和私有,共有所有人都可以访问,Docker Hub,阿里云等都有容器服务。

2.2 安装前提

Docker 运行在 CentOS 7上,系统要是64位,内核版本为 3.10 以上。

Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,系统要是64位,内核版本为 2.6.32-431 或者以上。

uname -r 查看自己的内核

2.3 安装步骤

官方文档安装点这里

第一步

确定自己的内核以及系统没问题之后,进行一下卸载旧版本,如果报告未安装这些包,则没有问题。

yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

第二步

安装软件包并且配置镜像仓库

安装软件包的命令 yum install -y yum-utils

yum-util 提供yum-config-manager功能

镜像仓库配置 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

这是阿里仓库,对比官方的镜像仓库会更快(因为官方在国外)。

第三步

检查更新yum索引并且安装Docker CE

检查索引 yum makecache fast

Docker-CE即社区版(由社区维护和提供技术支持,为免费版本,适合个人开发人员和小团队使用),EE 即企业版(为收费版本,由售后团队和技术团队提供技术支持,专为企业开发和IT团队而设计。 相比Docker-EE,增加一些额外功能,更重要的是提供了更安全的保障)

yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

或者你想安装特定版本 可以用这个指令

yum list docker-ce --showduplicates | sort -r 查看docker版本yum -y install docker-ce-18.03.1.ce 安装18.03.1.ce版本

如果你用的宝塔界面,那么可以直接去宝塔官网 软件商店下载Docker(比较方便)

如果你是腾讯云服务器,那么可以在服务器界面,点击更多

点击重装系统,选择docker镜像也可以直接安装,很方便

第四步

启动docker并且测试版本

如果你安装完成了,那么来尝试一下启动docker吧!

systemctl start docker

如果没有报错,那说明你启动成功了,然后我们设置一下开机自启动。

systemctl enable docker

随后我们检查一下docker的版本

docker version


没有问题!

docker都启动了,那能不玩一下?我们从最开始的helloworld开始!

docker run hello-world 这就是启动镜像的命令

如果你的界面出现了这个,那么说明你的docker没有问题!

此时我们查看一下docker的镜像

docker images


我们会发现刚才的hello-world就在里面!

第五步

最后就是我们的停止docker和卸载docker了

systemctl stop docker

这是停止的指令

yum remove docker-ce docker-ce-cli containerd.iorm -rf /var/lib/docker

卸载首先卸载docker,然后删除docker的目录。

三、镜像加速

这个东西的话可以在阿里云设置。
登录阿里云,进入控制台,点击弹性计算,容器服务,容器镜像服务,在镜像工具里面有一个镜像加速器,选择对应版本的操作文档跟着来就好了。(腾讯云个人版本好像没有加速)

四、run的工作原理

五、Dokcer怎么工作的

docker是一个client-server结构的系统,docker的守护进程一直在后台运行在主机上(好比装了个mysql,一直在后台运行),通过Socket从客户端访问。Dockerserver(服务进程)接收到dockerclient的指令,就会执行这个命令。

客户端连接到守护进程之后它会启动一些容器,都在服务之内,通过这个守护进程造作容器资源(容器里面就好比有个小的linux虚拟机 可以跑 占用资源进程很少,互相隔离,如果想从外部访问要进行一个连通)

六、Docker为什么比VM快

Docker有更少的抽象层

vm要虚拟出硬件才行,而docker没有这一层,直接在主机安装服务,运行在服务里的 每个隔离的都是容器 由于docker不需要Hypervisor实现硬件资源虚拟化 运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。

Docker不需要Guest OS

docker利用的宿主机的内核,vm是需要GuestOS。 docker不用重新加载一个操作系统内核,避免引导,虚拟机需要加载GuestOS,时间是分钟级别。docker是利用宿主机的操作系统,就不需要在虚拟出来了,省略了这个复杂的过程,时间是秒级。Docker底层用的是物理机的资源,虚拟机需要模拟物理机的操作系统,所以Docker加载得更快,而虚拟机更慢。

七、写在最后

创作不易,如果觉得内容对你有帮助,麻烦给个三连关注支持一下我!
目前正在更新的系列:从0开始的蓝桥杯省一之路,云原生系列。
感谢各位的观看,文章掺杂个人理解,如有错误请联系我指出~

【云原生 | 从零开始学Docker】一、Docker的安装,启动以及工作原理相关推荐

  1. 【云原生 | 从零开始学Docker】七丶实战提交自己的镜像以及docker网络

    该篇文章已经被专栏<从零开始学docker>收录 实战以及网络 实战测试 制作自己的tomcat 1.准备镜像文件(tomcat的压缩包,jdk的压缩包) 2.编写dockerfile文件 ...

  2. 【云原生 | 从零开始学Docker】二、Docker的常用指令学习以及使用

    该篇文章已经被专栏<从零开始学docker>收录 Docker常用命令使用 一.如何去学习命令 二.镜像常用命令 2.1查看本地所有镜像 2.2 搜索镜像 2.3下载镜像 2.4 删除镜像 ...

  3. 【云原生 | 从零开始学Docker】六、如何写出自己的镜像——Docker file

    该篇文章已经被专栏<从零开始学docker>收录 Docker file 数据卷容器 mysql数据共享 结论 Docker File Docker File的介绍 构建步骤 Docker ...

  4. 【云原生 | 从零开始学Kubernetes】十二、k8spod的生命周期与容器钩子

    该篇文章已经被专栏<从零开始学k8s>收录 上一篇文章:k8s污点.容忍度和pod状态 点击跳转 pod生命周期 Init 容器 主容器 容器钩子 创建 pod 需要经过哪些阶段? Pod ...

  5. 【云原生 | 从零开始学Kubernetes】二十七、配置管理中心Secret和rbac授权

    该篇文章已经被专栏<从零开始学k8s>收录 上一篇文章:kubectl深入理解 点击跳转 配置管理与rbac 配置管理中心 Secret Secret 是什么? 使用 Secret k8s ...

  6. 【云原生 | 从零开始学Kubernetes】二、使用kubeadm搭建K8S集群

    这里写目录标题 安装要求 准备环境 初始化 安装Docker/kubeadm/kubelet 添加kubernetes软件源 三台机子 安装kubeadm,kubelet和kubectl 部署Kube ...

  7. 【云原生 | 从零开始学istio】五、istio灰度发布以及核心资源

    istio灰度发布 接着上一章部署bookinfo 通过 Istio 实现灰度发布 什么是灰度发布? 使用 istio 进行灰度发布 istio 核心资源解读 Gateway VirtualServi ...

  8. 【云原生 | 从零开始学Kubernetes】十、k8sPod节点亲和性和反亲和性

    该篇文章已经被专栏<从零开始学k8s>收录 Pod节点亲和性和常见的状态 Pod 节点亲和性 pod 节点反亲和性 写在最后 Pod 节点亲和性 pod 自身的亲和性调度有两种表示形式 p ...

  9. 【云原生 | 从零开始学Kubernetes】二十三、Kubernetes控制器Statefulset

    该篇文章已经被专栏<从零开始学k8s>收录 上一篇文章:kubernetes持久化存储下 点击跳转 Statefulset Statefulset 控制器:概念.原理解读 有状态服务? 无 ...

最新文章

  1. 在Mac上设置环境变量并永久生效的方法
  2. 基于visual Studio2013解决面试题之0804复杂链表
  3. 合并代码还在用git merge吗?我们都用git rebase!
  4. java.util.Properties类,保存时保留注释及格式不变
  5. Android 如何有效的解决内存泄漏的问题
  6. 从头开始学JavaScript (七)——函数
  7. python legb_理解 Python 的 LEGB.
  8. 数据库崩溃后对redo log的使用
  9. AgileConfig - 轻量级配置中心1.2.0发布,全新的UI
  10. 电视光端机常见故障问题介绍
  11. android.os文件,使用android.os.memoryfile的文件IO
  12. webpack 热加载你站住,我对你好奇很久了
  13. iptraf:一个实用的TCP/UDP网络监控工具
  14. spring-boot 使用 main函数 无法启动的问题完美 解决方案。
  15. 追踪盗窃12亿用户登录数据的网络犯罪团伙
  16. [转载] Python数据分析与可视化学习笔记(一)数据分析与可视化概述
  17. MacBook Pro macOS 安装 Linux 双系统教程(一)
  18. Easyui常用按钮图标汇总
  19. 学习了金字塔原理中的SCQA分析法
  20. 浅议化学与社会的关系——兼议绿色化学重要性

热门文章

  1. LeetCode 题解之 824. Goat Latin
  2. 团队活动 激励还是鸡肋?
  3. 数据挖掘算法之时间序列算法(平稳时间序列模型,AR(p),MA(q),(平稳时间序列模型,AR(p),MA(q),ARMA(p,q)模型和非平稳时间序列模型,ARIMA(p,d,q)模型)学习笔记梳理
  4. HOG 行人检测 学习体会(如何制作训练样本)
  5. 初中教师计算机培训方案,教师年度信息技术培训计划的方案
  6. linux中的lo介绍及作用(回环接口 回环IP)
  7. 课程作业 哈利波特文章检索系统
  8. 使用Cocos2d-x 和粒子编辑器实现“天天爱消除”场景特效
  9. git@gitlab invalid privatekey
  10. Praat使用 | 辅助Praat进行标注的工具