Docker 新手小白保姆级教程:从安装到基础操作全搞定

作为一名刚接触容器技术的新手,是不是觉得 Docker 又神秘又难学?其实 Docker 的核心逻辑很简单 ——“一次构建,到处运行”,能帮我们解决环境配置不一致、依赖冲突等一系列头疼问题。今天这篇教程,就从各系统安装 Docker讲到镜像 / 容器核心操作,全程步骤清晰、命令可直接复制,新手也能快速上手!

一、为什么要学 Docker?

在学之前先搞懂:Docker 到底能帮我们做什么?

  • 环境统一:开发、测试、生产环境完全一致,再也不用喊 “我本地能跑啊”;
  • 轻量级:容器比虚拟机占用资源少,启动快(秒级启动);
  • 隔离性:每个容器独立运行,互不干扰,避免依赖冲突;
  • 易部署:无需手动配置复杂依赖,拉取镜像就能启动服务。

接下来,咱们一步步从安装开始入手~

二、各系统 Docker 安装步骤(Windows/macOS/Linux)

Docker 分为「Docker Engine」(核心运行环境)和「Docker Desktop」(图形化界面,可选),新手建议安装 Docker Desktop,操作更直观。

1. Windows 系统(重点区分家庭版 / 专业版)

前置条件:
  • Windows 10 专业版 / 企业版 / 教育版:需开启「Hyper-V」和「容器」功能;
  • Windows 10 家庭版:需先安装「WSL2」(Windows 子系统),再安装 Docker Desktop。
安装步骤:
  1. 开启必要功能(家庭版跳过这步,直接装 WSL2):
    • 按下 Win+R,输入 control 打开控制面板 → 程序 → 启用或关闭 Windows 功能;
    • 勾选「Hyper-V」「容器」「Windows 虚拟机监控程序平台」,点击确定,重启电脑。
  2. 安装 WSL2(仅家庭版需要):
    • 等待安装完成后,重启电脑。
  3. 下载并安装 Docker Desktop:
    • 官网下载:Docker Desktop for Windows(需注册 Docker 账号,免费);
    • 双击安装包,默认下一步即可(勾选 “Use WSL 2 instead of Hyper-V”);
    • 安装完成后,桌面会出现 Docker 图标,启动后任务栏显示鲸鱼图标(绿色表示运行正常)。
  4. 验证安装:

打开 CMD 或 PowerShell,输入以下命令,显示版本则成功:

docker --version docker run hello-world # 运行测试镜像,验证是否正常工作 

以管理员身份打开命令提示符(CMD),输入以下命令:

wsl --install 

2. macOS 系统(区分 Intel/M1 芯片)

前置条件:
  • macOS 10.15+(Catalina)及以上版本;
  • M1/M2 芯片需下载专门的 ARM 架构版本。
安装步骤:
  1. 下载 Docker Desktop:
    • 官网下载:Docker Desktop for Mac
    • 自动识别芯片架构(Intel/M1),直接下载对应安装包。
  2. 安装与启动:
    • 双击.dmg 安装包,将 Docker 拖入应用程序文件夹;
    • 从启动台打开 Docker,首次启动会提示输入系统密码(授权权限);
    • 任务栏出现鲸鱼图标,绿色表示运行正常。
  3. 验证安装:

打开终端(Terminal),输入以下命令:

docker --version docker run hello-world # 测试镜像运行成功则安装完成 

3. Linux 系统(Ubuntu/Debian/Jetson ARM 架构)

Linux 系统推荐直接安装 Docker Engine(无图形化界面,纯命令行),以下是最常用的 Ubuntu/Debian 系列安装步骤,Jetson Orin/Nano 等 ARM 架构同样适用,下面提供二种安装方法,第一种方法指令比较少的核心原因是官方一键脚本封装了所有手动步骤,自动化执行;第二种方是手动拆解每一步,适合学习和自定义配置。

第一种方法:安装步骤(一键脚本安装):

步骤 1:安装 curl 工具

Ubuntu 系统推荐使用 apt 安装 curl(比 snap 更稳定,适配系统环境):

# 更新软件包索引(可选,但建议执行) sudo apt update # 安装 curl sudo apt install curl -y 
步骤 2:下载 Docker 安装脚本

安装完 curl 后,重新执行下载命令:

curl -fsSL https://get.docker.com -o install-docker.sh 
  • -fsSL 参数说明:
    • f:失败时不输出错误信息
    • s:静默模式,不显示进度条
    • S:如果失败,显示错误信息
    • L:跟随重定向(确保下载到正确的脚本)
步骤 3:执行 Docker 安装脚本
# 运行安装脚本(需要 root 权限) sudo sh install-docker.sh 

这个脚本会自动:

  1. 卸载系统中旧的 Docker 版本(如 dockerdocker-engine 等)
  2. 设置 Docker 官方软件源
  3. 安装 Docker Engine、Containerd、Docker Compose
步骤 4:验证 Docker 是否安装成功
# 查看 Docker 版本 docker --version # 启动 Docker 服务(如果未自动启动) sudo systemctl start docker # 设置 Docker 开机自启 sudo systemctl enable docker 

如果能看到 Docker 版本的输出,说明安装成功。

第二种方法:安装步骤(手动分步安装):

  1. 设置 Docker 软件源(区分 x86/ARM 架构):

验证安装:

docker --version docker run hello-world # 运行测试镜像,无报错则成功 

配置非 root 用户权限(避免每次都输 sudo):

sudo usermod -aG docker $USER # 将当前用户加入docker组 newgrp docker # 立即生效 

安装 Docker Engine:

sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin 

ARM 架构(Jetson Orin/Nano):

echo "deb [arch=arm64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 

x86 架构(普通电脑):

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

添加 Docker 官方 GPG 密钥:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg 

安装依赖包:

sudo apt-get update sudo apt-get install ca-certificates curl gnupg lsb-release 

卸载旧版本(如果之前装过):

sudo apt-get remove docker docker-engine docker.io containerd runc 

三、Docker 核心基础操作(镜像 + 容器)

Docker 的核心概念:镜像(Image) 是容器的 “模板”(类似 ISO 镜像),容器(Container) 是镜像的 “运行实例”(类似虚拟机)。所有操作围绕这两个核心展开~

1. 镜像操作(搜索 / 下载 / 查看 / 删除)

(1)搜索镜像(从 Docker Hub 查找)

Docker Hub 是官方镜像仓库,包含海量免费镜像(如 Ubuntu、Nginx、Python 等),命令格式:docker search 镜像名

docker search ubuntu # 搜索Ubuntu镜像 docker search nginx # 搜索Nginx镜像 

输出结果中,STARS 越多表示镜像越受欢迎,优先选官方镜像(OFFICIAL 列标为 OK)。

(2)下载镜像(拉取镜像)

命令格式:docker pull 镜像名:标签(标签即版本,默认 latest 最新版)

docker pull ubuntu:22.04 # 下载Ubuntu 22.04版本 docker pull nginx # 下载Nginx最新版(默认:latest) docker pull python:3.9 # 下载Python 3.9版本 
(3)查看本地已下载的镜像
docker images # 查看所有本地镜像 docker image ls # 与上一条命令等价,更简洁 

输出字段说明:

  • REPOSITORY:镜像名称;
  • TAG:版本标签;
  • IMAGE ID:镜像唯一 ID;
  • CREATED:创建时间;
  • SIZE:镜像大小。
(4)删除本地镜像

注意:删除镜像前,需先删除依赖该镜像的所有容器(否则报错)命令格式:docker rmi 镜像名:标签 或 docker rmi 镜像ID

docker rmi ubuntu:22.04 # 通过“名称:标签”删除 docker rmi 14c2d7905e84 # 通过镜像ID删除(ID只需输入前几位即可) docker rmi -f nginx # 强制删除(如果镜像被容器占用,加-f强制删除) 

2. 容器操作(创建 / 运行 / 查看 / 停止 / 删除)

(1)创建并运行容器

命令格式:docker run [参数] 镜像名 [命令]核心参数说明:

  • -it:交互式运行(可进入容器终端);
  • -d:后台运行(守护进程模式,不占用终端);
  • --name:给容器起一个自定义名称;
  • -p 主机端口:容器端口:端口映射(如将主机 8080 端口映射到容器 80 端口);
  • --rm:容器停止后自动删除(适合临时测试)。

常用示例:

# 1. 交互式运行Ubuntu容器(进入容器终端) docker run -it --name my-ubuntu ubuntu:22.04 /bin/bash # 进入后可执行Linux命令(如ls、pwd),退出容器输入exit # 2. 后台运行Nginx容器(端口映射8080->80) docker run -d --name my-nginx -p 8080:80 nginx # 运行后,访问http://localhost:8080即可看到Nginx默认页面 # 3. 临时运行Python容器(停止后自动删除) docker run --rm -it python:3.9 python --version # 执行python版本命令后自动删除 
(2)查看容器状态
docker ps # 查看正在运行的容器(最常用) docker ps -a # 查看所有容器(运行中+已停止) docker ps -q # 只查看运行中容器的ID(用于批量操作) 

输出字段说明:

  • CONTAINER ID:容器唯一 ID;
  • NAMES:容器名称(自定义或自动生成);
  • IMAGE:容器对应的镜像;
  • STATUS:状态(up 运行中 /exited 已停止);
  • PORTS:端口映射关系;
  • CREATED:创建时间。
(3)停止运行中的容器
docker stop 容器名 # 通过容器名称停止 docker stop 容器ID # 通过容器ID停止 docker stop $(docker ps -q) # 停止所有正在运行的容器(批量操作) 
(4)启动已停止的容器
docker start 容器名/容器ID docker start my-ubuntu # 启动名为my-ubuntu的容器 
(5)进入正在运行的容器(交互式终端)

适合容器后台运行时,需要进入终端操作的场景:

docker exec -it 容器名/容器ID /bin/bash # 示例:进入后台运行的my-nginx容器 docker exec -it my-nginx /bin/bash 
(6)查看容器日志(后台运行容器常用)
docker logs 容器名/容器ID # 查看容器日志 docker logs -f my-nginx # 实时查看日志(类似tail -f) 
(7)删除容器

注意:删除容器前,需先停止容器(否则报错)

docker rm 容器名/容器ID # 删除已停止的容器 docker rm -f 容器名/容器ID # 强制删除(无论容器是否运行) docker rm -f $(docker ps -a -q) # 批量删除所有容器(谨慎使用!) 

四、Docker 基础操作汇总表格

操作类型命令说明示例
镜像搜索docker search 镜像名从 Docker Hub 搜索镜像docker search nginx
镜像下载docker pull 镜像名:标签拉取镜像(标签默认 latest)docker pull ubuntu:22.04
镜像查看docker images / docker image ls查看本地所有镜像docker images
镜像删除docker rmi 镜像名:标签/ID删除本地镜像(需先删依赖容器)docker rmi nginx / docker rmi 14c2d79
容器创建运行docker run [参数] 镜像名创建并运行容器(-it 交互 /-d 后台)docker run -d --name my-nginx -p 8080:80 nginx
容器查看docker ps查看正在运行的容器docker ps
容器查看(所有)docker ps -a查看所有容器(运行中 + 已停止)docker ps -a
容器停止docker stop 容器名/ID停止运行中的容器docker stop my-nginx
容器启动docker start 容器名/ID启动已停止的容器docker start my-nginx
进入容器docker exec -it 容器名/ID /bin/bash进入运行中容器的终端docker exec -it my-nginx /bin/bash
容器日志docker logs 容器名/ID查看容器日志(-f 实时查看)docker logs -f my-nginx
容器删除docker rm 容器名/ID删除已停止的容器(-f 强制删除)docker rm my-nginx / docker rm -f my-nginx

五、新手入门小贴士

  1. 新手推荐练手镜像:ubuntu(熟悉 Linux 命令)、nginx(测试端口映射)、python(运行简单脚本),多动手尝试才能快速掌握。
  2. 核心原则:镜像只读,容器可写—— 容器是镜像的运行实例,修改容器内的文件不会影响镜像本身(如需保存修改,需使用docker commit生成新镜像)。

忘记命令怎么办?用 docker 命令 --help 查看帮助文档,例如:

docker run --help # 查看run命令的所有参数 docker images --help # 查看images命令的帮助 

遇到下载镜像慢?可以配置国内镜像源(如阿里云、网易云),在 Docker Desktop 的「Settings」→「Docker Engine」中添加:json

"registry-mirrors": [ "https://registry.docker-cn.com", "https://hub-mirror.c.163.com", "https://mirror.aliyuncs.com" ] 

配置后点击「Apply & Restart」重启 Docker 即可生效。

Docker 的基础操作就这么多!新手先把这些命令练熟,就能应对大部分开发场景了。后续可以再学习 Docker Compose(多容器编排)、镜像构建(Dockerfile)等进阶内容。如果遇到问题,欢迎在评论区留言交流~

Read more

Spring Boot 视图层与模板引擎

Spring Boot 视图层与模板引擎

Spring Boot 视图层与模板引擎 19.1 学习目标与重点提示 学习目标:掌握Spring Boot视图层与模板引擎的核心概念与使用方法,包括Spring Boot视图层的基本方法、Spring Boot与Thymeleaf的集成、Spring Boot与Freemarker的集成、Spring Boot与Velocity的集成、Spring Boot的静态资源管理、Spring Boot的实际应用场景,学会在实际开发中处理视图层问题。 重点:Spring Boot视图层的基本方法、Spring Boot与Thymeleaf的集成、Spring Boot与Freemarker的集成、Spring Boot与Velocity的集成、Spring Boot的静态资源管理、Spring Boot的实际应用场景。 19.2 Spring Boot视图层概述 Spring Boot视图层是指使用Spring Boot进行Web应用开发的方法。 19.2.1 视图层的定义 定义:视图层是指使用Spring Boot进行Web应用开发的方法。 作用:

By Ne0inhk

Spring Boot整合RocketMQ避坑指南:当Tag遇上selectorExpression的那些坑

Spring Boot整合RocketMQ避坑指南:当Tag遇上selectorExpression的那些坑 在微服务架构和异步通信成为主流的今天,消息队列作为系统解耦、流量削峰的关键组件,其重要性不言而喻。RocketMQ凭借其高吞吐、高可用和丰富的消息过滤机制,在众多项目中脱颖而出。对于已经熟悉其基础用法的开发者而言,从“能用”到“用好”的跨越,往往就藏在那些看似不起眼的配置细节里。特别是当消息过滤与Tag机制结合时,一个配置参数的误解,就可能导致消息的“神秘失踪”,让开发者在排查问题时耗费大量精力。这篇文章,我们就来深入聊聊Spring Boot项目中,使用RocketMQTemplate和@RocketMQMessageListener时,围绕Tag和selectorExpression的那些典型“坑点”,并通过实际的代码实验,为你提供一套清晰的避坑地图和排查工具。 1. 理解Tag与selectorExpression:不只是简单的字符串匹配 在RocketMQ的世界里,Topic是消息的一级分类,而Tag则是二级分类,你可以把它理解为Topic下的一个子集。这种设计

By Ne0inhk
Clawdbot(Moltbot)源码部署全实测:从环境搭建到 WebChat 验证,避坑指南收好

Clawdbot(Moltbot)源码部署全实测:从环境搭建到 WebChat 验证,避坑指南收好

一、为啥折腾 Clawdbot? 最近刷技术圈总刷到 Clawdbot(后来也叫 Moltbot),说是能搭私人 AI 助手,支持 WhatsApp、Telegram 这些常用通道,还能跑在自己设备上,不用依赖第三方服务 —— 想着拉下来测试一下功能,顺便研究一下其源码的实现。 于是拉上 GitHub 仓库https://github.com/openclaw/openclaw,打算从源码部署试试,过程里踩了不少坑,干脆整理成记录,给同样想折腾的朋友避避坑。 二、源码部署前的准备:Windows 环境优先选 WSL2 一开始想直接用 Windows CMD 部署,结果装依赖时各种报错,查仓库文档才发现 Windows 推荐用 WSL2(Ubuntu/Debian 镜像就行),后续操作全在 WSL2 里完成: 1.

By Ne0inhk
RUST:异步代码的测试与调试艺术

RUST:异步代码的测试与调试艺术

RUST:异步代码的测试与调试艺术 一、异步测试的本质与难点 1.1 异步测试与同步测试的区别 💡在Rust同步编程中,测试通常是顺序执行的,每个测试函数会阻塞线程直到完成,结果是确定的。而异步测试的结果可能受到任务调度、网络延迟、数据库连接等因素的影响,时序性和状态管理更加复杂。 同步测试示例: #[cfg(test)]modtests{#[test]fntest_add(){assert_eq!(1+1,2);}} 异步测试示例(使用Tokio测试宏): #[cfg(test)]modtests{usetokio::time::sleep;usestd::time::Duration;#[tokio::test]asyncfntest_async_add(){sleep(Duration::from_millis(100)).await;assert_

By Ne0inhk