Docker之概述与安装

news2024/11/18 11:45:45

  🎉🎉欢迎来到我的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.coloradmin.cn/o/1378737.html

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

相关文章

笔记系统的部署架构

前天给笔记系统打了0.0.3的tag,一个简单的全栈功能闭环基本完成。既然是开源,因此,这里有必要分享一下部署结构,希望能够获得小伙伴们的反馈。 目前整个系统采用docker容器来部署。应用介绍 auth_app: 登录/注册的前端应用 web_ap…

9个自媒体音频创作平台(附链接通道)

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

【Python机器学习】深度学习——调参

先用MLPClassifier应用到two_moons数据集上: from sklearn.neural_network import MLPClassifier from sklearn.datasets import make_moons from sklearn.model_selection import train_test_split import mglearn import matplotlib.pyplot as pltplt.rcParams[f…

UOS Python+Qt5实现声卡回路测试

1.回路治具设计: 2.Ui界面: 3.源代码: # -*- coding: utf-8 -*-# Form implementation generated from reading ui file SoundTestWinFrm.ui # # Created by: PyQt5 UI code generator 5.15.2 # # WARNING: Any manual changes made to this…

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

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

BikeDNA(四)初始化参考数据

BikeDNA(四)初始化参考数据 这本笔记本: 加载定义研究区域的多边形,然后为研究区域创建网格叠加。加载参考数据。处理参考数据以创建分析所需的网络结构和属性。 先决条件和条件 输入/输出 config.yml 必须提前设置。 此笔记本…

力扣|2023华为秋招冲刺

文章目录 第一关&#xff1a;2023 年 7 月面试题挑战第二关&#xff1a;2023 年 6 月面试题挑战第三关&#xff1a;2023 年 5 月面试题挑战 第一关&#xff1a;2023 年 7 月面试题挑战 class Solution { public:void reverseWord(vector<char>& s,int l,int r){for(i…

教程-右键用vscode(新窗口)打开文件或目录

通过本文可以提高效率&#xff0c;用起来更爽更高效。 本文实现了&#xff08;windows系统&#xff09;&#xff1a; 右键-用vscode(当前窗口)打开文件或目录右键-用vscode-新窗口打开文件或目录 注意&#xff1a; 下面的安装路径要更改为您实际的路径 具体配置步骤&#x…

066:vue中实现二维数组的全选、全不选、反选、部分全选功能(图文示例)

第061个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使用,computed,watch,生命周期(beforeCreate,created,beforeM…

面向零信任架构的访问安全态势评估

伴随着“云大物移”等新兴 IT 技术的快速发展&#xff0c;企业数字化转型使得 IT 业务的网络环境更加复杂多样&#xff0c;企业数字资源的安全防护正面临着前所未有的压力与威胁。零信任安全架构放弃了传统基于“边界”的安全模型&#xff0c;以访问上下文的安全态势感知为基础…

如何优雅的只在当前页面中覆盖ui库中组件的样式(vue的问题)

首先我们vue文件的样式都是写在<style lang"less" scoped></style>标签中的&#xff0c;加scoped是为了使得样式只在当前页面有效。那么问题来了&#xff0c;看图&#xff1a; 我们正常写的所有样式&#xff0c;都会被加上[data-v-23d425f8]这个属性&…

C#进阶-IIS服务器发布ASP.NET项目

对于云服务器&#xff0c;程序员一般不会陌生&#xff0c;如果项目需要发布到现网&#xff0c;那么服务器是必不可缺的一项硬性条件&#xff0c;那么如何在云服务器上部署一个项目&#xff0c;需要做哪些配置准备&#xff0c;下面就由本文档为大家讲解&#xff0c;本篇以 IIS服…

小学生练字神器,在线字帖生成器网站源码

源码介绍 帮助小学生规范汉字书写&#xff0c;提高汉字书写水平&#xff0c;在线小学生练字神器&#xff01;它不仅功能强大&#xff0c;而且完全免费&#xff0c;是每个小学生必备的练字工具。 海量字库&#xff1a;收录9574个常用汉字&#xff0c;满足小学生的学习需求。多…

R语言【paleobioDB】——pbdb_intervals():通过参数选择,返回多个地层年代段的基本信息

Package paleobioDB version 0.7.0 paleobioDB 包在2020年已经停止更新&#xff0c;该包依赖PBDB v1 API。 可以选择在Index of /src/contrib/Archive/paleobioDB (r-project.org)下载安装包后&#xff0c;执行本地安装。 Usage pbdb_interval (id, ...) Arguments 参数【..…

【Emgu.CV教程】5.1、几何变换之平移

图像的几何变换对于图像处理来说&#xff0c;也是最基础的那一档次&#xff0c;包括平移、旋转、缩放、透视变换等等&#xff0c;也就是对图像整理形状的改变&#xff0c;用到的函数都比较简单&#xff0c;理解起来也很容易。但是为了凑字数&#xff0c;还是一个函数一个函数的…

微信公众号生成带参数的二维码加上logo

上次&#xff0c;记录的《用php生成微信公众号带参数的二维码demo》 这次&#xff0c;加上logo显得正规一点&#xff0c;起码看起来不像诈骗二维码 接上&#xff0c;上次的公众号二维码&#xff08;远程二维码地址&#xff09; // $wx_code ‘https://mp.weixin.qq.com/cgi-b…

【JVM的相关参数和调优】

文章目录 JVM 调优的参数类型一、标配参数二、X参数三、XX参数 JVM 调优的常用参数 JVM 调优的参数类型 一、标配参数 这类此参数在jdk的各个版本之间很少会变化&#xff0c;基本不改变 java -version&#xff0c;查看当前电脑上的jdk的版本信息 java -help&#xff0c;查看…

Typora上传图片失败PicGo

起初我是在Typora中点击一键上传图片&#xff0c;结果如下&#xff0c;报错。可是我找了半天也没错啊。 最后发现原来是一个图片的命名问题&#xff0c;名字太过于复杂&#xff0c;PicGo识别不出&#xff0c;一个图片报错导致其它也上传不了。 我把它复制到其它文件夹之后&…

Jetson_yolov8_解决模型导出.engine遇到的问题、使用gpu版本的torch和torchvision、INT8 FP16量化加快推理

1、前情提要 英伟达Jetson搭建Yolov8环境过程中遇到的各种报错解决&#xff08;涉及numpy、scipy、torchvision等&#xff09;以及直观体验使用Yolov8目标检测的过程&#xff08;CLI命令行操作、无需代码&#xff09;-CSDN博客和YOLOv8_测试yolov8n.pt&#xff0c;yolov8m.pt训…

Qt实现复杂列表

Qt实现复杂列表 界面效果layeritemdelegate.hlayeritemdelegate.cpplayertablemodel.hlayertablemodel.cpplayertableview.hlayertableview.cppmainwindow.hmainwindow.cpp 界面效果 layeritemdelegate.h #ifndef LAYERITEMDELEGATE_H #define LAYERITEMDELEGATE_H#include &l…