【Docker】Docker是什么?Docker从介绍到Linux安装图文详细教程

news2024/9/22 17:21:36

请添加图片描述


本期目录

  • 1. Docker介绍
    • 1.1 Docker解决的问题
  • 2. Docker和虚拟机的区别
    • 2.1 虚拟机的缺点
    • 2.2 Docker的优点
    • 2.3 比较
  • 3. Docker架构
      • 3.1 镜像和容器
        • 1)镜像
        • 2)容器
    • 3.2 Docker和DockerHub
    • 3.3 整体结构及底层通信原理
  • 4. 安装Docker
    • 4.1 安装条件
    • 4.2 卸载旧版本
    • 4.3 yum安装gcc相关
    • 4.4 安装需要的软件包
    • 4.5 设置stable镜像仓库
    • 4.6 更新yum软件包索引
    • 4.7 安装Docker CE
    • 4.8 启动Docker
    • 4.9 开机自启
    • 4.10 测试
    • 4.11 卸载
  • 5. 阿里云镜像加速器
    • 5.1 介绍
    • 5.2 操作


1. Docker介绍


image-20221124101201311

1.1 Docker解决的问题

  • 技术职级变化。开发逐渐承担起运维的角色,演变成最近非常火爆的概念【DevOps】。开发者的职级升级打怪之路变为:Coder --> Programmer --> Software Engineer --> DepOps Engineer 。兼开发与运维一体的 (DevOps) 新一代开发工程师。

  • 一次构建,随处运行

    • 更快速的应用交付和部署;
    • 更便捷的升级和扩缩容;
    • 更简单的系统运维;
    • 更高效的计算资源利用。Docker 是内核级虚拟化,所以在一台物理机上可以运行很多个容器的实例,大大提升物理服务器的 CPU 和内存的利用率。

    image-20221205145439873


2. Docker和虚拟机的区别

image-20221124101509728


2.1 虚拟机的缺点

  1. 资源占用多
  2. 冗余步骤多
  3. 启动慢

2.2 Docker的优点

  • 容器不需要捆绑一整套操作系统,只包含保证软件能正常运行的最小 Linux 内核 (Ps. CentOS/Ubuntu 基础镜像仅 170 MB )、库资源和设置。系统因此变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。
  • Docker 容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统的虚拟机则是在硬件层面实现虚拟化。与传统的虚拟机相比,Docker 优势体现为启动速度快、体积占用小。

2.3 比较

  • 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整的操作系统,在该系统上再运行所需应用进程;
  • 内核级虚拟化。Docker 容器内的应用进程直接运行在宿主机的内核 (复用) ,容器内没有自己的内核且没有进行硬件虚拟化。因此 Docker 容器比传统虚拟机更改为轻便;
  • 每个 Docker 容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。

3. Docker架构

  • Docker 的架构由三要素组成:
    • 镜像 (image)
    • 容器 (container)
    • 仓库 (repository)

3.1 镜像和容器

image-20221124102249996

1)镜像

  • 镜像是只读的。一个镜像可以创建出多个容器 (container) ,可以理解为 Java 里的类。

2)容器

  • 而创建出来的 Docker 容器,可以理解为 Java 中的类 new 实例化出来的一个一个对象。
  • 镜像是静态的定义,而容器是运行时的实体。容器为镜像提高了一个标准的和隔离的运行环境,容器可以被启动、开始、停止和删除。每个容器都是相互隔离的、保证安全的平台。
  • 可以把容器看作是一个简易版的 Linux 环境 (包括 root 权限、进程空间、用户空间和网络空间等) 和运行在其上的应用程序。

3.2 Docker和DockerHub

image-20221124102039401

  • 为了提高下载速度,一般国内的公开仓库使用阿里云。

3.3 整体结构及底层通信原理

image-20221124102039401

  • Docker 是一个 Client-Server 结构的系统,Docker 守护进程运行在主机上,然后通过 Socket 连接从客户端访问,守护进程 ( Docker Daemon) 从客户端接受命令并管理运行在主机上的容器。Docker 运行的基本流程为:
  1. 用户是使用 Docker Client 与 Docker Daemon 建立通信,并发送请求给后者。
  2. Docker Daemon 作为 Docker 架构中的主体部分,首先提供 Docker Server 的功能使其可以接受 Docker Client 的请求。
  3. Docker Engine 执行 Docker 内部的一系列工作,每一项工作都是以一个 job 的形式存在。
  4. Job 的运行过程中,当需要容器镜像时,则从 Docker Registry 中下载镜像,并通过镜像管理驱动 Graph Driver 将下载的镜像以 Graph 的形式存储。
  5. 当需要为 Docker 创建网络环境时,通过网络管理驱动 Network Driver 创建并配置 Docker 容器网络环境。
  6. 当需要限制 Docker 容器运行资源或执行用户指令等操作时,则通过 Exec Driver 来完成。
  7. Libcontainer 是一项独立的容器管理包,Network Driver 以及 Exec Driver 都死通过 Libcontainer 来实现具体对容器进行的操作。
  • Docker 内部的高级架构图如下所示。了解并熟知这个架构图是学习 Docker 高级篇的重要基础。

image-20221210105032718

image-20221210105300030

image-20221210105610647


4. 安装Docker

  • Docker 官网:https://www.docker.com/
  • Docker Hub 官网:https://hub.docker.com/
  • Docker 必须部署在 Linux 内核的系统上。其他操作系统想部署 Docker 就必须安装一个虚拟 Linux 环境。

4.1 安装条件

  • 操纵系统:CentOS 7 (64 bit)
  • Linux 内核版本 3.8 以上。可以使用命令 uname -r 查询 Linux 内核版本。

4.2 卸载旧版本

  • 如果你的 Linux 服务器曾经装过 Docker ,首先执行下列命令卸载。

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

    其中,\ 在 Linux 终端中表示太长了,下一行继续。


4.3 yum安装gcc相关

  • 确保你的 CentOS 7 能连上网。

    $ ping www.baidu.com
    

    image-20221210111835397

  • 安装 gcc 编译工具。

    $ yum -y install gcc
    
  • 安装 gcc-c++ 编译工具。

    $ yum -y install gcc-c++
    

4.4 安装需要的软件包

  • 安装 yum-utils 软件包。

    $ yum install -y yum-utils
    

4.5 设置stable镜像仓库

  • 这一步和官网操作略有不同,还是因为 Docker 官方 stable 仓库服务器在国外,拉取镜像时网速会很慢。因此还是使用国内的阿里云、腾讯云等镜像仓库。笔者这里设置为阿里云镜像仓库。

    $ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    

    image-20221210113157339


4.6 更新yum软件包索引

  • 因为后续我们很多都是通过 yum 下载安装,这部分属于 Linux 基础知识。相当于重建 yum 索引,以后安装就能快一些。

    $ yum makecache fast
    

    image-20221210113518672


4.7 安装Docker CE

  • 开始安装 Docker 引擎,这一步才是真正开始安装 Docker 。

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

4.8 启动Docker

  • 安装好后就可以直接启动 Docker 引擎了。

    $ systemctl start docker
    
  • 查看 Docker 引擎是否成功启动。

    $ ps -ef | grep docker
    

    image-20221210114328066

    或者:

    $ systemctl status docker
    

    image-20221210114440601

    出现上面的画面,恭喜你,Docker 引擎已经成功启动了。


4.9 开机自启

$ systemctl enable docker

image-20221210211501253


4.10 测试

  • 通过查看 Docker 版本来验证是否成功安装。

    $ docker version
    

    image-20221210115011915

    从这里也很容易看出来 Docker 是 C/S 架构。

  • 运行 hello-world 镜像来验证 Docker 引擎是否正确地安装。

    $ docker run hello-world
    

    image-20221210115303664

    如果看到上面的页面,说明 Docker 安装成功。也能看到 Docker 先去本地仓库查找是否有 hello-world:latest 镜像,在本地仓库找不到,就去阿里云远程仓库 pull 拉取镜像,然后运行镜像成一个容器。


4.11 卸载

  • 如有需要卸载 Docker ,依次执行下列命令即可。

    $ systemctl stop docker
    
    $ yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
    
    $ rm -rf /var/lib/docker
    
    $ rm -rf /var/lib/containerd
    

5. 阿里云镜像加速器


5.1 介绍

  • 为了后续从远程仓库拉取镜像更加快速,我们给 Docker 配置阿里云镜像加速器。

5.2 操作

  • 先注册一个阿里云账号。用淘宝、支付宝账号登录即可。点击【控制台】。

    image-20221210205236753

  • 点击【容器镜像服务】。

    image-20221210205446586

  • 点击【镜像加速器】。

    image-20221210205621874

  • 复制加速器地址。下面也说明了 CentOS 的操作文档,下面按照操作文档操作。

    image-20221210205753145

  • 创建 daemon.json 文件并往里写入镜像加速器地址链接。

    $ tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://1s3b33m1.mirror.aliyuncs.com"]
    }
    EOF
    

    image-20221210210437888

  • 重启 Docker daemon 守护进程使上面的配置生效。

    $ systemctl daemon-reload
    
  • 重启 Docker 生效。

    $ systemctl restart docker
    
  • 再次运行 hello-world 镜像来验证 Docker 引擎是否正确地安装。

    $ docker run hello-world
    

    image-20221210210835056

    如果看到上面的页面,说明 Docker 安装成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/79626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Windows环境下载安装MySQL、IDEA连接数据库】

MySQL安装配置一、Windows环境下载安装MySQL1.下载合适的MySQL安装包2.本地安装配置MySQL二、IDEA连接MySQL数据库1.设置数据库连接2.测试连接3.连接结果一、Windows环境下载安装MySQL 1.下载合适的MySQL安装包 官网链接https://www.mysql.com/&#xff0c;选择合适的版本&am…

JVM方法区的内部结构

JVM 中方法区的大致区域浏览图&#xff1a; 《深入理解 Java 虚拟机》书中对方法区&#xff08; Method Area) 存储内容描述如下&#xff1a;它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码缓存等。 类型信息 对每个加载的类型&#xff08;类 cla…

chatGPT 辣么火,你却不会注册

chatGPT 是什么&#xff1f; 一款目前超级火的 AI 对话聊天工具&#xff0c;只是不同于其他的智能聊天机器人那样&#xff0c;他非常的智能。 可以回答你的技术问题、帮你写代码、还能帮你写小说等等&#xff0c;发挥你的想象力&#xff0c;让他干点啥都行。 比如让他帮你用…

Spring循环依赖问题分析

文章目录一、什么是循环依赖&#xff1f;二、Spring内部解决的是那种情况下的循环依赖&#xff1f;三、一级、二级、三级缓存保存的是什么&#xff1f;四、如何使用三级缓存解决循环依赖&#xff1f;五、为什么是三级缓存&#xff0c;二级缓存不行么&#xff1f;六、二级缓存的…

小米AX6S刷OpenWrt,和刷回官网固件

文章目录背景刷成 OpenWrt刷回官网固件Ref简 述: 闲暇&#xff0c;折腾下新购 小米AX6S &#xff0c;刷下 OpenWrt&#xff0c;初次接触记录下。 本文初发于 “偕臧的小站”&#xff0c;同步转载于此。 背景 miwifi_rb03_firmware_3e872_1.0.54.bin [官方 2022.08.24] miwifi_r…

17. 权重衰退(weight_decay)

之前描述了过拟合的问题&#xff0c;现在介绍一些正则化模型的技术。 正则化&#xff1a;凡事可以减少泛化误差而不是减少训练误差的方法&#xff0c;都可以称作正则化方法。 我们总是可以通过去收集更多的训练数据来缓解过拟合。 但这可能成本很高&#xff0c;耗时颇多&#x…

【OpenCV-Python】教程:4-7 BRIEF( Binary Robust Independent Elementary Features)特征

OpenCV Python BRIEF &#xff08; Binary Robust Independent Elementary Features&#xff09; 【目标】 学习 BRIEF 算法理论 【理论】 我们知道SIFT使用128维向量作为描述符。因为它使用的是浮点数&#xff0c;所以需要512字节。类似地&#xff0c;SURF也需要最少256字…

堪称零瑕疵!仅用了365页直接封神,我要吹爆这份RocketMQ笔记

RocketMQ 是阿里巴巴在2012年开源的分布式消息中间件&#xff0c;作为经历过多次阿里巴巴双十一这种“超级工程”的洗礼并有稳定出色表现的国产中间件&#xff0c;以其高性能、低延时和高可靠等特性近年来已经也被越来越多的国内企业使用。 谁使用ApacheRocketMQ&#xff1f; …

【不知道发啥】Win7网页版使用方法

文章目录网站使用方法测试总结&#x1f308;博客主页&#xff1a;Minecraft__Him &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️私信&#x1f4dd;评论 网站 https://win7simu.visnalize.com/ 使用方法 如果是蓝屏那就等一下&#xff0c; 等它跳到这个界面 …

硕士毕业进入阿里三年半,离职申请N+3,到手20多万,跳槽到下家涨薪50%,感谢阿里!...

最近这段时间的负能量帖子太多了&#xff0c;今天说点正能量的事。一位前阿里员工说&#xff1a;硕士3.5年&#xff0c;校招进入阿里供应链后端&#xff0c;月初离职&#xff0c;申请拿了n3&#xff0c;一共给了20多万&#xff0c;跳槽的package涨了50%&#xff0c;感谢阿里&am…

当我和ChatGPT聊Everything as Code

以下是我和ChatGPT的聊天原文。一开始还有点惊喜&#xff0c;震惊。越到后面&#xff0c;越感到失望。网络上大肆宣传ChatGPT要代替人类的文章&#xff0c;我怕是专门炒流量赚钱的吧&#xff1f;我个人觉得&#xff0c;它离代替人类&#xff0c;还远着呢。Everything as Code 的…

Stimulsoft Reports.NET 2023.1.0 Crack

Stimulsoft Reports.NET 是一种为在 Windows 窗体应用程序中集成和工作而创建的报告工具。使用我们的报告工具&#xff0c;您可以创建、编辑、查看、导出和打印任何复杂程度的报告。该产品包括一个功能强大、直观易懂的报表设计器和一个交互式查看器。 最大功能 Stimulsoft Rep…

光储直柔———助力实现零碳电力的新型建筑配电系统

光储直柔———助力实现零碳电力的新型建筑配电系统&#xff08;2021&#xff09; &#xff3b;引用本文&#xff3d;江亿&#xff0e;光储直柔———助力实现零碳电力的新型建筑配电系统[J]&#xff0e;暖通空调&#xff0c;2021, 21(10): 112. 光储直柔PSDF&#xff08;phot…

记一次CTF测验(web)

目录 01.php 签到题目 题目描述&#xff1a; 解题&#xff1a; 02.php 11&#xff1f; 题目描述&#xff1a; 解题&#xff1a; 03.php get拿来吧你 题目描述&#xff1a; 解题&#xff1a; 04.php 你从哪里来我的朋友 题目描述&#xff1a; 解题&#xff1a; 05.p…

功能测试(九)—— adb命令、Charles手机抓包

目录 目标 一、APP命令格式 1.1 查看已连接的设备列表 1.2 断开连接设备 1.3 无线连接设备 1.4 开启adb服务 1.5 关闭adb服务 1.6 安装软件包 1.7 卸载软件包 1.8 获取包名 1.9 获取当前窗口(注意大小写区分) 1.10 清除缓存 1.11 启动/停止应用 1.12 获取手机日志…

Verilog语法之条件编译指令`ifdef, `ifndef,`else, `elsif, `endif

0、前言 一般情况下&#xff0c;C语言中的每一行代码都要参加编译。但有时候出于对程序代码优化的考虑&#xff0c;希望只对其中一部分内容进行编译&#xff0c;此时就需要在程序中加上条件&#xff0c;让编译器只对满足条件的代码进行编译&#xff0c;将不满足条件的代码舍弃&…

Canal-1-安装-代码

1总体简介 1 mysql需要开启binlog binlog分类 1.1&#xff09;statement: 语句级别&#xff0c;binlog 会记录每一次执行写操作的语句。相对于row模式节省空间&#xff0c;但是会产生数据不一致性&#xff0c;例如&#xff1a;update aa set create_timenew(); 如果用binlo…

Java学习笔记7.2.2 事件处理 - Swing常用事件

文章目录零、本讲学习目标一、Swing常用事件二、窗体事件&#xff08;一&#xff09;窗体事件概述&#xff08;二&#xff09;窗体事件类API概述&#xff08;三&#xff09;窗体事件使用方法&#xff08;四&#xff09;窗体事件案例演示三、鼠标事件&#xff08;一&#xff09;…

【进阶】C语言第一课:深度剖析数据在内存中的存储

目录 前言&#xff1a; 一、数据类型详细介绍&#xff1a; 1.相关知识回顾&#xff1a; 2.类型的基本归类&#xff1a; 整型家族&#xff1a; 浮点型家族&#xff1a; 构造类型&#xff1a; 指针类型&#xff1a; 空类型&#xff1a; 二、整形在内存中的存储&#xff1a; …

PS 更换证件照背景色

哈喽&#xff0c;各位小伙伴&#xff01;今天我们来学习一下如何更换证件照背景色&#xff1f; 常见证件照 常见的证件照一般有白色、蓝色和红色三种样式&#xff0c;我们拍证件照一般只拍一种&#xff0c;为了节省支出&#xff0c;其他两种颜色就需要我们自己调色处理了 蓝…