工具学习_Docker

0. Docker 简介

Docker 是一个开源平台,旨在帮助开发者构建、运行和交付应用程序。它通过容器化技术将应用程序及其所有依赖项打包在一个标准化的单元(即容器)中,使得应用程序在任何环境中都能保持一致的运行效果。Docker 提供了一个轻量级、高效且易于使用的方式来管理和部署应用,从而简化了应用的开发和运维流程。无论是在本地开发环境、测试环境还是生产环境中,Docker 都能确保应用的可移植性和稳定性。

1. Docker 和虚拟机的区别

Docker 和虚拟机(VM)在虚拟化方式和资源使用上存在显著区别。虚拟机通过硬件虚拟化在物理机器上创建完整的虚拟操作系统,每个虚拟机都有独立的操作系统,资源消耗较大且启动较慢。与此不同,Docker 使用容器化技术直接在宿主操作系统上运行,容器共享宿主操作系统的内核,因而更加轻量、启动速度更快,资源消耗更低。虽然虚拟机提供更强的硬件级别隔离,Docker 容器则依赖操作系统内核进行隔离,隔离性相对较弱,但在大多数应用场景下已足够。总体而言,Docker 更加高效,适合微服务和快速部署,而虚拟机则适用于需要完整操作系统隔离的场景。

2. 基本原理和概念

2.1 Docker 架构

Docker 的架构由三部分组成:客户端(Client)、服务端(Docker Host)以及镜像仓库(Registry)。客户端是用户与 Docker 的交互接口,通过命令行工具(如 docker run、docker build、docker pull)向 Docker 守护进程(Daemon)发送请求。服务端是 Docker 的核心运行环境,包括守护进程、镜像和容器,其中守护进程负责接收客户端请求并管理容器的生命周期(创建、运行、停止等),镜像是容器的基础,容器则是镜像的运行实例。镜像仓库用于存储和分发 Docker 镜像,支持公共(如 Docker Hub)或私有仓库,用户可以通过 docker pull 从仓库拉取镜像,或通过 docker push 将本地镜像上传到仓库。

2.2 基本概念

镜像(Images):镜像是一个只读模板,包含运行容器所需的应用程序和依赖,例如基于 Ubuntu 的镜像可以预装 MySQL 或 Nginx。

容器(Containers):容器是镜像的实例,提供独立的运行环境,通过共享宿主操作系统内核实现轻量级隔离和快速启动。

命令操作:Docker 提供了常用命令,包括 docker build 用于构建镜像,docker run 用于启动容器,docker pull 用于从仓库拉取镜像。

镜像仓库(Registry):镜像仓库是存储 Docker 镜像的地方,如 Docker Hub 或私有仓库,包含 Redis、MongoDB 等常见应用的官方镜像。

2.3 运行流程

Docker 的运行流程包括用户通过客户端执行命令(如 docker build、docker run),由 Docker 守护进程接收并处理这些命令,完成镜像的创建或容器的启动。如果命令需要使用镜像,守护进程会从镜像仓库拉取所需镜像(docker pull)。随后,容器基于镜像启动并在宿主系统上运行,实现资源隔离和应用部署。

3. 安装和部署

3.1 系统要求

Docker 在 Windows 上的系统要求包括操作系统、硬件和软件三个方面。操作系统需为 Windows 10 64-bit 专业版、企业版或教育版(Build 1903 或更高)或任意版本的 Windows 11。硬件方面,需要至少 4GB 内存,并且处理器需支持虚拟化(如 Intel VT-x 或 AMD-V 并已启用)。在软件要求上,需要启用 WSL2(Windows Subsystem for Linux),并安装 Windows 的 Hyper-V 功能(Docker Desktop 会自动完成配置)。

3.2 安装步骤

要安装 Docker Desktop,首先前往 Docker 官方网站 下载最新版的安装程序。下载完成后,双击运行安装程序(.exe 文件),在安装过程中勾选 “Install required Windows components for WSL 2”,然后点击 Install 进行安装。安装完成后,点击 Close and Restart 按钮,重启计算机以完成配置。

WSL2(Windows Subsystem for Linux 2)是微软开发的一种在 Windows 上运行 Linux 二进制可执行文件的子系统。与传统的虚拟机不同,WSL2 提供了一个更轻量级的 Linux 环境,允许用户在 Windows 系统中无缝地运行 Linux 命令行工具和应用。Docker Desktop 使用 WSL2 作为其后端环境的运行基础,这是因为 WSL2 提供了一个高效的方式来在 Windows 系统中运行 Linux 容器。

# 打开 PowerShell(以管理员身份运行):
wsl --install

# 设置默认 WSL 版本为 2(确保 Docker 使用 WSL2):
wsl --set-default-version 2

# 安装所需的 Linux 发行版(如 Ubuntu):
wsl --install -d Ubuntu

# 登录 docker 账号
docker login

安装完成后,启动 Docker Desktop,并按照提示登录 Docker Hub(如无账号,可创建一个免费账号)。登录后,确认 Docker Desktop 已正常启动,并确保界面显示 “WSL 2 backend is running”,表明 Docker 已成功启用 WSL 2 后端运行模式。

此外需要更新镜像源,具体指令如下所示:

# 查看 Ubuntu 版本
lsb_release -a

# 备份当前的源列表
sudo cp /etc/apt/sources.list.d/ubuntu.sources  /etc/apt/sources.list.d/ubuntu.sources.bak

# 打开文本编辑器
sudo vim /etc/apt/sources.list.d/ubuntu.sources

# 阿里云
Types: deb
URIs: http://mirrors.aliyun.com/ubuntu/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

# 更新源列表
sudo apt-get update

# 更新系统软件包
sudo apt-get upgrade

此外需要开启虚拟环境:

# 安装 venv 模块
sudo apt-get update
sudo apt-get install python3-venv

# 创建虚拟环境
python3 -m venv myenv

# 激活虚拟环境
source myenv/bin/activate

# 退出虚拟环境
deactivate

GitHub 相关配置问题,详细操作参考链接。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【从零开始的LeetCode-算法】3233. 统计不是特殊数字的数字数量

给你两个 正整数 l 和 r。对于任何数字 x,x 的所有正因数(除了 x 本身)被称为 x 的 真因数。 如果一个数字恰好仅有两个 真因数,则称该数字为 特殊数字。例如: 数字 4 是 特殊数字,因为它的真因数为 1 和…

day06(单片机高级)PCB设计

目录 PCB设计 PCB设计流程 元器件符号设计 原理图设计 元器件封装设计 元器件库使用 PCB设计 目的:学习从画原理图到PCB设计的整个流程 PCB设计流程 元器件符号设计 元器件符号:这是电子元器件的图形表示,用于在原理图中表示特定的元器件。例…

Oracle JDK(通常简称为 JDK)和 OpenJDK区别

Java 的开发和运行时环境主要由两种实现主导:Oracle JDK(通常简称为 JDK)和 OpenJDK。尽管它们都基于同一个代码库,但在一些关键点上有所区别。以下是详细的对比: 1. 基础代码 Oracle JDK: 基于 OpenJD…

LeetCode 101题集(随时更新)

题集来源:GitHub - changgyhub/leetcode_101: LeetCode 101:力扣刷题指南 使用C完成相关题目,以训练笔试 贪心 采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的。 分配问题 455. 分发饼…

渗透测试笔记——shodan(4)

声明: 学习视频来自B站up主 【泷羽sec】有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&am…

06 —— Webpack优化—压缩过程

css代码提取后想要压缩 —— 使用css-minimizer-webpack-plugin插件 下载 css-minimizer-webpack-plugin 本地软件包 npm install css-minimizer-webpack-plugin --save-dev 配置 webpack.config.js 让webpack拥有该功能 const CssMinimizerPlugin require(css-minimizer-…

【Android】android compat理解

1,前提 即便是在同一手机上安装的不同apk,其编译的apk不同,也会导致行为上的差异。如SDK34有限制后台启动,但如果安装的apk所依赖的sdk是33,则不会表现出此差异。这是如何实现的呢?其实,本质是…

蓝桥杯每日真题 - 第21天

题目:(空间) 题目描述(12届 C&C B组A题) 解题思路: 转换单位: 内存总大小为 256MB,换算为字节: 25610241024268,435,456字节 计算每个整数占用空间: 每个 32 位整数占用…

MongoDB进阶篇-索引(索引概述、索引的类型、索引相关操作、索引的使用)

文章目录 1. 索引概述2. 索引的类型2.1 单字段索引2.2 复合索引2.3 其他索引2.3.1 地理空间索引(Geospatial Index)2.3.2 文本索引(Text Indexes)2.3.3 哈希索引(Hashed Indexes) 3. 索引相关操作3.1 查看索…

做一个FabricJS.cc的中文文档网站——面向markdown编程

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,用爱发电&#…

自动驾驶之激光雷达

这里写目录标题 1 什么是激光雷达2 激光雷达的关键参数3 激光雷达种类4 自动驾驶感知传感器5 激光雷达感知框架5.1 pointcloud_preprocess5.2 pointcloud_map_based_roi5.3 pointcloud_ground_detection5.4 lidar_detection5.5 lidar_detection_filter5.6 lidar_tracking 1 什么…

Label-studio-ml-backend 和YOLOV8 YOLO11自动化标注,目标检测,实例分割,图像分类,关键点估计,视频跟踪

这里写目录标题 1.目标检测 Detection2.实例分割 segment3.图像分类 classify4.关键点估计 Keypoint detection5.视频帧检测 video detect6.视频帧分类 video classify7.旋转目标检测 obb detect8.替换yolo11模型 给我点个赞吧,谢谢了附录coco80类名称 笔记本 华为m…

Laravel对接SLS日志服务

Laravel对接SLS日志服务&#xff08;写入和读取&#xff09; 1、下载阿里云的sdk #通过composer下载 composer require alibabacloud/aliyun-log-php-sdk#对应的git仓库 https://github.com/aliyun/aliyun-log-php-sdk2、创建sdk请求的service <?phpnamespace App\Ser…

uniapp接入高德地图

下面代码兼容安卓APP和H5 高德地图官网&#xff1a;我的应用 | 高德控制台 &#xff0c;绑定服务选择《Web端(JS API)》 /utils/map.js 需要设置你自己的key和安全密钥 export function myAMap() {return new Promise(function(resolve, reject) {if (typeof window.onLoadM…

初识WGCLOUD - 监测磁盘空间还能使用多久

WGCLOUD是一款免费开源的运维监控软件&#xff0c;性能优秀&#xff0c;部署简单&#xff0c;轻巧使用&#xff0c;支持大部分的Linux和Windows、安卓、MacOS等平台安装部署 最近发布的新版本 v3.5.4&#xff0c;WGCLOUD新增了可以自动计算每个磁盘剩余空间的可使用天数&#x…

【Xbim+C#】创建圆盘扫掠IfcSweptDiskSolid

基础回顾 https://blog.csdn.net/liqian_ken/article/details/143867404 https://blog.csdn.net/liqian_ken/article/details/114851319 效果图 代码示例 在前文基础上&#xff0c;增加一个工具方法&#xff1a; public static IfcProductDefinitionShape CreateDiskSolidSha…

数据结构 ——— 堆排序算法的实现

目录 前言 向下调整算法&#xff08;默认建大堆&#xff09; 堆排序算法的实现&#xff08;默认升序&#xff09; 前言 在之前几章学习了如何用向上调整算法和向下调整算法对数组进行建大/小堆数据结构 ——— 向上/向下调整算法将数组调整为升/降序_对数组进行降序排序代码…

图像预处理之图像滤波

目录 图像滤波概览 均值滤波&#xff08;Mean Filter&#xff09; 中值滤波&#xff08;Median Filter&#xff09; 高斯滤波&#xff08;Gaussian Filter&#xff09; 双边滤波&#xff08;Bilateral Filter&#xff09; 方框滤波&#xff08;Box Filter&#xff09; S…

Qt-多元素控件

Qt中的多元素控件 Qt提供的多元素控件有&#xff1a; 这里的多元素控件都是两两一对的。 xxWidget和xxView的一个比较简单的理解就是&#xff1a; xxView是更底层的实现&#xff0c; xxWidget是基于xxView封装来的。 可以说&#xff0c;xxView使用起来比较麻烦&#xff0c;但…

<Sqlite><websocket>使用Sqlite与websocket,实现网页端对数据库的【读写增删】操作

前言 本文是在websocket进行通讯的基础,添加数据库进行数据的存储,数据库软件使用的是sqlite。 环境配置 系统:windows 平台:visual studio code 语言:javascript、html 库:nodejs、sqlite 概述 此前,我们实现在利用websocket和socket,将网页端与下位控制器如PLC进行…