第一阶段学习笔记:Ubuntu 基础与 Docker 入门
第一阶段学习笔记:Ubuntu 基础与 Docker 入门
1. 学习目标
第一阶段围绕后续机器人/ROS2/OpenCV 学习前的基础环境
- 安装并熟悉 WSL2 / Ubuntu 环境。
- 掌握基本 Linux 命令,能在终端中完成文件、目录、权限和软件安装操作。
- 了解 Git 的基础使用方式。
- 简要熟悉 Vim 的基本编辑流程。
- 理解 CMake 最小项目的构建流程。
- 重点学习 Docker,理解 image、container、端口映射、目录挂载等概念。
2. 学习资源
3. 环境搭建
第一阶段先完成 WSL2 和 Ubuntu 的安装。WSL2 提供了一个可以在 Windows 中运行 Linux 用户空间的环境,适合前期学习 Linux 命令、编译工具和 Docker 基础。
Ubuntu 内部安装基础工具:
1 | sudo apt update |
含义:
sudo apt update:更新软件源索引。build-essential:安装 GCC、G++、make 等基础编译工具。git:版本管理工具。vim:终端文本编辑器。cmake:跨平台构建系统生成工具。gdb:调试工具。python3/python3-pip:Python 运行环境和包管理器。curl/wget:命令行下载工具。unzip:解压 zip 文件。
4. Linux 基础
这一部分只需要掌握够用的命令,目标是能在终端中移动、创建文件、查看内容和处理权限。
常用命令:
1 | pwd |
简要含义:
pwd:显示当前所在目录。ls:列出当前目录内容。ls -la:显示隐藏文件和详细权限信息。cd:切换目录。mkdir:创建目录。mkdir -p:递归创建多级目录。touch:创建空文件或更新时间戳。cat:查看文件内容。cp:复制文件或目录。mv:移动或重命名。rm:删除文件。chmod +x:给脚本增加可执行权限。
5. Git
Git 部分主要掌握本地仓库的基本流程,能够记录学习文件的修改。
常用流程:
1 | git init |
含义:
git init:初始化本地仓库。git status:查看当前工作区状态。git add:把文件加入暂存区。git commit -m:提交一次版本记录。git log --oneline:用简短形式查看提交历史。
如果提交时缺少用户名和邮箱,可以设置:
1 | git config --global user.name "your-name" |
6. Vim
1 | i 进入插入模式 |
7. CMake
CMake 学习重点是理解两步:
1 | cmake -S . -B build |
第一步:
1 | cmake -S . -B build |
含义:
-S .:指定源码目录是当前目录。-B build:指定构建目录是build。
这一步会读取当前目录中的 CMakeLists.txt,并在 build 目录中生成构建文件。
第二步:
1 | cmake --build build |
含义:
--build:告诉 CMake 开始编译。build:指定使用哪个构建目录。
如果执行:
1 | cmake -S . -B build |
时出现:
1 | CMake Error: The source directory ".../linux-mini-practice" does not appear to contain CMakeLists.txt. |
说明当前目录里没有 CMakeLists.txt。CMake 必须从包含 CMakeLists.txt 的目录开始配置项目。
8. Docker
Docker 是这一阶段的重点。它的作用是把应用和运行环境打包起来,让程序在相对一致的环境中运行。
8.1 image 和 container
Docker 中最核心的两个概念是:
image:镜像,可以理解为容器的模板或快照。container:容器,是镜像运行起来之后的实例。
关系:
1 | image -> docker run -> container |
一个镜像可以创建多个容器。镜像本身通常不运行,容器才是运行中的进程环境。
例如:
1 | docker pull nginx |
docker pull nginx 下载 Nginx 镜像,docker run nginx 根据这个镜像创建并启动容器。
8.2 查看镜像
1 | docker images |
作用:查看本地已有镜像。
输出中常见字段:
REPOSITORY:镜像名。TAG:标签,常见为latest。IMAGE ID:镜像 ID。SIZE:镜像大小。
8.3 删除镜像
1 | docker rmi IMAGE_ID |
作用:删除指定镜像。
如果出现类似:
1 | conflict: unable to delete ... image is being used by stopped container |
说明这个镜像仍然被某个停止状态的容器占用。需要先删除对应容器,再删除镜像。
常用处理顺序:
1 | docker ps -a |
如果确实确认不需要,也可以强制删除镜像:
1 | docker rmi -f IMAGE_ID |
但学习阶段更推荐先理解占用关系,不急着强制删除。
8.4 查看容器
1 | docker ps |
作用:查看正在运行的容器。
1 | docker ps -a |
作用:查看所有容器,包括已经停止的容器。
8.5 启动 Nginx 容器
1 | docker run -d --name nginx-demo -p 8080:80 nginx |
含义:
docker run:用镜像创建并启动容器。-d:后台运行。--name nginx-demo:给容器起名,方便后续管理。-p 8080:80:端口映射。nginx:使用 Nginx 镜像。
端口映射:
1 | 8080 = 主机端口 |
访问:
1 | http://localhost:8080 |
会转发到容器内部的 80 端口。
8.6 停止和删除容器
1 | docker stop nginx-demo |
含义:
docker stop:停止运行中的容器。docker rm:删除已经停止的容器。
一般顺序是:
1 | 先 stop,再 rm |
8.7 目录挂载
学习过程中重点理解了这个命令:
1 | docker run -d -p 8080:80 -v ./:/usr/share/nginx/html nginx |
完整含义:启动一个 Nginx 容器,把当前目录作为网页目录挂进去,并把网页服务暴露到本机 8080 端口。
逐段解释:
1 | docker run |
用镜像创建并启动一个新容器。
1 | -d |
后台运行容器。
1 | -p 8080:80 |
端口映射:
1 | 访问主机 localhost:8080 |
1 | -v ./:/usr/share/nginx/html |
目录挂载:
1 | ./ 当前目录 |
也就是把当前目录挂载到容器里的网页目录。当前目录中的 index.html 会被 Nginx 当作网页展示。
1 | nginx |
指定使用 nginx 镜像。
测试流程:
1 | mkdir -p ~/docker-nginx-demo |
然后访问:
1 | http://localhost:8080 |
如果看到 Hello Docker Nginx,说明挂载和端口映射都成功了。
8.8 进入容器
1 | docker exec -it nginx-demo bash |
作用:进入正在运行的容器内部。
参数含义:
exec:在已有容器中执行命令。-it:提供交互式终端。nginx-demo:容器名。bash:进入容器后启动 bash。
如果镜像没有 bash,可以尝试:
1 | docker exec -it nginx-demo sh |
8.9 volume 的理解
Docker 中的挂载大致分为两类:
- bind mount:把主机上的某个具体目录挂进容器。
- volume:由 Docker 管理的数据卷。
本阶段主要使用的是 bind mount:
1 | -v ./:/usr/share/nginx/html |
它适合学习和开发,因为本地文件修改后,容器中能直接看到变化。
8.10 Dockerfile
Dockerfile 用来描述如何构建自己的镜像。
常见指令:
1 | FROM nginx |
含义:
FROM nginx:以 Nginx 镜像作为基础镜像。COPY . /usr/share/nginx/html:把当前目录内容复制到镜像中的网页目录。
构建镜像:
1 | docker build -t my-nginx . |
含义:
build:构建镜像。-t my-nginx:给镜像命名。.:构建上下文是当前目录。
运行自定义镜像:
1 | docker run -d -p 8080:80 my-nginx |
8.11 Docker Compose
Docker Compose 用来管理多个容器服务。第一阶段只需要先理解它解决的问题:当项目有多个服务时,不想每次都手写很长的 docker run 命令,可以把配置写进 docker-compose.yml。
示例结构:
1 | services: |
启动:
1 | docker compose up -d |
停止:
1 | docker compose down |
含义:
up -d:后台启动配置中的服务。down:停止并移除相关容器和网络。
- 标题: 第一阶段学习笔记:Ubuntu 基础与 Docker 入门
- 作者: xyzfrozen
- 创建于 : 2026-06-06 14:13:55
- 更新于 : 2026-06-06 06:22:05
- 链接: https://xyzfrozen.github.io/xyzfrozen/第一阶段学习笔记:Ubuntu-基础与-Docker-入门/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。