上篇说了我拿 2014 款 Mac mini 装了 Ubuntu 24.04 当服务器,上了 Docker 全家桶。有朋友私信说:"你讲得爽,我连 Docker 是啥都没搞明白,能不能先讲讲基础?"

行,这篇就专门给小白讲 Docker 入门。不扯虚的,看完你就能自己跑起第一个容器。

Docker 到底是啥

我打个比方:以前装软件,就像搬家——得先把家具(依赖库)、水电(环境配置)都弄好,才能住进去。换个房子(换台机器)又得重来一遍。

Docker 就是"集装箱房"——软件连同它需要的环境,整个打包成一个标准集装箱(镜像),拉到哪儿都能直接住(跑起来),不用重新装修。

几个名词先记住:

装 Docker,三步

我上篇写过完整命令(用官方源),这篇给个精简版:

curl -fsSL https://get.docker.com | sh

对,就这一行。官方的一键脚本,Ubuntu/Debian/CentOS 通用,装完自动配好源和开机自启。

装完验证:

docker version

能看到 Client 和 Server 两个版本号就成功了。注意 Server 那行,如果报错说找不到,多半是 Docker 服务没起来:

sudo systemctl enable --now docker

第一个容器:跑个 Nginx 网页

空跑没意思,直接来实战。我要在服务器上跑一个 Nginx(一个网页服务器软件),看它怎么工作的:

docker run -d --name myweb -p 8088:80 nginx

一行命令拆开看:

跑起来之后,浏览器打开 http://你的服务器IP:8088,就能看到 Nginx 的欢迎页——你的第一个容器活了。

这背后发生了什么?Docker 发现本地没有 nginx 镜像,自动去 Docker Hub 拉了一个下来,然后启动容器。全程不用你装任何依赖。

常用命令,记住这几个就够了

命令作用
docker ps查看正在运行的容器
docker ps -a查看所有容器(含已停止)
docker images查看本地镜像
docker logs 容器名看容器日志(排错第一招)
docker stop 容器名停止容器
docker start 容器名启动容器
docker rm 容器名删除容器(要先 stop)
docker exec -it 容器名 bash进入容器内部命令行

实战一遍:我改了网页内容想让它生效,先看看容器状态:

docker ps

想进容器里看看:

docker exec -it myweb bash

进去之后 ls /usr/share/nginx/html 就能看到网页文件。不想玩了:

docker stop myweb && docker rm myweb

容器删了,系统干干净净,一点残留都没有——这就是 Docker 的好处。

数据要放外面:卷(Volume)

有个坑必须提前讲:容器是"一次性"的,删了就没了,里面的数据也跟着没。

比如你往 Nginx 里放了个网页,容器删了,网页也没了。那怎么办?把数据放"外面"——用卷(Volume)或者目录映射。

docker run -d --name myweb \
  -p 8088:80 \
  -v /opt/myweb:/usr/share/nginx/html \
  nginx

-v /opt/myweb:/usr/share/nginx/html 意思是:把服务器的 /opt/myweb 目录,映射成容器内的网页目录。你在服务器上直接编辑 /opt/myweb/index.html,网页就变了;容器删了重建,数据还在。

记住这条铁律:一切要保留的数据,都放卷里,别放容器里。 后面全家桶全是这个思路。

进阶:docker-compose 管多个容器

一个容器还好,三五个就要乱。这时候用 Compose——一个 YAML 文件管所有容器。

建个目录,写配置文件:

version: "3.8"

services:
  web:
    image: nginx:latest
    ports:
      - "8088:80"
    volumes:
      - /opt/myweb:/usr/share/nginx/html
    restart: unless-stopped

保存为 docker-compose.yml,然后:

docker compose up -d

全家桶就是这么管理的。以后要加新服务,往 YAML 里加一个 block,再跑一次 up -d 就行。

几个 Compose 高频操作:

docker compose up -d          # 启动(新增/修改配置后也用它)
docker compose down           # 停止并移除容器
docker compose ps             # 查看状态
docker compose logs -f 服务名  # 看某个服务日志

结尾

到这,你已经能跑起第一个容器,知道数据怎么放,会用 Compose 管多个容器了。Docker 入门就这么点东西,剩下的都是遇到问题查文档。

我 Mac mini 上那套全家桶,就是靠这一套东西搭起来的。后面还有 Alist 挂网盘、Jellyfin 影视库、qBittorrent 下载器这些实战篇,都更新在 moxiaoa.com,想继续学的关注一下。

有问题加我微信 lige0552,备注"Docker",我看到就回。