梧州市网站建设_网站建设公司_Sketch_seo优化
2026/1/16 13:31:13 网站建设 项目流程

Docker学习手册

本文将阐述如下内容:

——docker基本入门:虚拟化与虚拟机

——docker的虚拟机部署

——docker与jumpserver

在此感谢大家的阅读,感谢CSDN为广大学习者提供分享交流平台,感谢知识。

docker基本入门:虚拟化与虚拟机

在计算机技术中,虚拟化技术是一种资源管理技术。它可以将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分割、组合为一个或多个电脑配置环境。需要注意的是,这些资源的新虚拟部分不受现有资源的架设方式,地域或物理配置所限制(参考自维基百科)。

这段话说明了虚拟化的几个优势:

一是干净。在我们利用虚拟化技术分割电脑配置环境之后,各环境相对独立,我们可以利用多环境跑不同的配置,减少数据的相互干涉,从而有一个更干净的环境。

二是便于管理。利用这种资源管理技术可以更直观地对我们的数据进行载入,更改和迁移。

三是可以打破一部分硬件的限制。因为这些资源部分不受现有资源的限制,即使我们电脑的配置很低,也可以利用虚拟化技术使用更高的配置。

所以利用虚拟化技术,我们虽然只有一台计算机,却可以通过分割,组合同时有几台计算机的独立干净环境。它的实现非常简单,就是在硬件与操作系统之间增加一个“虚拟化层”,对物理资源进行拦截、模拟、调度和隔离。

传统虚拟化

接下来我将讲一个vmware实现虚拟化的例子,首先,我将简单介绍一下vmware。

Vmware想必大家都不陌生,VMware 是一套虚拟化技术和产品的统称。核心作用是在一台物理服务器上,运行多台相互隔离的虚拟服务器(虚拟机)。

接下来我将阐释vmware如何运行虚拟服务器,并实现虚拟化。

在此之前,我想介绍一下Hypervisor。

Hypervisor(虚拟机监控器) 是一种虚拟化核心软件层,作用是把一台物理服务器的硬件资源(CPU、内存、磁盘、网络等)抽象、隔离并分配给多个虚拟机(VM),让多套操作系统能够同时、安全地运行在同一台物理硬件上。

换言之,Hypervisor相当于一个机器的过渡层,在Vmware实现虚拟化的过程中,Hypervisor发挥着至关重要的作用。

其实Vmware实现虚拟化只做了三件事情:

1.让Hypervisor接管硬件最高权限

在一台没有虚拟化的物理服务器上,操作系统内核直接运行在 CPU 的最高特权级,拥有对 CPU、内存、设备的完全控制权。但当需要在同一台物理机上同时运行多个操作系统时,这种模式就行不通了,因为最高权限只能有一个主体。此时,我们需要让Hypervisor接管硬件的最高权限。一旦 Hypervisor 启动并接管系统,所有物理硬件资源的最终控制权都归它所有。这一步的本质是:把“操作系统直接控制硬件”的模式,变成“操作系统先向 Hypervisor请求,由Hypervisor决定”的模式。意义在于把操作系统 = 硬件主人的地位,降级为硬件的使用者,而让 Hypervisor 成为真正的硬件管理者,这是实现多系统共存、强隔离、高可靠和平台级资源治理至关重要的一步。

2.让虚拟机“假装”拥有完整硬件

在虚拟机内部运行的操作系统,必须保持原有设计不变。它必须认为自己拥有一整套完整的计算机硬件,否则无法正常启动和运行。

在 CPU 层面,虚拟机看到的是多个虚拟 CPU。Hypervisor 把这些虚拟 CPU 映射到物理 CPU 的时间片上轮流执行,让虚拟机感觉自己始终在运行。

在设备层面,大多数虚拟机使用的是虚拟设备而非真实硬件。例如虚拟磁盘、虚拟网卡。虚拟机向这些设备发送的读写请求,实际上由 Hypervisor 转换为对真实硬件或文件的操作。对于虚拟机来说,这一过程是完全透明的。

简单概括,Hypervisor将虚拟机向设备发送的读写请求转化为对真实硬件或文件的操作,同时让虚拟机感觉自己始终在运行。实现了让虚拟机“假装”拥有完整硬件。这是实现虚拟化的重要步骤。

3.由 Hypervisor 统一调度和隔离资源

当多台虚拟机同时运行在一台物理服务器上时,最重要的问题有两个:

一是如何公平、高效地分配资源,

二是如何保证它们之间互不干扰。

Hypervisor 负责对所有硬件资源进行统一调度和管理,不仅整合了虚拟机的资源,也做到更干净,高效地执行操作。从而实现多台虚拟机共享同一套物理硬件,但在逻辑上完全隔离,行为上如同运行在不同的物理服务器上。

以此为例,虚拟化可以打破实体结构间的不可切割的障碍,使用户可以比原本的配置更好的方式来应用这些电脑硬件资源。一般所指的虚拟化资源包括计算能力和资料存储。

对于docker与传统虚拟化

传统虚拟化:一台物理机,变成多台完整的虚拟电脑

Docker(容器):一台物理机,共用一个内核,跑多个隔离的应用

传统虚拟化(VM)是多台主机各自有一个内核,作为硬件级虚拟化存在。

docker则为多台主机共用一个内核,作为操作系统级虚拟化存在。

传统虚拟化解决的是“如何把一台物理机变成多台机器”,虚拟机适合承载数据库、核心业务系统、需要强安全隔离或需要特定内核特性的应用,但代价是资源开销大、启动慢、运维成本高。而 Docker 解决的是“如何在同一操作系统上高效运行大量应用。Docker 由于共享内核,应用与操作系统内核之间的边界被大幅弱化。应用只需要关注自身和依赖库,不再关心底层系统环境,部署单位从“服务器”变成了“应用”。这使得应用可以快速启动、快速复制、快速销毁,极大提高了资源利用率和交付效率。但代价是容器之间的隔离强度依赖内核本身,且容器必须与宿主机内核类型一致。

言简意赅,如果传统虚拟机是将机器分隔为一个个独立的机器,docker就是将机器中的空间分成小块。使得开发更加高效。我们可以在Ubuntu或者主机中跑docker,传统虚拟机与docker作为协作关系而存在。

docker的虚拟机部署

首先,我们需要一个干净的虚拟机,这样可以避免版本冲突,也是生产环境的要求。接下来我们以Ubuntu为例,阐述对docker的部署。要求机器可以联网,最好是NAT模式。

大佬随意。

版本要求:Ubuntu 20.04 / 22.04 / 24.04

内存:2GB

磁盘:20GB+

关于网络问题,作者踩过很多坑,这里进行特别说明。

我们拉取安装包时,往往需要连接github。

检查网络是否通畅:

Ping github.com

如果报错,可检查443端口和22端口。

检查22端口:

sudo systemctl status ssh

检查443端口:

sudo ufw status

检查防火墙权限:

sudo ufw status verbose

如果依旧报错,可手动修改对应的.conf文件,放行github

如果你的机器是NAT模式,需要检查主机是否能ping通github。如果不行,可检查vpn,常见的设置例如局域网连接是否开启。

一切都没问题,开始愉快地部署docker吧!

首先老操作,更新系统软件源

sudo apt update

安装依赖

sudo apt install -y \ ca-certificates \ curl \ gnupg \ lsb-release

#说明

ca-certificates:HTTPS 证书

curl:下载 Docker 官方文件

gnupg:验证 Docker 包签名

lsb-release:识别 Ubuntu 版本

接下来就可以添加官方软件源了哈

echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" \ | sudo tee /etc/apt/sources.list.d/docker.list

依旧更新软件源

sudo apt update

安装docker相关组件

sudo apt install -y \ docker-ce \ docker-ce-cli \ containerd.io \ docker-buildx-plugin \ docker-compose-plugin

启动/关闭docker服务

sudo systemctl start docker sudo systemctl enable docker

查看docker状态

systemctl status docker

写入docker-compose.yml文件

最好创建一个单独的文件夹,然后创建docker-compose.yml

运行

sudo nano (你的路径)/docker-compose.yml

然后写入

version: "3.8" services: nginx: image: nginx:alpine ports: - "80:80"

Ctrl+O保存,然后按enter,接着Ctrl+X退出

后台运行

docker compose up -d

注意:运行此命令必须cd到yml文件对应的文件夹。

以上,如果都没报错,我们便成功安装好了docker

docker与jumpserver

JumpServer 是一套堡垒机系统,用于

1.统一登录入口

2.集中账号与权限控制

3.审计所有运维操作(SSH / Web / 数据库)

Docker 不是 JumpServer 的功能,而是 JumpServer 的一种运行方式。用docker装jumpserver,由于容器隔离,可以有效避免冲突。即使你的环境不那么干净,也可以顺利使用jumpserver。Jumpserver可以通过宿主机管理容器内服务。

以下我将参考官方文档介绍jumpserver的部署

官方文档链接https://www.jumpserver.com/docs?utm_source=chatgpt.com

爱来自chatgpt,ai是人类的好朋友。

以下是省流版,其实非常简单

首先在opt目录下创建一个名为jumpserver的文件夹。以后所有 JumpServer 操作,都在这个目录下进行。

然后cd到此文件夹,接着运行

curl -sSL https://github.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh | bash

拉取最新版安装包

然后根据你的IP地址,在web上进行登录

一般默认的账号:admin密码:ChangeMe注意区分大小写

别急,还没完,以下是常见命令。我们需要cd到jumpserver目录下进行

  1. 启动JumpServer ./jms start
  2. 停止JumpServer ./jms stop
  3. 重启JumpServer ./jms restart
  4. 查看状态./jms status
  5. 查看日志./jms logs
  6. 更新 JumpServer./jms upgrade

其中,出于排错的目的,查看日志至关重要。

以上是本文的全部内容,部分参考自chatgpt,维基百科,官方文档。ai是人类的好朋友。为了更便于阅读,也穿插作者的原创。谢谢大家的阅读

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询