每天5分钟玩转Docker容器技术:从零基础到独立部署的实战手记

写在前面:别把Docker想得太玄乎

💡 推荐阅读:别再只看CPU核数了!决定云服务器运算性能的,其实是这五个细节

很多朋友一听到“容器”、“镜像”、“编排”这些词,第一反应就是头大。其实,Docker 的核心理念用一句话就能讲清楚:把你的应用连同它的运行环境一起打包,扔到哪儿都能跑。就像搬家时用的集装箱,里面的东西原封不动,换个吊车、换个码头,箱子里的物品毫发无损。

笔者(站长)接触 Docker 也有不少年头了。坦白讲,每天花 5 分钟,连续一两周,你就能掌握日常开发中 90% 的 Docker 操作。这篇文章不搞那些虚头巴脑的原理推导,咱们直接上手,把最常用的命令和思路捋一遍。如果你手头正好有一台服务器,哪怕是 1核2G 的入门配置,也能跟着操作起来。

一、装好环境,咱们就成功了一半

💡 延伸阅读:别再被“高科技”唬住了,一文看懂Docker容器到底是干嘛的(附上手实操)

无论你是用 Windows、macOS 还是 Linux,装 Docker 本身都不复杂。Windows 和 Mac 用户直接下载 Docker Desktop 安装包,一路下一步即可。Linux 用户则可以用包管理器,比如 CentOS 或 Ubuntu 上执行:

# Ubuntu / Debian
sudo apt update && sudo apt install docker.io -y

# CentOS / RHEL
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io

# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

装好之后,跑一句 docker version 看看有没有输出。只要能看到 Client 和 Server 两段信息,就说明你的环境已经 OK 了。这里顺便提一句,如果你是在国内服务器上操作,建议给 Docker 配置一下国内镜像加速源,否则拉取镜像时那速度会让人抓狂。

二、镜像与容器:先分清这两个“兄弟”

💡 深度技术指南:别再只会用宝塔了!手把手带你玩转 Nginx 反向代理,看完这篇你也能轻松搞定

这是新手最容易混淆的概念。笔者用一个生活化的比喻来解释:镜像(Image)就是“安装光盘”,容器(Container)就是“装好的软件”。光盘可以反复使用,装出来的软件可以独立运行、互不干扰。镜像本身是只读的,而容器是动态的、可写的。

我们最常用的几个命令,其实就围绕这两者打转:

  • 拉取镜像docker pull nginx:latest
  • 查看本地镜像docker images
  • 运行容器docker run -d --name my-nginx -p 8080:80 nginx
  • 查看运行中的容器docker ps
  • 停止/启动/删除容器docker stop my-nginx / docker start my-nginx / docker rm -f my-nginx

注意看上面 docker run 这条命令里的参数:-d 表示后台运行,--name 给容器起个名字,-p 8080:80 是把宿主机的 8080 端口映射到容器里的 80 端口。这是最核心的端口映射玩法,理解了它,你就理解了 Docker 网络的基础。

三、数据持久化:别让数据跟着容器“跑路”

容器有一个特性:一旦删除,容器内部产生的数据就全没了。比如你跑了个 MySQL,往里面写了一大堆数据,结果手一抖把容器删了,数据也跟着灰飞烟灭。这显然不行。

解决办法就是挂载数据卷(Volume)。常用的有两种方式:

1. 绑定挂载(Bind Mount)

把宿主机的一个目录直接映射到容器里:

docker run -d --name mysql-db \
  -v /home/ubuntu/mysql-data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=yourpassword \
  -p 3306:3306 mysql:8.0

这样,数据就存在宿主机的 /home/ubuntu/mysql-data 目录里,容器随便删,数据稳稳的。

2. 数据卷(Volume)

这是 Docker 官方推荐的方式,用 docker volume create 创建,然后挂载:

docker volume create mydata
docker run -d --name my-app -v mydata:/app/data my-image

数据卷由 Docker 管理,比绑定挂载更安全,跨主机迁移也方便。

四、写个 Dockerfile:打造你的专属镜像

光会拉现成的镜像还不够,真正的项目需要定制化。这时候就需要写 Dockerfile 了。说白了,这就是一张“菜谱”,告诉 Docker 怎么一步步构建你的应用镜像。

咱们以部署一个简单的 Python Flask 应用为例:

# 基于官方 Python 3.11 镜像
FROM python:3.11-slim

# 设置工作目录
WORKDIR /app

# 先复制依赖文件,充分利用缓存
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 再复制项目代码
COPY . .

# 暴露端口
EXPOSE 5000

# 启动命令
CMD ["python", "app.py"]

然后执行 docker build -t my-flask-app . 就能构建出名为 my-flask-app 的镜像。构建成功后,直接 docker run -d -p 5000:5000 my-flask-app 就完成部署了。

这里有个小技巧:把依赖文件(requirements.txt)先复制进去,再复制代码。因为 Docker 构建时每一层都有缓存,只要依赖文件没变,后续构建就不会重新安装依赖,速度会快很多。

五、编排工具:容器多了怎么管?

当你只有一两个容器时,手动敲命令没问题。但一旦涉及多个服务(比如前端、后端、数据库、缓存),就需要一个“管家”来统一管理——这就是 Docker Compose。

Docker Compose 的核心是一个 docker-compose.yml 文件,用 YAML 语法描述所有服务。比如咱们要跑一个 WordPress + MySQL 的组合:

version: '3.8'

services:
  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: wordpress
    volumes:
      - db_data:/var/lib/mysql

  wordpress:
    image: wordpress:latest
    restart: always
    depends_on:
      - db
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: rootpass

volumes:
  db_data:

保存文件后,在同一个目录下执行 docker compose up -d,两个服务就同时跑起来了。要停掉全部服务,执行 docker compose down 即可。有了 Compose,你再也不用记那一长串 docker run 命令了,版本化管理也方便,团队协作时把文件提交到 Git 仓库就行。

六、日常排障:日志与进入容器

服务跑起来了,但报错了怎么办?别慌,两个命令搞定 80% 的问题:

  • 查看日志docker logs -f 容器名-f 表示持续跟踪输出)
  • 进入容器内部docker exec -it 容器名 /bin/bash

进入容器后,你就可以像操作普通 Linux 系统一样查看文件、调试进程了。比如排查 Nginx 配置:

docker exec -it my-nginx bash
cat /etc/nginx/nginx.conf

另外,docker stats 可以实时查看所有容器的 CPU、内存占用,是排查性能问题的利器。

七、给新手的几点实在建议

文章最后,笔者想掏心窝子说几句。Docker 本身不难,难的是坚持动手。每天 5 分钟,拉个镜像、起个容器、挂个数据卷,一周下来你就发现,那些曾经觉得高深的概念其实就那么回事。

另外,实践一定要有真实的服务器环境。本地虚拟机和云服务器完全是两码事——云服务器上你需要考虑安全组规则、公网 IP、带宽限制,这些才是生产环境真正会遇到的坑。如果你还没有一台像样的云服务器,建议选一家靠谱的云厂商。笔者(站长)自己一直在用阿里云和腾讯云的轻量应用服务器,性价比高,而且对新用户友好。购买时记得选择 CentOS 7.9 或 Ubuntu 22.04 的系统镜像,这两个系统对 Docker 的支持最稳定,网上教程也多,遇到问题搜起来方便。

至于域名,前期调试用 IP 访问就够了,等真正要上线项目时再注册也不迟。但如果你打算做正规项目,域名和备案一定要提前规划,别等到项目快上线了才手忙脚乱。

好了,今天的分享就到这里。拿起你的键盘,打开终端,从 docker pull nginx 开始你的容器之旅吧。遇到任何问题,欢迎在评论区留言讨论,咱们下期见。

相关技术专题与延伸阅读

💡 【高性价比独享云服务器限时 1 折起】

新手搭建网站或部署容器,推荐选择高性价比独享云服务器。点击下方通道可享受限时折扣与专属优惠券:

👉 点此前往领取云服务器限时优惠券

🎁 全套实操配置文件与 AI 提效资料包免费下载

本文涉及的全套 Docker Compose 配置文件、服务器运维避坑手册及 AI 提效指令库已完整打包上传至夸克网盘,可直接免费极速转存:

👉 点击前往夸克网盘免费极速转存获取

💡 提示:推荐使用手机【夸克网盘 App】打开保存,新用户首月免费赠送 1TB 超大空间与免流量极速下载特权。

滚动至顶部