Docker之概述与安装

  🎉🎉欢迎来到我的CSDN主页!🎉🎉

🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚

🌟推荐给大家我的博客专栏《Docker之概述与安装》。🎯🎯

🎁如果感觉还不错的话请给我关注加三连吧!🎁🎁

一、服务器选型

         在选择服务器操作系统时,Windows附带了许多您需要付费的功能。 Linux是开放源代码,可让用户免费使用。

二者对比 

  • Linux 是开源的,因此是免费的。 Web 主机仅需要支付技术支持即可安装和维护程序(如果需
    要)。服务器提供商不需要将额外的成本转嫁给客户。另一方面,对于 Windows 服务器,公司通常必须为操作系统和定期使用许可证付费。
    Linux 服务器及其运行的应用程序通常设计为精益运行,因此通常使用较少的计算机资源。好处是程序员可以“ 即时 修改 Linux 服务器和软件,而无需重新启动,这在 Windows 环境中是不可能的。 
  • Microsoft Windows服务器在多数据库任务下趋向于变慢,崩溃的风险更高。
    Linux Windows 更安全。尽管没有哪个系统能幸免于黑客和恶意软件的攻击,但是 Linux 往往是一个低调的目标。由于Windows 运行着世界上大多数软件,因此,黑客们渴望获得低挂的果实Windows。

二、虚拟机

1. 简单介绍

        虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。

2.  微服务的部署策略

        部署单体应用意味着运行大型应用的多个相同副本,通常提供若干台(N )服务器(物理机或虚拟机),在每台服务器上运行若干个(M )应用实例。部署单体应用并不总是简单明了,但还是比部署微服务应用简单。
        微服务应用由几十甚至数百个服务组成。服务用不同的语言和框架写成,每个都是一个小应用,包括特定的部署、资源、扩展和监控需求,例如,根据服务需求运行若干数量的服务实例。
        此外,每个服务实例必须配套提供适当的 CPU 、内存 和 I/O 资源。更具挑战性的是,尽管如此复杂,部署服务还必须快速、可靠和性价比高。

3.  基于主机(物理机或虚机)的多服务实例

        基于主机的多服务实例” 模式是最为传统的应用程序部署方法。
        在该模式下,软件开发人员可以提供单个或多个物理机或虚机,同时在每个主机上运行多个服务实例。
        此模式有几种不同的实现形式,其中包括:将每一个服务实例都作为一个单独的进程,或是在同一进程中运行多个服务实例。

三、什么是Docker

1. 基本概述 

        Docker是一种容器化平台,旨在简化应用程序的开发、部署和管理。它使用轻量级的容器来封装应用程序及其所有依赖关系,提供一致的运行环境。Docker容器是可移植、可扩展和自包含的,使得开发者能够更轻松地在不同的环境中运行其应用。

优点:

        由于多个服务实例使用的是同一服务器、及其操作系统,因此它们的资源使用效率相对较高。

不足:

  • 除非每个实例都是一个单独的进程,否则您对服务实例的实际控制权并不大。而且,您无法限制每个实例能够使用到的资源比例。这将带来主机内存被大量消耗的隐患。
  • 如果多个服务实例在同一进程中运行,它们之间会缺乏隔离关系。这通常会导致在相同进程中,某个行为异常的服务能够直接影响、甚至中断其他的服务。
  • 由于运营团队需要了解服务的详细信息,因此在部署期间,他们可能发生人为错误的风险较高。显然,开发和运营团队之间需要通过必要的信息交换,来尽可能地消除复杂性

 4. 基于容器的服务实例

        在这种部署模式下,每个服务实例都运行在其各自的容器中,因此也被称为操作系统级别的虚拟化机制。

         使用这一模式时,用户将服务打包为容器镜像。每个容器镜像就是一个文件系统镜像,由应用和运行服务所需的库构成。有的容器镜像还包括完整的 Linux 根文件系统,有的则更轻量。

        以部署 Java 服务为例,构建的容器镜像包括 Java 运行时、 Apache Tomcat 服务器、以及编译好的 Java应用。
        一旦将服务打包为容器镜像,就启动一到多个容器。通常每个物理机或虚拟主机上会运行多个容器,会用到 Kubernetes Marathon 这样的集群管理工具来管理容器。
        集群管理工具把主机看做资源池,根据每个容器需要的资源和每个主机上可用的资源来调度容器。

        容器的优点与虚拟机类似,服务实例之间完全隔离,也能轻松监控每个容器的资源消耗。 

2. 关键概念与特点

Docker的关键概念和特点
关键概念和特点说明
容器化Docker利用容器技术,将应用程序和其所有依赖项(库、环境变量、配置文件等)打包到一个容器中。这个容器可以在任何支持Docker的环境中运行,而不受底层系统差异的影响。
轻量级Docker容器共享主机操作系统的内核,相比于传统虚拟化,容器更轻量,更快速启动,并占用更少的系统资源。
可移植性由于Docker容器包含应用程序及其所有依赖项,因此它们可以在开发、测试和生产环境之间轻松迁移,确保一致的运行环境。
版本控制和分发Docker通过镜像(Image)的概念实现版本控制。镜像是一个只读的模板,定义了容器运行时所需的文件系统和参数。这使得开发者能够轻松地分享、分发和更新应用程序。
快速部署Docker容器可以在几秒钟内启动,使得应用程序的部署变得更加迅速和灵活。
自动化Docker可以与自动化工具和编排系统(如Docker Compose、Kubernetes等)集成,从而实现自动化的应用程序部署、扩展和管理。

        总之,Docker的普及极大地改变了软件开发和部署的方式,提高了开发和运维的效率,同时降低了应用程序在不同环境中运行时可能遇到的问题。

3.  应用场景

        Docker 的灵活性和轻量级容器化技术使其在各种应用场景中得到广泛应用。以下是一些常见的 Docker 应用场景:

  1. 应用程序打包和分发: Docker 可以将应用程序及其所有依赖项封装到一个容器中,形成一个可移植的镜像。这使得应用程序在不同环境中的部署更加一致和可靠。

  2. 微服务架构: Docker 容器适用于微服务架构,每个微服务可以打包为一个独立的容器。这简化了微服务的开发、测试和部署,并提高了系统的可伸缩性和弹性。

  3. 持续集成和持续部署(CI/CD): Docker 可以集成到 CI/CD 流水线中,实现自动化的构建、测试和部署。这样,开发者可以更快速地交付新的功能和更新。

  4. 多语言开发环境: Docker 可以为不同的编程语言和开发框架创建隔离的开发环境。开发者可以使用容器来确保他们在不同的开发机器上拥有相同的运行时环境。

  5. 大数据处理: Docker 容器可用于在分布式系统中运行大数据处理框架,如Hadoop、Spark等。这使得大数据应用程序的部署和管理更加便捷。

  6. 测试环境: Docker 容器可以在开发和测试过程中提供一致的运行环境,减少了“在我的机器上可以工作”这种问题。测试团队可以使用容器来进行集成测试、单元测试等。

  7. 云计算和容器编排: Docker 可以与云平台(如AWS、Azure、Google Cloud等)以及容器编排工具(如Kubernetes、Docker Swarm等)集成,实现应用程序的弹性伸缩、高可用性和自动化管理。

  8. 快速部署和回滚: Docker 容器可以快速部署,并支持回滚到先前的版本。这为应用程序的快速发布和问题恢复提供了便利。

4.  Docker三要素

4.1 Docker镜像

        Docker 镜像就是一个只读的模板。
        例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。
        镜像可以用来创建 Docker 容器。
        Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载 一 个已经做好的镜像来直接使用

4.2  Docker仓库

        仓库是集中存放镜像文件的场所。
        有时候会把仓库和仓库注册服务器( Registry )混为一谈,并不严格区分。实际上,仓库注册服务器上 往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的
标签( tag )。
        仓库分为公开仓库(Public )和私有仓库( Private )两种形式。最大的公开仓库是 Docker Hub ,存放了数量庞大的镜像供用户下载。当然,用户也可以在本地网络内创建一个私有仓库。
        当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了
 

4.3 Docker容器

       Docker 利用容器来运行应用。

        容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
        可以把容器看做是一个简易版的 Linux 环境(包括 root 用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

 1. 提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境

2. 提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容
3. 组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构

5.  虚拟机与容器的区别

        VM(VMware)在宿主机器、宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓库,然后再安装应用;
        Container(Docker容器 ) ,在宿主机器、宿主机器操作系统上创建 Docker 引擎,在引擎的基础上再安装应用。

四、安装Docker

        安装之前必须保证VM虚拟机中安装Centos系统,然后在我们的连接服务器工具中连接它。

        安装必要的系统工具: yum install -y yum-utils device-mapper-persistent-data lvm2

 

  配置阿里云Docker Yum: yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

 更新yum缓存: yum makecache fast

 执行上述代码报错就执行下述代码 yml.pid占用: -- rm -f /var/run/yum.pid

 安装docker-CE: yum -y install docker-ce

 

        到这里docker就安装成功了。 

1 )默认安装的是最新版本的稳定版
2 )查看版本列表请使用如下命令:
yum list docker-ce --showduplicates | sort -r
3 )如果要安装特定版本的 docker-CE 请使用如下命令格式:
yum install docker-ce-

五、Docker的基本使用

1. 基本服务

1.1 查看服务状态

systemctl status docker

 1.2 启停服务

systemctl start docker  //启动
systemctl stop docker  //停止
systemctl restart docker //重启

1.3  

systemctl enable docker  //设置开启自启动
systemctl disable docker //关闭开机自启动

2. 仓库+镜像

2.1 查看当前镜像

        docker images   //查看镜像

 

2.2 配置加速器

        我们前去阿里云官网进行登陆获取阿里云加速器

 

        我们在进行查看 cat /etc/docker/daemon.json

 

        配置好之后请在虚拟机进行拍照 ,防止后续出现问题

2.3 镜像操作

        下载镜像 docker pull 镜像名

        docker pull nginx下载nginx镜像,帮我们安装好了Linux服务,默认是最新版。

 

        我们在进行查看镜像 ,latest代表最新版

 

         当然我们也可以将镜像上传到我们的仓库去,指令docker push 但是我们上传的是默认官网的仓库,上传不了,需要我们自己登陆注册。我们再进行拉取centos的镜像资源。

 

2.4 其他操作

重新加载daemon :systemctl daemon-reload

重启docker  : systemctl restart docker
搜索镜像  : docker search 镜像名称
删除镜像:  docker rmi 镜像ID/标签

3. 容器 

        容器是Docker的另一个核心概念。简单来说,容器是镜像的一个运行实例。
        镜像是静态的只读文件,而容器带有运行时需要的可写文件层,同时,容器中的应用进程处于运行状态

3.1 创建容器

        指令:docker create 镜像名称

docker create -it centos:latest
docker create -it --name centos01 centos:latest
centos:latest 即镜像名字:版本(或镜像ID),将使用指定镜像创建容器。另外,Docker会检查本地是否存在指定的镜像,不存在就从公有仓库下载
-it:是两个参数,-iinteractive容器具有交互功能,-t:容器将提供伪终端
--name:指定生成的容器的名字,允许空,如果不指定会自动生成

         docker ps 查看容器

         docker ps -a 查看容器(使用第二个)

3.2 启动、停止、重启容器  

docker start 容器ID|name|name:tag
docker stop 容器ID|name|name:tag
docker restart 容器ID|name|name:tag

3.3 删除容器

docker rm 容器 ID
docker rm - f 容器 ID

3.4 进入容器

docker exec - it 容器 ID / 容器 NAME / bin / bash
docker exec - it 容器 ID / 容器 NAME bash ( 简写 )

3.5 退出容器

退出时如果想继续运行容器:按顺序按【 ctrl + p 】,【 ctrl + q
如果不想继续运行:按【 ctrl + d 】或输入 exit

 🎉🎉本期的博客分享到此结束🎉🎉

📚📚各位老铁慢慢消化📚📚

🎯🎯下期博客博主会带来新货🎯🎯

🎁三连加关注,阅读不迷路 !🎁

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

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

相关文章

13个自媒体文库平台(附通道链接)

​划到最后“阅读原文” ——进入官网 Hi,大家好,我是胡猛夫,每天分享实用运营工具! 更多内容,更多资源,欢迎交流! 公 号 | 微视角文化 》》精彩推荐 >>微视角文化知识库:移…

深入理解UML中的继承关系

深入理解UML中的继承关系 在面向对象的设计中,继承关系是构建清晰、可维护系统的关键。统一建模语言(UML)提供了一种标准化的方法来可视化这些关系。本文将深入探讨UML中的继承关系,并探讨它如何在代码中体现。 什么是继承关系&a…

Selenium的使用

Selenium 是一个自动化测试工具,它主要用于自动化网络应用程序的测试。不过,除了测试之外,它也常用于自动执行各种浏览器操作,比如自动填写表单、抓取网页数据、点击、下拉等。同时还可以获取浏览器当前所呈现的页面的源代码&…

【VRTK】【Unity】【游戏开发】更多技巧

课程配套学习项目源码资源下载 https://download.csdn.net/download/weixin_41697242/88485426?spm=1001.2014.3001.5503 【概述】 本篇将较为零散但常用的VRTK开发技巧集合在一起,主要内容: 创建物理手震动反馈高亮互动对象【创建物理手】 非物理手状态下,你的手会直接…

Vue+ElementUI+Axios实现携带参数的文件上传(数据校验+进度条)

VueElementUIAxios实现携带参数的文件上传(数据校验进度条) 可以实现对上传文件的类型,大小进行数据校验,以及对上传文件所要携带的数据也进行的校验,也有文件上传进度的进度条。 一、Vue 结构部分 弹窗显示&#xff0…

【服务器数据恢复】服务器硬盘磁头损坏的数据恢复案例

服务器硬盘故障: 一台服务器上raid阵列上有两块硬盘出现故障,用户方已经将故障硬盘送到其他机构检测过,其中一块硬盘已经开盘,检测结果是盘片损伤严重;另一块硬盘尚未开盘,初步判断也存在硬件故障&#xff…

UCB Data100:数据科学的原理和技巧:第十三章到第十五章

十三、梯度下降 原文:Gradient Descent 译者:飞龙 协议:CC BY-NC-SA 4.0 学习成果 优化复杂模型 识别直接微积分或几何论证无法帮助解决损失函数的情况 应用梯度下降进行数值优化 到目前为止,我们已经非常熟悉选择模型和相应损…

机器学习-决策树

1、什么是决策树? 一种描述概念空间的有效的归纳推理办法。基于决策树的学习方法可以进行不相关的多概念学习,具有简单快捷的优势,已经在各个领域取得广泛应用。 决策树是一种树型结构,其中每个内部结点表示在一个属性上的测试&a…

Pandas十大练习题,掌握常用方法

文章目录 Pandas分析练习题1. 获取并了解数据2. 数据过滤与排序3. 数据分组4. Apply函数5. 合并数据6. 数据统计7. 数据可视化8. 创建数据框9. 时间序列10. 删除数据 代码均在Jupter Notebook上完成 Pandas分析练习题 数据集可从此获取: 链接: https://pan.baidu.co…

flutter动态渲染从服务器请求的列表数据

比如我们从服务器请求到的列表数据,需要渲染到页面上,但是在flutter里面还是需要使用他们的ListView或者GridView或者别的组件才可以,或者有children这种属性的组件上使用。 比如我们在一个有状态的组件Lists里面,在initState的时…

uniapp 实战 -- app 的自动升级更新(含生成 app 发布页)

uniapp 提供了 App升级中心 uni-upgrade-center ,可以便捷实现app 的自动升级更新,具体编码和配置如下: 1. 用户端 – 引入升级中心插件 下载安装插件 uni-upgrade-center - App https://ext.dcloud.net.cn/plugin?id4542 pages.json 中添加…

在机械行业中,直线导轨和弧形导轨哪个应用范围更广泛?

弧形导轨和直线导轨是两种常见的导轨类型,直线导轨主要被用于高精度或快速直线往复运动场所,而弧形导轨是一种专门设计用于曲线运动的导轨系统,那么在机械行业中,直线导轨和弧形导轨哪个应用范围更加广泛呢? 直线导轨主…

蚂蚁爱购--靠谱的SpringBoot项目

简介 这是一个靠谱的SpringBoot项目实战,名字叫蚂蚁爱购。从零开发项目,视频加文档,十天就能学会开发JavaWeb项目。 教程路线是:搭建环境> 安装软件> 创建项目> 添加依赖和配置> 通过表生成代码> 编写Java代码&g…

如何关闭iPhone 14或14 Pro Max,这里有详细步骤

你刚买了新的iphone 14或iphone 14 pro max,迫不及待地想开始使用它。但如果你需要关闭它怎么办?有几种方法可以用来关闭这两种设备。 如何关闭iPhone 14 你可以通过每个人都熟悉的老式侧按钮轻松关闭iPhone 14,也可以通过面部识别关闭它。 …

Springboot+vue的智能无人仓库管理(有报告),Javaee项目,springboot vue前后端分离项目

演示视频: Springbootvue的智能无人仓库管理(有报告),Javaee项目,springboot vue前后端分离项目 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的智能无人仓库管理,采用M&#xff08…

Linux/Frolic

Enumeration nmap 还是扫描系统对外开放的端口情况,对外开放了22,139,445,还有9999端口,显示是http服务,使用了nginx 1.10.3 ┌──(kali㉿kali)-[~/HTB/Frolic] └─$ nmap -sC -sV -oA nmap -Pn 10.10.10.111 Starting Nmap 7.93 ( http…

美国安规测试UL 60335-2-3 安全标准家用和类似用途电器安全第 2-3 部分:电熨斗的特殊要求

UL 60335-2-3 安全标准家用和类似用途电器安全第 2-3 部分:电熨斗的特殊要求 本 UL 标准基于 IEC 出版物 60335-2-3:6.1 版,家用和类似用途电器-安全-第 2-3 部分:电熨斗的特殊要 求。 IEC 出版物 60335-2-3 版权归 IEC 所有。 本版本的发布是为了满足 UL 标准政…

如何为数据保护加上“安全锁”?

伴随着数字经济的日趋活跃,数据安全和隐私保护成为了各国政府和企业都十分重视的问题,纷纷加强了数据安全防护。但实际上,近几年数据泄露问题接连不断,虽然没有造成严重的后果,但也足以证明目前数据安全防护的紧迫性。…

【JAVA】concurrentHashMap和HashTable有什么区别

🍎个人博客:个人主页 🏆个人专栏:JAVA ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 同步性质: 性能: 允许空键值(Allow Nulls): 迭代器(Iter…

用户态与内核态切换

随笔记录 目录 1. 切换方式 2. 案例介绍 1. 切换方式 1. 用户态切内核态: 用户态切换到内核态的唯一途径——>中断/异常/陷入(陷入又可称作系统调用)2. 内核态切用户态: 内核态切换到用户态的途径——>设置程序状态字 PSW注:CPU中有…