黑客云技术基础之(网恋避险)附照妖镜
云技术介绍
无论是防御还是进攻,强大的底层技术基础都是必要的 从防御的角度,了解底层技术才能知道如何构建防御体系 从进攻的角度,了解底层技术才能发现漏洞并且开发漏洞利用 攻击者和防御者都必须了解对方的运作方式
一、云技术历史
从前构建系统需要购买设备,租用数据中心机柜,搭建基础设施。 随着处理器进化升级,一套数据中心机柜用虚拟机可以将一台机器的资源分成多台机器提高资源利用率,灵活可拓展,从裸机基础设施到虚拟化基础设施容器化进一步提高效率,实现服务器,网络和存储的虚拟交付。 而最新一代的基础设施我们称为“云”,它不是单一的技术,而是技术的集合。
云技术的历史始于 1960 年代,早期的计算机资源共享思想为后来的云计算奠定基础。1990 年代,虚拟化技术和互联网的普及推动了云计算的雏形出现。2002 年,亚马逊推出了 Amazon Web Services(AWS),开启了按需计算资源租用的商业化进程。2006 年,AWS 推出 Elastic Compute Cloud(EC2),使云计算服务正式进入市场,并为 IaaS(基础设施即服务)奠定了基础。
进入 2010 年代,云计算逐渐向全球扩展,微软 Azure、Google Cloud 等平台相继推出,云计算服务变得多样化,包括 PaaS(平台即服务)和 SaaS(软件即服务)。同时,企业开始探索混合云架构,以满足不同的业务需求。到 2020 年代,云计算与人工智能、大数据等新兴技术融合,成为推动企业数字化转型和创新的关键技术,云计算已经广泛应用于各行业,形成了全球化的产业生态。
二、云服务
云服务(Cloud Services)指的是通过互联网提供的各种计算资源和服务,包括存储、计算、网络、软件等,用户可以按需访问和使用,而无需拥有和维护物理硬件基础设施。云服务使得企业和个人可以通过网络远程使用强大的计算能力和存储资源。
主要特点 按需付费:用户按使用量支付,不需要购买和维护硬件。 远程访问:通过互联网访问服务,无需关注底层的基础设施。 弹性扩展:根据需求动态调整计算能力和存储资源。
三种主要类型: IaaS(基础设施即服务):提供基础的计算资源,如虚拟机、存储、网络等。用户可以根据需求自定义配置和管理资源。例如,亚马逊的 AWS、微软的 Azure、阿里的阿里云等。 PaaS(平台即服务):提供开发和部署应用程序的平台,用户可以在此平台上构建、测试和运行应用程序,而无需管理底层基础设施。Google App Engine 和 Microsoft Azure 的 PaaS 服务是典型例子。 SaaS(软件即服务):提供完整的软件应用程序,用户可以直接通过互联网使用,而无需关心软件的安装、维护和更新。例如,Google Workspace(原 G Suite)、Microsoft Office 365、Salesforce 等。
三、公有云服务商
公有云服务商是指提供基于互联网的云计算服务的公司,它们将计算资源、存储、网络和其他服务托管在自己的数据中心,并通过互联网向公众或企业客户提供服务。公有云的特点是用户可以按需购买服务,不需要自己建设和维护基础设施。
以下是一些主要的公有云服务商: 亚马逊 AWS (Amazon Web Services) 概述:AWS 是全球最大的公有云平台之一,提供从计算、存储、数据库到人工智能、物联网等各类云服务。AWS 的服务覆盖范围广泛,包括弹性计算(EC2)、对象存储(S3)、数据库(RDS)、人工智能(SageMaker)等。
优势:全球数据中心覆盖广、服务种类多、可靠性高、成熟度好。
微软 Azure 概述:Azure 是微软的云计算平台,支持从虚拟机、数据库、存储到人工智能、大数据等多种服务。Azure 与微软的其他企业产品(如 Windows Server、SQL Server 等)有着深度集成,因此在企业市场上具有较强的竞争力。 优势:与微软产品兼容性好、混合云解决方案领先、全球数据中心分布广。
谷歌 Cloud Platform (GCP)
概述:GCP 是谷歌的云计算平台,提供计算、存储、机器学习、大数据等服务。谷歌在数据分析、机器学习和人工智能领域具有领先优势,GCP 利用这些技术为用户提供高效的服务。 优势:强大的数据分析和机器学习能力、开源支持(如 Kubernetes)、高度集成的 AI 服务。
阿里云 (Alibaba Cloud) 概述:阿里云是中国领先的公有云服务商,同时也是全球最大的公有云服务商之一。提供计算、存储、数据库、大数据、人工智能、CDN(内容分发网络)等服务。阿里云在中国及亚太地区的市场份额较高,并且扩展到全球市场。 优势:强大的国内市场基础、在大数据和人工智能方面的创新、全球化发展。
IBM Cloud 概述:IBM Cloud 提供包括虚拟机、数据库、AI、区块链、物联网等在内的全面云服务。IBM 云平台强调企业级客户的需求,尤其在混合云、人工智能和大数据解决方案上具有优势。 优势:强大的企业级支持、人工智能和大数据解决方案、混合云架构。
Oracle Cloud 概述:Oracle Cloud 提供数据库、计算、存储、人工智能、大数据等一系列服务,尤其在数据库和企业级应用解决方案方面具有强大优势。Oracle Cloud 特别适合那些需要高性能数据库和企业级应用的客户。 优势:强大的数据库和企业级应用支持、适合大型企业使用。
腾讯云 (Tencent Cloud) 概述:腾讯云是中国领先的云服务商之一,提供计算、存储、数据库、CDN、人工智能等云服务。腾讯云主要面向企业客户,广泛应用于互联网、游戏、电商等行业。 优势:强大的游戏、视频和社交平台支持、较强的国内市场基础。
华为云 (Huawei Cloud) 概述:华为云是华为公司推出的云计算服务平台,提供计算、存储、数据库、AI、大数据等服务。华为云尤其在 5G、IoT(物联网)和企业级应用领域有较强的技术优势。 优势:强大的技术研发背景、5G 和物联网支持、在中国市场的影响力。
DigitalOcean 概述:DigitalOcean 主要面向开发者和小型企业,提供简单易用的云计算服务,专注于虚拟私有服务器(Droplets)、存储和 Kubernetes 服务。其界面简洁,使用方便,价格较为亲民。 优势:简单易用、性价比高、适合初创公司和开发者。
Oracle Cloud 概述:Oracle Cloud 提供企业级的计算、存储、数据库及应用服务,特别适合大规模的企业应用部署,尤其在数据库领域有较强的技术积累。 优势:强大的数据库和企业级支持、集成度高。 这些云服务商通过全球数据中心网络提供服务,允许客户选择合适的地域来托管其应用或数据,以便提高性能、优化成本或满足合规要求。选择云服务商时,通常需要根据服务的功能、价格、支持和地域分布等多个因素来做出决策。
四、云分类
在云计算的领域,云的分类主要可以从服务模式、部署模式和功能需求等方面进行区分。不同的分类方式能够帮助我们从不同角度理解云计算的结构和应用。
1. 服务层级
IaaS (基础设施即服务) IaaS 是提供基础计算资源、存储、网络和虚拟化环境的服务。用户可以租用这些资源来构建和管理自己的应用,基本上只有计算资源、存储和网络的基础设施。 特点: 提供虚拟化的硬件资源,如虚拟机(VM)、存储、网络等。 用户可以自行安装和配置操作系统、开发环境、应用等。 具有最大的灵活性和控制性,但也需要更多的管理和配置。
PaaS (平台即服务) PaaS 提供的是一个应用开发平台,用户可以在平台上直接开发、运行和管理应用程序,而无需关心底层的硬件和操作系统。PaaS 为开发者提供开发、测试、部署和维护应用所需的工具和服务。 特点: 提供开发框架、数据库、缓存、应用服务器等组件。 用户无需关注操作系统、硬件或虚拟化层。 更加专注于应用开发、运行和维护。
SaaS (软件即服务) SaaS 提供的是完整的应用程序,用户可以通过互联网直接使用,无需进行安装、维护或管理。SaaS 是面向终端用户的应用级服务。 特点: 用户无需关心底层的硬件、操作系统、数据库等。 完整的、可使用的应用程序,用户通过互联网进行访问。 一般以订阅制收费,按使用量或功能模块付费。
- 云部署模式的分类 云部署模式指的是云计算的部署方式,通常有 公有云、私有云、混合云 和 社区云 四种。 公有云 (Public Cloud) 公有云是由第三方云服务提供商拥有并运营的云基础设施,云资源可以通过互联网向公众提供。公有云通常是按需付费的,适用于不需要高度定制和私密的企业和个人用户。 特点: 资源共享,多用户共用同一物理资源。 由云服务商管理,用户无需承担基础设施维护责任。 弹性和成本效益较高,但可能面临一定的安全隐私风险。
示例: Amazon Web Services (AWS) Microsoft Azure Google Cloud Platform (GCP) 阿里云
私有云 (Private Cloud) 私有云是专门为单一用户或组织构建的云环境,通常部署在企业的本地数据中心或由第三方托管。私有云能够提供更高的安全性和控制性,适合对数据隐私和合规性要求较高的组织。 特点: 云资源仅为单一用户或组织提供,具有更高的安全性和控制性。 适合需要定制化、专用资源和更高性能的企业。 部署和维护成本较高。
示例: OpenStack VMware vSphere IBM Cloud Private
混合云 (Hybrid Cloud) 混合云是一种结合公有云和私有云的云架构,允许企业在私有云和公有云之间迁移数据和应用,灵活应对不同工作负载和需求。混合云使企业能够在享受公有云弹性和低成本的同时,保护关键业务数据的安全性。 特点: 结合了公有云和私有云的优点,灵活性较高。 支持数据和应用在不同云环境之间迁移。 适合需要兼顾成本、灵活性与安全性的企业。
示例: Microsoft Azure Arc AWS Outposts Google Anthos
社区云 (Community Cloud) 社区云是由一组具有相似需求的组织共同使用的云环境。它们共享云基础设施,适用于具有共同政策、要求或合规性需求的多个组织。 特点: 云环境由多个组织共享,但满足其共同需求。 适用于具有相似需求、目标和安全要求的组织或行业。 成本共享,但管理和维护可能由多个组织共同承担。 示例: 行业云(如医疗、金融行业专用云)
- 按功能分类的云服务 除了服务模式和部署模式的分类,还有一些云服务按功能来进行划分。这些服务满足不同场景和需求,如计算、存储、数据库、网络等。
计算服务 提供虚拟机、容器、计算实例等资源,支持高性能计算需求。 存储服务 提供文件存储、对象存储、块存储等多种存储解决方案。 数据库服务 云提供商提供的关系型数据库(如 MySQL、PostgreSQL)和非关系型数据库(如 NoSQL、Graph DB)服务。 网络服务 包括虚拟私有网络(VPC)、内容分发网络(CDN)、负载均衡、DNS 等。 AI/机器学习服务 提供机器学习模型、人工智能应用开发和部署平台。 安全服务 包括身份认证、访问控制、加密、DDoS 防护等。 云计算的分类方式有多种,可以根据 服务模式(如 IaaS、PaaS、SaaS 等)、部署模式(如公有云、私有云、混合云等)和 功能需求(如计算、存储、网络等)来进行细分。选择合适的云服务和部署模式,取决于企业的业务需求、预算、技术能力以及对安全和隐私的要求。
五、云架构
云架构(Cloud Architecture)是指设计和实现云计算环境中各个组件及其相互关系的方式。它包括硬件、软件、服务、网络以及它们如何协同工作,以支持云应用的开发、部署、运行和维护。云架构涉及多个层面,包括基础设施、平台、应用程序、数据和安全等,旨在实现高效、灵活、可扩展和高可靠的云计算环境。 以下是云架构的主要组成部分和关键概念:
- 云架构的主要组成部分 云基础设施 (IaaS) 云基础设施是云架构的核心部分,提供基础的计算、存储、网络和虚拟化功能。通过 IaaS,用户可以动态租用虚拟化的硬件资源,如虚拟机、存储、负载均衡和网络连接等,构建自己的云环境。 计算资源:虚拟机(VM)、容器、裸金属服务器等。 存储资源:对象存储、文件存储、块存储等。 网络资源:虚拟私有网络(VPC)、负载均衡、DNS、内容分发网络(CDN)等。
平台层 (PaaS) 平台即服务(PaaS)提供开发、测试和部署应用的工具和环境,屏蔽了底层硬件和操作系统的管理。PaaS 层让开发者集中精力于应用开发和创新,无需关心基础设施的维护。 开发工具:集成开发环境(IDE)、版本控制系统、CI/CD(持续集成/持续交付)工具等。 应用服务:应用服务器、数据库、缓存、消息队列等。 监控和分析工具:日志管理、性能监控、业务分析等。
应用层 (SaaS) SaaS 提供的是完整的应用程序,用户可以通过互联网直接使用。这一层包括各种业务软件、协作工具等,所有应用都在云端运行,用户无需自己安装和维护。 Web 应用:如电子邮件、办公套件、CRM 系统等。 企业应用:如财务管理、ERP 系统等。 协作工具:如在线文档编辑、会议软件等。
- 云架构的设计模式 微服务架构 (Microservices Architecture) 微服务架构是一种将应用程序拆分为多个小型、独立的服务的方法,每个微服务负责应用的一部分功能。每个微服务可以独立部署、更新和扩展。 优点:松耦合,易于扩展和维护。 挑战:服务间通信和数据一致性管理较为复杂。 无服务器架构 (Serverless Architecture) 无服务器架构让开发者只需编写业务逻辑,而不必管理服务器和基础设施。云提供商负责自动分配计算资源和运行代码,用户按实际使用量付费。
优点:无需关注基础设施,按需计费,极大降低了运维成本。
挑战:适用场景受限,可能会面临冷启动问题。
事件驱动架构 (Event-Driven Architecture) 事件驱动架构基于事件的发布和订阅机制,服务之间通过消息队列或事件总线进行通信。事件驱动架构特别适合处理高并发、异步的任务。 优点:解耦,提高系统的可扩展性和灵活性。 挑战:事件处理的可靠性和顺序性需要额外关注。
-
云架构的服务层次 云架构设计时,通常分为多个层次,每个层次负责不同的功能和服务。常见的云架构服务层次包括: 前端层:用户接口层,通常是 Web 或移动应用,通过 API 与后端交互。 应用层:处理业务逻辑和应用功能的层面,可以包括微服务或传统的单体应用。 数据层:管理数据库、缓存、文件存储等数据存储服务。 基础设施层:提供计算、网络、存储等基础设施服务,通常通过 IaaS 和 PaaS 提供。
-
常见的云架构工具和技术 云架构的实现通常依赖于一系列工具和技术,常见的有: 容器化和编排工具:如 Docker、Kubernetes。 配置管理工具:如 Terraform、Ansible、Chef、Puppet。 监控和日志管理:如 Prometheus、Grafana、ELK Stack(Elasticsearch, Logstash, Kibana)。 CI/CD 工具:如 Jenkins、GitLab CI、CircleCI。 负载均衡器:如 AWS ELB、Nginx、HAProxy。 服务网格:如 Istio、Linkerd。
云架构是云计算环境中各个组件的组织方式,它要求设计师在满足弹性、可扩展、高可用和安全的基础上,选择适合的服务和技术来构建云平台。良好的云架构设计能够提高应用的性能、可靠性和灵活性,帮助企业降低成本、提高效率,最终实现数字化转型的目标。
六、安全控制
云技术安全控制是保障云计算环境中数据、应用、服务以及基础设施安全的一系列措施和实践。云计算本身由于其开放性、共享性和跨地域特性,带来了不同于传统 IT 基础设施的安全挑战。因此,在云环境中,安全控制尤为重要,需要采取有效的策略和技术手段来保护敏感信息、确保服务的高可用性、以及防止非法访问和数据泄露等风险。
身份和访问管理(IAM) 身份和访问管理确保只有经过授权的用户能够访问云资源,且访问权限与其角色和任务需求相匹配。IAM 控制包括用户身份验证、授权和审计。 身份认证:使用多因素认证(MFA)、单点登录(SSO)、生物识别等增强身份认证的安全性。 角色访问控制(RBAC):通过角色定义用户权限,确保用户只能访问其职责范围内的资源。 最小权限原则:根据用户需求,尽量减少不必要的访问权限。
数据加密 数据加密是保护云计算环境中数据安全的重要手段。无论是数据在传输过程中的加密,还是数据在静态存储时的加密,都必须实施严格的加密控制。
传输加密:使用 SSL/TLS 协议对数据传输过程进行加密,避免数据在传输过程中被窃取或篡改。
存储加密:确保云存储中的数据采用 AES 等强加密算法进行加密,防止在物理或逻辑攻击下泄漏数据。
密钥管理:管理和保护加密密钥,防止密钥泄露或被滥用。
网络安全控制 云环境中的网络安全控制旨在保护网络中的数据流通,防止未经授权的访问,及早检测和防范网络攻击。
虚拟私有网络(VPC):通过创建虚拟网络并实施严格的网络访问控制策略,隔离不同的云资源和服务。
防火墙:通过网络防火墙控制流量进出,阻止恶意流量,设定规则过滤不必要的流量。
入侵检测与防御系统(IDS/IPS):监控和分析网络流量,识别并响应潜在的安全威胁。
零信任架构(Zero Trust Architecture) 零信任架构的核心思想是“永不信任,始终验证”,即对所有内部和外部访问者都持怀疑态度,且每次访问都需要进行身份验证、权限验证和安全验证。
内部和外部同等对待:不再依赖传统的内部网络信任模型,即使是内部访问者也需要经过严格验证。
细粒度访问控制:确保每个用户或系统的访问权限最小化,并基于具体的任务和上下文进行动态调整。
多层防御(Defense-in-Depth) 多层防御是一种分层安全控制的策略,通过在多个层次上实施安全措施,确保即使某一层的防护失效,其他层仍能提供保护。
边界防护:通过防火墙、网关等限制外部访问。
应用防护:加强应用程序级别的安全,如输入验证、Web 应用防火墙(WAF)。
数据防护:实施数据加密、数据丢失防护等。
云技术安全控制是一个多层次、多维度的体系,涵盖了从基础设施到应用、数据、身份、访问等各个方面。随着云计算的普及和复杂化,云安全变得越来越重要。企业和云服务商需要不断更新安全控制策略和技术,以应对日益复杂的安全威胁。
七、容器与云
1. 容器
容器是一种轻量级的虚拟化技术,将应用及其依赖环境打包在一起,保证在不同环境中一致运行。容器比虚拟机更高效、资源占用少,启动迅速,适合云平台部署。
2. 云计算
云计算通过互联网提供弹性计算资源(如存储、计算能力)。它为用户提供按需、可扩展的资源,支持高可用、自动化运维。
3. 容器与云计算的结合
容器在云计算平台中能有效利用资源、快速扩展。云平台(如 AWS、Azure、Google Cloud)为容器提供托管服务(如 Kubernetes),使得容器部署、管理更简单、自动化。
4. 优势
高效利用资源:容器启动快,消耗少,适合大规模云环境。 弹性伸缩:云平台支持容器动态扩展,应对流量变化。 自动化运维:通过容器编排工具(如 Kubernetes),云平台能自动管理容器的部署和扩展。
5. 应用场景
微服务架构:容器适合拆分和独立部署微服务。 CI/CD:容器化简化开发、测试和部署流程。 跨平台兼容:容器确保应用在开发、测试、生产环境中的一致性。 总的来说,容器和云计算的结合提升了开发、部署和运维的效率,但也需要解决一些管理和安全方面的挑战。
在 ubuntu 上生成 docker 容器
常用命令
docker pull 镜像名称:版本 # 从仓库拉取镜像
docker run -d -p 物理机端口号:容器端口号 镜像名称:版本 # 运行镜像,生成容器
docker push 仓库地址/镜像名/tag # 推送镜像到仓库
docker build dockerFile 文件路径 # 构建镜像
docker commit # 生成镜像
docker ps -a -n=1 # -n 显示最近创建的容器 -n=2 显示最近创建的 2 个
docker exec it 容器 id /bin/bash # 进入容器的命令行
退出容器
exit; #容器停止运行退出
Ctrl + P + Q # 容器不停止运行退出
docker logs -tf --tail 10 容器 id # 查看日志信息输出最新 10 行 -tf 时间戳 基本格式
删除容器
docker rm 容器 id # 删除指定容器 id,运行中的删除增加 rm -f
docker rm -f &(docker ps -aq) # 删除所有的容器,查询条件
容器的启动和停止
docker start 容器 id # 启动容器 restart # 重启 stop # 停止 kill # 强制干掉
ubuntu22.04 安装 Docker
sudo apt-get update
一开始无法安装,显示域名暂时解析失败
需要修改以下文件
sudo vi /etc/resolv.conf
进入编辑模式(按 i 键)。
在文件中添加以下行,指定 DNS 服务器地址(例如,使用 114.114.114.114):
nameserver 114.114.114.114
然后即可正确解析域名
sudo apt-get install docker.io
检查是否安装成功 docker -v
启用 Docker
启动成功后,没有错误信息输出。
可以使用
sudo docker ps 命令来验证 Docker 是否正常启动。
sudo service docker start
sudo docker ps
换源,不要使用阿里源
首先,需要找到 daemon.json 文件。在 Linux 系统中,该文件通常位
于 /etc/docker/ 目录下。如果没有这个文件,可以使用文本编辑器(如 vi 或
nano )创建一个。
使用 vim 编辑器进行换源
{ "registry-mirrors": [ "5tqw56kt.mirror.aliyuncs.com", "docker.hpcloud.cloud", "docker.m.daocloud.io", "docker.1panel.live", "mirrors.ustc.edu.cn", "docker.chenby.cn", "docker.ckyl.me", "mirror.azure.cn", "hub.rat.dev" ] }
vi /etc/docker/daemon.json 使用这条命令进行换源 方法无效换其他方法
一般情况下,将“ /etc/apt/sources.list ”文件中 Ubuntu 默认的源地址“ archive.ubuntu.com/ ”替换为 “mirrors.ustc.edu.cn/ ”即可。 可使用如下命令: sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list 只改了一部分,需要全部替换,重启后生效
apt-get update更新安装,务必要更新
不换源或者换的源可能无法在 Docker 中安装 CentOS 7
拉取 CentOS 7 的官方 Docker 镜像: sudo docker pull centos:7 不换源或换的源不能用会安装失败
docker ps -a 查看 docker 进程
sudo docker run -it --name my_centos7 centos:7 /bin/bash
在这个命令中:
-it 选项允许你交互式地运行容器,会占用终端。OR 或者 -d 选项(Detached,分离模式),容器就会在后台启动并运行,不会占用当前终端 --name my_centos7 给容器命名为 my_centos7。 执行上述命令后,你会进入到一个新的 CentOS 7 容器中,可以在这个环境中执行 CentOS 7 系统的命令。 centos:7 指定使用的镜像。 /bin/bash 启动容器后执行的命令,这里启动了 bash 让你能与容器交互
输入 exit 就会退出容器
docker start my_centos7
docker stop my_centos7
docker exec -it my_centos7 bash 再次进入容器
删除镜像:
docker rm -f 镜像 id
容器与云
创建 Apache 容器后台运行
docker container run -d --rm -p 8080:80 httpd
-d: 以分离模式(后台运行)启动容器。 --rm: 容器退出后自动删除容器。 -p 8080:80: 将主机的 8080 端口映射到容器的 80 端口。 -v /home/user/webroot/:/usr/local/apache2/htdocs/: 将主机的/home/user/webroot/目录挂载到容器的/usr/local/apache2/htdocs/目录。 --network host:使用宿主机的网络模式,这意味着容器将直接使用宿主机的网络栈,与宿主机共享网络接口。这样可以避免端口映射的复杂性,并且容器可以直接使用宿主机的 IP 地址和端口进行通信。也就是没有上面的端口映射 httpd: 使用 httpd 镜像来创建容器。
第一次运行镜像的容器时都会有 Unable 这是很常见的情况,因为本来就没有,所以需要 Docker 去网上 pull
使用 curl 命令检查搭建是否成功
curl localhost:8080
docker container ls 查看所有容器
常用的 Docker 命令:
镜像操作
- 搜索镜像 -
docker search [镜像名称]:在 Docker Hub 上搜索指定名称的镜像。例如,docker search ubuntu会搜索名为 ubuntu 的镜像,它会列出包含该关键字的所有镜像以及相关信息,如镜像的描述、星级评分、是否官方等,帮助你找到适合你需求的镜像。 - 拉取镜像 -
docker pull [镜像名称:标签]:从镜像仓库(默认是 Docker Hub)下载指定的镜像。例如,docker pull ubuntu:latest会下载最新版本的 ubuntu 镜像。如果不指定标签,默认会拉取最新的(latest)镜像。你可以根据需要指定特定的标签来获取特定版本的镜像,如docker pull ubuntu:18.04。 - 查看本地镜像 -
docker images:列出本地已下载的所有镜像。它会显示镜像的仓库名、标签、镜像 ID、创建时间以及镜像大小等信息,方便你了解本地镜像的情况,例如查看已下载的 ubuntu 镜像的详细信息。
容器操作
- 创建并启动容器 -
docker run -itd --name [容器名称] [镜像名称:标签]:创建一个新的容器并在后台运行。例如,docker run -itd --name myubuntu ubuntu:latest会基于最新版本的 ubuntu 镜像创建一个名为 myubuntu 的容器,并在后台以交互模式(-it)运行。这里的-d表示在后台运行容器,--name用于指定容器的名称,方便后续对容器进行操作和管理。 - 查看运行中的容器 -
docker ps:列出当前正在运行的容器。它会显示容器的 ID、名称、使用的镜像、创建时间、运行状态以及端口映射等信息,让你快速了解哪些容器正在运行以及它们的基本状态。 -docker ps -a:列出所有容器,包括正在运行和已经停止的容器。这在你需要查看历史上创建过的所有容器时非常有用,例如查看之前运行过但现在已经停止的容器的详细信息。 - 停止容器 -
docker stop [容器名称或ID]:停止正在运行的指定容器。例如,docker stop myubuntu会停止名为 myubuntu 的容器。你可以使用容器名称或者容器 ID 来指定要停止的容器,容器 ID 是一个唯一标识容器的字符串,可以通过docker ps命令查看。 - 启动容器 -
docker start [容器名称或ID]:启动已经停止的容器。例如,docker start myubuntu会再次启动名为 myubuntu 的容器,使其恢复运行状态。 - 进入容器 -
docker exec -it [容器名称或ID] [命令]:进入正在运行的容器并执行指定命令。例如,docker exec -it myubuntu bash会进入名为 myubuntu 的容器,并在容器内启动一个 bash 终端,这样你就可以在容器内部执行各种命令,就像在本地主机上操作一样。 - 删除容器 -
docker rm [容器名称或ID]:删除指定的容器。例如,docker rm myubuntu会删除名为 myubuntu 的容器。注意,在删除容器之前,需要先停止容器,否则删除操作可能会失败。如果要强制删除正在运行的容器,可以使用docker rm -f [容器名称或ID],但这种方式可能会导致数据丢失,应谨慎使用。
其他操作
- 查看容器日志 -
docker logs [容器名称或ID]:查看指定容器的日志输出。例如,docker logs myubuntu会显示名为 myubuntu 的容器的日志信息,这对于排查容器运行过程中出现的问题非常有帮助,你可以查看容器启动过程、应用程序运行时的输出等日志内容。 - 查看 Docker 系统信息 -
docker info:显示 Docker 系统的详细信息,包括 Docker 版本、操作系统信息、容器和镜像的数量、存储驱动等。这有助于你了解 Docker 的整体运行环境和配置情况,例如查看当前 Docker 安装的版本以及系统中总的镜像和容器数量等信息。
Podman Podman 是 Docker 的替代产品,无守护进程。命令一样 查看特定容器的进程信息 docker top <container_name_or_id> //容器名称或 ID
安装 podman
apt install podman
然后配置源,这里可以选择复制 docker 的配置文件 daemon.josn 中的源,编辑 podman 的源文件/etc/containers/registries.conf,添加下面代码
[registries.search] registries = ['5tqw56kt.mirror.aliyuncs.com', "docker.hpcloud.cloud", "docker.m.daocloud.io", "docker.1panel.live", "mirrors.ustc.edu.cn", "docker.chenby.cn", "docker.ckyl.me", "mirror.azure.cn", "hub.rat.dev" ]
运行容器
sudo podman run -d --rm --network host httpd
创建空 pod 之前,还要安装 catatonit,不然会无法创建
apt-get install catatonit
创建空 pod,这里的 pod 相当于 docker 中的容器
podman pod create --name who
--name who:指定 Pod 的名称为 who。
在 pod 中运行容器
podman run -d --pod who httpd
在上面创建的 pod 名为 who 中,启动 httpd 容器
podman exec -it xxxxx /bin/bash
在 pod 中运行可找东西的工具并互动
首先拉取镜像 alpine/curl
podman pull alpine/curl
podman run -pod wha -it alpine/curl /bin/bash
“alpine/curl”:指定要使用的容器镜像,这里是一个基于 Alpine Linux 且带有 curl 工具的镜像。
照妖镜 更新源 bash <(curl -sSL gitee.com/SuperManito…) #国内源 选第 5 个,一路回车即可,不要输入 y/n bash <(curl -sSL linuxmirrors.cn/main.sh) --abroad #海外源 详细从:linuxmirrors.cn/use/查看
安装宝塔
yum install -y wget && wget -O install.sh download.bt.cn/install/ins… && sh install.sh
---意义不明的文字---
username: ufhjxvyc
这样说明安装成功
==================================================================
登录账号 上传文件
添加站点
添加自己购买的域名
设置强制 SSL 证书
设置-SSL-申请 Let's Encrypt 证书 申请证书域名要用免备案激活的域名,设置域名 A 记录指向 ip 地址
或者搜一下怎么弄 ssl 证书,自己导入一下,使用这个工具得要 ssl 证书
将文件解压移动到网站目录下
修改 sc.php
然后测试
假如你的服务器 ip 地址:127.0.0.1 构建 url:https://127.0.0.1/ 将要修改的地方改成'https://127.0.0.1/'就行 修改 108 行:kd.href = 'https://127.0.0.1/?id='+myid.value+'&url='+url.value; 110 行:kd.innerText = 'https://127.0.0.1/?id='+myid.value+'&url='+url.value; 142 行: 保存
访问:https://你服务器 ip 地址/sc.php 输入 id-生成链接-新窗口打开链接