Docker基础:Docker的安装与基本命令

说实话,很多新手一上来就急着敲命令,结果环境没配好,后面全崩了。Docker的安装其实不难,但不同操作系统有各自的坑。我当年第一次在Windows上装Docker,折腾了整整一下午——后来发现是没开虚拟化。

咱们先把环境搭好,再学那几条最核心的命令。你只要会用 pull、run、ps、stop、rm 这五个,日常操作就够用了。

安装概览

Docker 的安装方式因系统而异。我个人习惯这样选择:

平台 推荐安装方式 核心注意事项
Linux (Ubuntu/Debian) apt 仓库安装 需要 sudo 权限,记得加用户组
macOS Docker Desktop for Mac Intel / Apple Silicon 版本不同
Windows Docker Desktop + WSL2 后端 必须开启硬件虚拟化

Linux 上安装 Docker

我在项目中遇到最多的就是 Linux 服务器部署。装 Docker 之前,先确认内核版本——低于 3.10 的话,很多功能跑不起来。

标准安装步骤:

# 卸载旧版本
sudo apt remove docker docker-engine docker.io containerd runc

# 更新包索引并安装依赖
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release

# 添加 Docker 官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 设置稳定版仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 Docker 引擎
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 启动并验证
sudo systemctl enable docker
sudo systemctl start docker
docker --version

避坑指南:我曾经忘记把当前用户加入 docker 组,结果每次执行 docker 命令都要加 sudo,特别烦。做完上面步骤后,务必执行一下:

sudo usermod -aG docker $USER
newgrp docker

然后重新登录,就可以不用 sudo 直接敲 docker 命令了。

macOS 上安装 Docker

macOS 用户直接用 Docker Desktop 就好。但要注意芯片架构的区别——Apple Silicon 的机器要下载 Docker Desktop for Apple Silicon 版本。

安装步骤很简单:

  1. 去 Docker 官网下载对应芯片的 DMG 安装包。
  2. 双击安装,把 Docker 图标拖进 Applications 文件夹。
  3. 启动 Docker Desktop,等待顶部状态栏的小鲸鱼图标稳定(不再转圈)。

验证安装:

docker --version
docker run hello-world

如果 hello-world 能正常打印信息,说明安装完美。我在 macOS 上遇到过 Docker Desktop 占用内存偏高的问题,解决方案是进设置,把资源限制调到 4GB 内存、2 个 CPU 核心,基本就稳了。

Windows 上安装 Docker

Windows 的情况比较特殊。早期我用 Docker Toolbox,体验很差。现在建议直接用 Docker Desktop + WSL2 后端。为什么要这样做?说白了,WSL2 才是真正的 Linux 内核,跑容器性能基本无损耗。

准备工作:

  1. 开启硬件虚拟化(BIOS 里找 Intel VT-x 或 AMD SVM)。
  2. 安装 WSL2,并设置它为默认版本。
  3. 下载 Docker Desktop for Windows,安装时勾选 Use WSL 2 instead of Hyper-V。

验证命令和 macOS 一样:

docker --version
docker run hello-world

小技巧:我建议你在 Windows 上装个 Windows Terminal,配合 WSL2 的 Ubuntu 发行版,直接在里面敲 docker 命令,比在 PowerShell 里顺手得多。你想想看,真正生产环境跑的也是 Linux,习惯一致很重要。

Docker 基本命令

环境搭好了,咱们开始上手命令。你只要掌握这几个,就能完成 80% 的日常操作。我平时排查问题,翻来覆去用的也就是它们。

命令 作用 常用场景
docker pull 下载镜像到本地 从 Docker Hub 拉取 nginx、redis 等
docker run 创建并启动容器 启动一个 nginx 服务
docker ps 列出运行中的容器 查看当前有哪些容器在跑
docker stop 停止一个运行中的容器 优雅关闭服务
docker rm 删除已停止的容器 清理不再需要的容器

1. docker pull — 拉取镜像

镜像就是容器的模板。没有镜像,容器跑不起来。我第一次用 Docker 时,直接 docker run 发现它自动帮我拉取了镜像,很省心。但批量部署时,提前 pull 到本地会更可控。

# 拉取最新版 nginx
docker pull nginx

# 拉取指定版本
docker pull nginx:1.25-alpine

# 从私有仓库拉取
docker pull registry.mycompany.com/myapp:latest

为什么会用 alpine 版本?它体积小,基础镜像就 5MB 左右,部署快、攻击面小。我个人习惯,生产环境尽量用 alpine 变体。

2. docker run — 运行容器

这是最核心的命令。它把镜像实例化成一个容器。你想想看,镜像好比是 ISO 文件,容器就是装好的系统。

# 最简单的运行方式(前台运行,CTRL+C 退出)
docker run nginx

# 后台运行(-d 表示 daemon 模式)
docker run -d nginx

# 映射端口(宿主机 8080 到容器 80)
docker run -d -p 8080:80 nginx

# 给容器命名,方便管理
docker run -d --name my-nginx -p 8080:80 nginx

核心参数:

  • -d:后台运行容器,不占用当前终端。
  • -p:端口映射,格式 宿主机端口:容器端口。
  • --name:给容器起个名字,后续可以用名字操作。
  • -it:交互模式运行,常用于调试(例如 docker run -it ubuntu bash)。

3. docker ps — 列出容器

要搞清楚当前有哪些容器在干活,全靠这条命令。

# 只显示运行中的容器
docker ps

# 显示所有容器(包括已停止的)
docker ps -a

# 显示最近创建的容器
docker ps -l

# 只显示容器 ID(方便脚本处理)
docker ps -q

输出示例:

CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                  NAMES
3a8f1c2e4b5d   nginx     "/docker-entrypoint.…"   10 minutes ago   Up 10 minutes   0.0.0.0:8080->80/tcp   my-nginx

我经常用 docker ps -a 来查那些意外退出的容器,配合 docker logs 看错误日志,排查问题特别快。

4. docker stop — 停止容器

停止容器时,系统会先发 SIGTERM 信号,给进程 10 秒的优雅退出时间。超时才会强制杀死。这个设计很好,避免直接断电导致数据损坏。

# 通过容器名称停止
docker stop my-nginx

# 通过容器 ID 停止(只需输入前几位,能唯一标识即可)
docker stop 3a8f

我在项目中遇到过一个问题:有些容器对 SIGTERM 没反应,卡住了。这时候可以用 docker kill 强制停,不过那是最后的手段。

5. docker rm — 删除容器

停掉的容器并不会自动消失,它还在占用磁盘空间。跑得久了,你可能会发现一堆 Exited 状态的容器,白白浪费资源。

# 删除已停止的容器
docker rm my-nginx

# 强制删除运行中的容器
docker rm -f my-nginx

# 删除所有已停止的容器(清理大法)
docker container prune

注意:经常有人删错了正在跑的容器。养成好习惯:先用 docker ps 确认容器状态,再决定是 stop 还是 rm。我的经验是,手快之前先按一次上箭头,看清命令再回车。

本章知识体系

下面这张图,把 Docker 安装、镜像拉取、容器运行全流程串起来了。你对照着看,脑子里能形成一条清晰的链路。

Docker 基础安装与命令全流程 操作系统层 Linux / apt macOS / Docker Desktop Windows + WSL2 安装验证:docker --version docker pull 拉取镜像 (从 Hub / 私有仓库) docker run 运行容器 (-d, -p, --name) docker stop / rm (停止与清理容器) docker ps / docker ps -a 查看容器状态 & 调试 核心流程:安装 → 拉取镜像 → 运行容器 → 管理生命周期 → 查看状态

说实话,这几条命令学通了,你就能独自部署一个完整的容器化服务。我在质量环境里部署 maven 编译环境、sql 审核工具,全靠这套思路——装好 Docker,pull 镜像,run 起来,做端口映射,齐活。

一个实用技巧:别死记命令。你可以在命令行里敲 docker --help 查看所有子命令,或者 docker run --help 看具体参数。我到现在都经常用这招,比你打开浏览器搜书签快多了。