banner
约 1,200 字
4 分钟

Docker 入门教程:彻底告别"在我电脑上是好的"

摘要

Docker 把应用和依赖打包成镜像,在哪跑都一样。本教程依据 Docker 官方文档整理,介绍镜像/容器/仓库概念、官方脚本安装与镜像加速、run 的端口映射与数据卷挂载、ps/logs/exec 等常用命令,以及编写 Dockerfile 构建自己的镜像。

Docker 入门教程:镜像、容器与常用命令

"在我电脑上明明是好的"——Docker 就是为了终结这句话而生。它把应用和依赖打包成标准化的镜像,在任何装了 Docker 的机器上跑起来都一模一样。本教程依据 Docker 官方文档(docs.docker.com)整理。

一、核心概念

  • 镜像(Image):应用的安装包,只读模板

  • 容器(Container):镜像运行起来的实例,可以创建多个

  • 仓库(Registry):存镜像的地方,默认是 Docker Hub

类比:镜像是安装光盘,容器是装出来的系统(可以同时跑很多份)。

二、安装

Linux 上用官方脚本一键安装(Ubuntu/Debian 等):

bash
curl -fsSL https://get.docker.com | sh
sudo systemctl enable --now docker
docker --version

让当前用户免 sudo 使用(需重新登录生效):

bash
sudo usermod -aG docker $USER

国内拉取镜像慢,需要配置镜像加速器:编辑 /etc/docker/daemon.json 加入 {"registry-mirrors": ["https://docker.m.daocloud.io"]}systemctl restart docker

三、第一个容器

bash
docker run hello-world          # 官方欢迎容器
docker run -d -p 8080:80 nginx  # 后台跑一个 Nginx,8080 映射到容器 80
  • -d:后台运行

  • -p 宿主端口:容器端口:端口映射

  • --name xxx:给容器起名

  • -v 宿主目录:容器目录:挂载数据卷,重要数据必须挂卷,容器删了数据还在

bash
docker run -d --name web -p 8080:80 -v /opt/html:/usr/share/nginx/html nginx

四、常用命令速查

bash
docker ps                # 看运行中的容器
docker ps -a             # 包括已停止的
docker logs -f web       # 实时看容器日志
docker exec -it web bash # 进入容器内部
docker stop web          # 停止
docker start web         # 再启动
docker rm web            # 删除容器(需先停止)
docker images            # 本地镜像列表
docker rmi nginx         # 删除镜像
docker system df         # 看 Docker 占了多少磁盘
docker system prune      # 清理无用镜像/容器/网络

五、构建自己的镜像:Dockerfile

在项目根目录建 Dockerfile

dockerfile
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

构建并运行:

bash
docker build -t myapp:1.0 .
docker run -d -p 3000:3000 myapp:1.0

六、总结

需求

命令

跑一个服务

docker run -d -p 8080:80 镜像

看容器

docker ps -a

看日志

docker logs -f 容器名

进容器排查

docker exec -it 容器名 bash

持久化数据

-v 宿主目录:容器目录

磁盘清理

docker system prune

入门之后,下一步是学习 Docker Compose 管理多容器应用——真实项目几乎都是数据库 + 应用 + 反代的组合。

END