【学习记录】Docker初探(1)

server/2024/12/18 12:12:30/

系统:windows11

使用管理员打开cmd窗口,使用PowerShell

wsl

WSL 全称为 Windows Subsystem for Linux,即 Windows 上的 Linux 子系统。它是微软提供的一项功能,允许用户在 Windows 10 和 Windows 11 上直接运行 Linux 二进制可执行文件,而无需修改这些文件或使用虚拟机。WSL 提供了一个与 Linux 一致的开发和运行环境,使得在 Windows 上运行 Linux 程序更加简单和高效。

WSL 的主要特点

  1. 无缝整合:你可以在 Windows 上直接使用 Linux 命令行工具、GNU/Linux 应用程序和 Bash 脚本,无需离开 Windows 环境。

  2. 与 Windows 的互操作性:WSL 允许你访问 Linux 和 Windows 的文件系统,无需重启系统即可在两个操作系统之间共享资源。

  3. 轻量级:WSL 并不是真正的虚拟机,它更像是一个兼容层,因此占用的资源比虚拟机少得多,同时启动速度也更快。

  4. 支持多种发行版:你可以从 Microsoft Store 安装多种 Linux 发行版,包括 Ubuntu、Debian、Fedora 等。

  5. 支持 GUI 应用程序:WSL 2 引入了一些新特性,如 GPU 加速和对 Linux GUI 应用的支持,使得在 Windows 上运行 Linux 图形应用成为可能。

WSL 版本

  • WSL 1:初始版本,直接翻译 Linux 系统调用为 Windows 系统调用,但某些系统调用和功能不支持或效率较低。

  • WSL 2:引入了完整的 Linux 内核,以轻量级虚拟机的形式运行,但仍保持高效的文件系统性能和与 Windows 的深度集成。

使用 WSL 的场景

  • 开发环境:方便开发者在 Windows 环境中使用 Linux 工具链,适用于 Web 开发、数据科学和 DevOps。

  • 学习和实验:可以用于学习和测试 Linux 系统及其应用程序,而不需要在机器上安装双系统或虚拟机。

如何开始使用 WSL

  1. 安装 WSL:在 Windows 10(更新后版本)或者 Windows 11 中启用 WSL 功能,通常可以通过 PowerShell 执行命令 wsl --install 来完成。

  2. 选择和安装 Linux 发行版:从 Microsoft Store 下载和安装你所需的 Linux 发行版。

  3. 启动并配置:通过 Windows Terminal 或者其他终端工具打开你安装的 Linux 系统,开始设置和使用。

WSL 是一个强大而实用的工具,为开发者和爱好者增强了 Windows 平台的功能性和灵活性。

首先下载:

wsl --install

以管理员权限打开命令提示符(cmd)或 PowerShell,运行以下命令以确保启用必要的组件:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

接着设置为WSL2

wsl --set -default -version 2

选择任意子系统安装

wsl.exe --install Ubuntu-18.04

此次有报错,询问AI后需要更新

旧版 WSL 的手动安装步骤 | Microsoft Learn

下载wsl_update_x64.msi,安装

重新下载子系统,成功

设置名字密码后直接使用命令【wsl】即可进入(因为只下载了一个子系统)

按AI提示输入命令尝试,可以使用

sudo apt update
sudo apt install build-essential git

官方文档:安装 WSL | Microsoft Learn

安装Docker Desktop

Docker Desktop: The #1 Containerization Tool for Developers | Docker

但是还不能使用,需要打开功能Hyper-V

安装Hyper-V包

但是现在windows中未安装

找到一个帖子,提供安装代码代码(代码放入txt,尾缀改为.bat,运行),需要根据自己路径修改,直接运行报错

Windows安装Docker Desktop,详细步骤 | 极客之音

看起来是在文件夹里找到特定的包,然后安装

pushd "%~dp0"
dir /b %SystemRoot%servicingPackages*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%servicingPackages%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V -All /LimitAccess /ALL
pause

使用AI对代码进行修改

@echo off
pushd "%~dp0"
​
REM 输出相关更新包文件到 hyper-v.txt
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum > hyper-v.txt
​
REM 确保 hyper-v.txt 文件正确生成并且不为空
if exist hyper-v.txt (for /f %%i in (hyper-v.txt) do (echo Adding package: "%%i"dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i")
) else (echo 文件 hyper-v.txt 未找到或为空。
)
​
REM 删除生成的 hyper-v.txt 文件
del hyper-v.txt
​
REM 启用 Hyper-V 功能
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess
​
REM 暂停以查看结果
pause

运行成功

出现功能

配置Docker Engine

{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"features": {"buildkit": true},"registry-mirrors": ["https://mirror.aliyuncs.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://dockerproxy.com"]
}

运行命令,查看安装子系统

docker --version
wsl --list --verbose

随便下载一个库

docker pull yandex/clickhouse-server

AI的解释:

在这段输出中,你首先执行了两个 Docker 命令:docker psdocker images,下面我逐一解释它们的结果。

1. docker ps

命令:docker ps

输出:

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

解释:

  • docker ps 是用于查看当前正在运行的 Docker 容器的命令。

  • 从输出来看,目前没有任何容器在运行(空白输出)。

  • 如果你已经启动了容器,它会显示容器ID、使用的镜像、运行的命令、创建时间、状态、端口映射以及容器名称。

2. docker images

命令:docker images

输出:

REPOSITORY                 TAG       IMAGE ID       CREATED       SIZE
yandex/clickhouse-server   latest    c739327b5607   2 years ago   826MB

解释:

  • docker images 是用于查看已经下载到本地的 Docker 镜像的命令。

  • 该命令列出了镜像的仓库REPOSITORY)、标签TAG)、镜像 IDIMAGE ID)、创建时间CREATED)和大小SIZE)。

  • 从输出中可以看到,你已经下载了 yandex/clickhouse-server 镜像,标签为 latest,镜像 ID 为 c739327b5607,该镜像是在两年前创建的,大小约为 826MB。

3. 下一步

虽然镜像已经下载成功,但你尚未启动任何容器。要运行该镜像,可以使用以下命令:

docker run -d --name clickhouse-server -p 8123:8123 yandex/clickhouse-server:latest

这样你就可以启动一个名为 clickhouse-server容器,并通过映射端口 8123 来访问 ClickHouse 服务。


http://www.ppmy.cn/server/151166.html

相关文章

深度比较:OpenNI2 SDK与Orbbec SDK的功能、优势和选择指南

深度比较:OpenNI2 SDK与Orbbec SDK的功能、优势和选择指南 为了全面地了解OpenNI2 SDK与Orbbec SDK以及选择适合您需求的SDK,我们需要深入分析这两个SDK的设计理念、功能特点、优势和局限性。以下是对两个SDK的详细、专业和有逻辑的比较分析。 OpenNI2…

【论文通读】MMToM-QA: Multimodal Theory of Mind Question Answering

MMToM-QA: Multimodal Theory of Mind Question Answering 前言AbstractMotivationSolutionMMToM-QA Benchmark想法推断目标推断 The BIP-ALM ModelExperimentsConclusion 前言 来自ACL 2024 Outstanding Paper的工作,作者从人类认知的角度出发,加入很多…

Vscode打开后闪退问题

vscode 动不动就无法启动呀? 表现为启动在任务管理器中一闪而过 我这边过一个周末就不行了,昨天重新安装,今天又启动不了了 解决方案: 在cmd中启动code.exe 报错提示: FATAL:v8_initializer.cc(630)] Error loadi…

wrk如何测试post请求

wrk git地址 https://github.com/wg/wrk wrk 默认是针对 GET 请求的,但它也可以通过添加自定义的 HTTP 请求体和 头部信息来进行 POST 请求的压测。以下是详细的步骤: wrk -t4 -c100 -d30s -s post.lua http://example.com-t4:使用 4 个线…

【YashanDB知识库】用yasldr配置Bulkload模式作单线程迁移300G的业务数据到分布式数据库,迁移任务频繁出错

问题描述 详细版本:YashanDB Server Enterprise Edition Release 23.2.4.100 x86_64 6db1237 影响范围: 离线数据迁移场景,影响业务数据入库。 外场将部分NewCIS的报表业务放到分布式数据库,验证SQL性能水平。 操作系统环境配…

ollama 加载多段GGUF

ollama 加载多段GGUF 在 Ollama 或类似工具(如基于 LLM 推理 的框架)中加载被分成多段的 GGUF 文件(量化的模型权重文件)时,可以按照以下步骤进行: 1. 理解分段 GGUF 文件 GGUF 文件格式是 LLAMA 或 GPTQ…

Spring Boot 启动时间优化全攻略

引言 随着 Spring Boot 的广泛应用,开发者享受到了快速开发和自动化配置的便利。然而,随着项目复杂度的增加,Spring Boot 项目启动时间也变得越来越长,这在开发、调试和部署阶段可能会成为效率瓶颈。如何优化 Spring Boot 的启动…