Docker 基础使用入门:安装、常见命令、核心概念与实践
作者:admin
面向新手,把 Docker 的安装、镜像与容器概念、常见命令、Nginx 实践和 Docker Compose 入门一次讲清楚。
文章图库(点击可放大)
Docker 基础使用入门:安装、常见命令、核心概念与实践
如果你刚接触 Docker,最容易被绕进去的不是命令本身,而是这些词总在一起出现:镜像、容器、仓库、数据卷、端口映射、Compose。看起来很多,但真正拆开以后,逻辑其实不复杂。
这篇文章就是面向新手写的,一次把最基础、最常用、最容易在刚上手时卡住的内容讲清楚:
- Docker 到底是什么
- Docker 为什么好用
- Docker 安装怎么做
- 常见命令怎么用
- 核心概念怎么理解
- 一个完整的小实践怎么跑起来
Docker 的核心目标不是“让命令变酷”,而是让你的程序在不同机器上都能用同一套方式运行。
什么是 Docker
Docker 官方的定义可以概括成一句话:
Docker 是一个用来开发、交付和运行应用的开放平台。
更白话一点说:
你可以把 Docker 理解成一个“打包 + 运行环境”的工具。
以前你把项目发给别人时,最容易出现的问题是:
- 我电脑上能跑,你电脑上跑不起来
- 我的 Python / Node / MySQL 版本和你不一样
- 缺库、缺环境变量、缺系统依赖
Docker 要解决的就是这个问题。它会把程序运行需要的环境,一起打包成统一格式,然后在别的机器上尽量用同样的方式跑起来。
Docker 为什么这么常用
Docker 适合开发者,主要是因为它有几个很现实的优点:
- 环境一致
- 你本地能跑,测试机和服务器也更容易跑。
- 部署快
- 拉镜像、起容器,很多服务几分钟就能启动。
- 隔离性更好
- 不同项目的运行环境可以分开,不容易互相污染。
- 迁移方便
- 换机器时,不用重新手搓一遍环境。
先把几个最核心的概念搞懂
1. 镜像 Image
镜像可以理解成:运行模板。
它里面包含:
- 应用程序本身
- 运行依赖
- 需要的基础环境
- 启动时要执行的默认命令
比如:
nginx:latestmysql:8python:3.12
这些都是镜像。
2. 容器 Container
容器可以理解成:镜像跑起来之后的实例。
关系可以简单记成:
- 镜像 = 模板
- 容器 = 正在运行的实例
有点像:
- 类 = 模板
- 对象 = 实例
3. 仓库 Registry
仓库就是放镜像的地方。
最常见的是:
- Docker Hub
你执行:
docker pull nginx
其实就是从仓库里把 nginx 镜像拉到本地。
4. 数据卷 Volume
容器默认更偏“临时环境”。如果容器删了,里面很多运行时数据也可能跟着没了。
数据卷就是用来解决持久化问题的。
比如:
- MySQL 数据库存盘
- 网站上传文件
- 日志目录
这些都适合挂到 Volume。
5. 端口映射 Port Mapping
容器内部服务跑在容器自己的端口里,外部机器不能直接访问,所以需要映射。
例如:
docker run -p 8080:80 nginx
意思是:
- 宿主机的
8080 - 映射到容器里的
80
这样你访问本机 8080,实际上就是在访问容器里的 Nginx。
Docker 怎么安装
安装方式分平台看。
Windows / macOS
对于普通用户,最省事的方式通常是:
- 直接安装 Docker Desktop
这种方式适合:
- 本地开发
- 学习和测试
- 个人电脑日常使用
Ubuntu / Linux 服务器
如果你是服务器环境,更常见的是安装 Docker Engine。
Docker 官方文档推荐的稳定方式,是通过官方 apt 仓库安装。步骤大意如下:
1. 准备基础工具
sudo apt update
sudo apt install ca-certificates curl
2. 添加 Docker 官方 GPG key 和仓库
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
然后把 Docker 官方仓库加入系统源。
3. 安装 Docker Engine 和 Compose 插件
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
4. 验证安装
sudo docker run hello-world
如果能看到测试输出,说明 Docker 已经装好并且能正常拉镜像、启动容器。
很多人安装完就直接执行 docker ps,结果提示权限不够。Linux 下如果你不想每次都用 sudo,还需要按官方 post-install 文档把当前用户加入 docker 用户组。
最常用的一批 Docker 命令
下面这些命令,基本就是新手阶段最常用的“高频命令表”。
1. 查看 Docker 版本
docker version
作用:
- 看客户端和服务端版本
- 快速判断 Docker 是否装好
2. 查看 Docker 详细信息
docker info
作用:
- 看镜像数、容器数、存储驱动、系统信息
- 排查环境问题时很常用
3. 拉取镜像
docker pull nginx
作用:
- 从镜像仓库把
nginx下载到本地
4. 查看本地镜像
docker images
作用:
- 查看你本地已经有哪些镜像
5. 启动一个容器
docker run -d --name my-nginx -p 8080:80 nginx
参数解释:
-d:后台运行--name my-nginx:容器命名为my-nginx-p 8080:80:把宿主机 8080 映射到容器 80nginx:使用nginx镜像
6. 查看正在运行的容器
docker ps
如果你想连停止的也一起看:
docker ps -a
7. 查看容器日志
docker logs my-nginx
持续跟踪输出:
docker logs -f my-nginx
8. 进入正在运行的容器
docker exec -it my-nginx sh
作用:
- 进入容器内部排查问题
- 看文件、看配置、执行命令
如果容器里有 bash,也可以:
docker exec -it my-nginx bash
9. 停止容器
docker stop my-nginx
10. 启动已停止容器
docker start my-nginx
11. 删除容器
docker rm my-nginx
如果容器还在运行,先停掉再删。
12. 删除镜像
docker rmi nginx
13. 查看数据卷
docker volume ls
14. 查看网络
docker network ls
15. 用 Compose 启动服务
docker compose up -d
作用:
- 按
compose.yaml或docker-compose.yml一次启动多服务
停止并删除:
docker compose down
docker run 为什么这么重要
新手阶段你会发现,很多例子都从 docker run 开始。
因为它几乎就是 Docker 的核心体验入口。
Docker 官方命令参考里也强调了:docker run 会创建并运行一个新的容器;如果本地没有对应镜像,还会自动拉取。
所以你可以把它理解成:
最重要的入门命令之一。
一个最简单的实践:用 Docker 跑一个 Nginx 网站
这一步很适合新手,因为效果直观。
第一步:拉镜像
docker pull nginx
第二步:启动容器
docker run -d --name my-nginx -p 8080:80 nginx
第三步:检查容器状态
docker ps
如果状态正常,你会看到 my-nginx 正在运行。
第四步:浏览器访问
打开:
http://localhost:8080
如果页面能打开,说明你的容器已经把 Nginx 服务跑起来了。
第五步:看日志
docker logs my-nginx
第六步:进入容器看看
docker exec -it my-nginx sh
你可以在里面看 Nginx 默认站点文件:
ls /usr/share/nginx/html
再进阶一点:把自己的静态页面挂进去
如果你想让容器里的 Nginx 直接显示你自己的网页,可以做一个目录挂载。
假设你本地有一个 site 文件夹,里面有 index.html,可以这样跑:
docker run -d \
--name my-site \
-p 8080:80 \
-v $(pwd)/site:/usr/share/nginx/html:ro \
nginx
这样访问 http://localhost:8080 时,显示的就是你自己目录里的网页内容。
Docker Compose 是什么,为什么很多项目都在用
当你项目里只有一个服务时,docker run 就够了。
但如果你有:
- Web 服务
- 数据库
- Redis
- 后台任务
那一个个 docker run 就会开始变乱。
这时候就轮到 Docker Compose 出场了。
你可以把 Compose 理解成:
用一个配置文件描述多个容器怎么一起启动。
比如最简单的 Compose 示例:
services:
web:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./site:/usr/share/nginx/html:ro
启动:
docker compose up -d
停止:
docker compose down
新手最常遇到的坑
1. 容器起不来
先看日志:
docker logs 容器名
大多数问题,第一步都不是乱改,而是先看日志。
2. 端口冲突
比如你映射了:
-p 8080:80
但宿主机的 8080 已经被别的程序占用了,那容器就可能启动失败或访问不到。
解决方法:
- 换一个宿主机端口
- 先关掉占用该端口的程序
3. 数据没保存
如果你把重要数据直接放在容器内部,而不是挂 Volume 或挂载宿主机目录,删除容器后数据可能就没了。
所以涉及下面这些内容时,要优先考虑持久化:
- 数据库
- 上传文件
- 配置文件
- 日志
4. 误以为“镜像”和“容器”是一个东西
这也是最常见的概念混淆。
记住:
- 镜像是模板
- 容器是跑起来的实例
删掉容器,不等于删掉镜像。
5. 每次命令都要重新写很长一串
这种情况往往说明:
- 你该考虑
Docker Compose了 - 或者该把命令整理成脚本了
适合新手的学习顺序
如果你想真正学会 Docker,而不是只会复制命令,我建议顺序如下:
- 先理解 Image / Container / Volume / Port Mapping
- 学会
pull / run / ps / logs / exec / stop / rm - 自己跑通一个 Nginx 容器
- 再学 Volume 持久化
- 最后再学 Docker Compose
这个顺序比较稳,不容易一开始就被多服务编排搞晕。
给新手的最后一句建议
Docker 最有价值的地方,不是命令多,而是:
- 让环境更统一
- 让部署更稳定
- 让项目迁移更省事
所以你刚开始学 Docker,不要盯着所有命令背。先把下面这句话真正吃透:
镜像是模板,容器是实例,Volume 负责持久化,端口映射负责把服务暴露出来。
这四件事明白了,后面的命令你会顺很多。
官方资料
这篇文章的安装方式、Docker 基本概念和关键命令说明,主要参考 Docker 官方文档:
- Docker 概览:<https://docs.docker.com/get-started/docker-overview/>
- Docker Engine 安装:<https://docs.docker.com/engine/install/ubuntu/>
- Docker Engine 文档:<https://docs.docker.com/engine/>
docker run命令参考:<https://docs.docker.com/reference/cli/docker/container/run>docker exec命令参考:<https://docs.docker.com/engine/reference/commandline/exec>docker compose up命令参考:<https://docs.docker.com/reference/cli/docker/compose/up/>