播放器加载中...

Docker 基础使用入门:安装、常见命令、核心概念与实践

作者:admin

面向新手,把 Docker 的安装、镜像与容器概念、常见命令、Nginx 实践和 Docker Compose 入门一次讲清楚。

文章图库(点击可放大)

Docker 基础使用入门:安装、常见命令、核心概念与实践

如果你刚接触 Docker,最容易被绕进去的不是命令本身,而是这些词总在一起出现:镜像容器仓库数据卷端口映射Compose。看起来很多,但真正拆开以后,逻辑其实不复杂。

这篇文章就是面向新手写的,一次把最基础、最常用、最容易在刚上手时卡住的内容讲清楚:

  • Docker 到底是什么
  • Docker 为什么好用
  • Docker 安装怎么做
  • 常见命令怎么用
  • 核心概念怎么理解
  • 一个完整的小实践怎么跑起来
先记住一句话

Docker 的核心目标不是“让命令变酷”,而是让你的程序在不同机器上都能用同一套方式运行。

什么是 Docker

Docker 官方的定义可以概括成一句话:

Docker 是一个用来开发、交付和运行应用的开放平台。

更白话一点说:

你可以把 Docker 理解成一个“打包 + 运行环境”的工具。

以前你把项目发给别人时,最容易出现的问题是:

  • 我电脑上能跑,你电脑上跑不起来
  • 我的 Python / Node / MySQL 版本和你不一样
  • 缺库、缺环境变量、缺系统依赖

Docker 要解决的就是这个问题。它会把程序运行需要的环境,一起打包成统一格式,然后在别的机器上尽量用同样的方式跑起来。

Docker 为什么这么常用

Docker 适合开发者,主要是因为它有几个很现实的优点:

  1. 环境一致
  • 你本地能跑,测试机和服务器也更容易跑。
  1. 部署快
  • 拉镜像、起容器,很多服务几分钟就能启动。
  1. 隔离性更好
  • 不同项目的运行环境可以分开,不容易互相污染。
  1. 迁移方便
  • 换机器时,不用重新手搓一遍环境。

先把几个最核心的概念搞懂

1. 镜像 Image

镜像可以理解成:运行模板

它里面包含:

  • 应用程序本身
  • 运行依赖
  • 需要的基础环境
  • 启动时要执行的默认命令

比如:

  • nginx:latest
  • mysql:8
  • python:3.12

这些都是镜像。

2. 容器 Container

容器可以理解成:镜像跑起来之后的实例

关系可以简单记成:

  • 镜像 = 模板
  • 容器 = 正在运行的实例

有点像:

  • 类 = 模板
  • 对象 = 实例

3. 仓库 Registry

仓库就是放镜像的地方。

最常见的是:

  • Docker Hub

你执行:

bash
docker pull nginx

其实就是从仓库里把 nginx 镜像拉到本地。

4. 数据卷 Volume

容器默认更偏“临时环境”。如果容器删了,里面很多运行时数据也可能跟着没了。

数据卷就是用来解决持久化问题的。

比如:

  • MySQL 数据库存盘
  • 网站上传文件
  • 日志目录

这些都适合挂到 Volume。

5. 端口映射 Port Mapping

容器内部服务跑在容器自己的端口里,外部机器不能直接访问,所以需要映射。

例如:

bash
docker run -p 8080:80 nginx

意思是:

  • 宿主机的 8080
  • 映射到容器里的 80

这样你访问本机 8080,实际上就是在访问容器里的 Nginx。

Docker 怎么安装

安装方式分平台看。

Windows / macOS

对于普通用户,最省事的方式通常是:

  • 直接安装 Docker Desktop

这种方式适合:

  • 本地开发
  • 学习和测试
  • 个人电脑日常使用

Ubuntu / Linux 服务器

如果你是服务器环境,更常见的是安装 Docker Engine。

Docker 官方文档推荐的稳定方式,是通过官方 apt 仓库安装。步骤大意如下:

1. 准备基础工具

bash
sudo apt update
sudo apt install ca-certificates curl

2. 添加 Docker 官方 GPG key 和仓库

bash
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 插件

bash
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4. 验证安装

bash
sudo docker run hello-world

如果能看到测试输出,说明 Docker 已经装好并且能正常拉镜像、启动容器。

新手最容易漏的一步

很多人安装完就直接执行 docker ps,结果提示权限不够。Linux 下如果你不想每次都用 sudo,还需要按官方 post-install 文档把当前用户加入 docker 用户组。

最常用的一批 Docker 命令

下面这些命令,基本就是新手阶段最常用的“高频命令表”。

1. 查看 Docker 版本

bash
docker version

作用:

  • 看客户端和服务端版本
  • 快速判断 Docker 是否装好

2. 查看 Docker 详细信息

bash
docker info

作用:

  • 看镜像数、容器数、存储驱动、系统信息
  • 排查环境问题时很常用

3. 拉取镜像

bash
docker pull nginx

作用:

  • 从镜像仓库把 nginx 下载到本地

4. 查看本地镜像

bash
docker images

作用:

  • 查看你本地已经有哪些镜像

5. 启动一个容器

bash
docker run -d --name my-nginx -p 8080:80 nginx

参数解释:

  • -d:后台运行
  • --name my-nginx:容器命名为 my-nginx
  • -p 8080:80:把宿主机 8080 映射到容器 80
  • nginx:使用 nginx 镜像

6. 查看正在运行的容器

bash
docker ps

如果你想连停止的也一起看:

bash
docker ps -a

7. 查看容器日志

bash
docker logs my-nginx

持续跟踪输出:

bash
docker logs -f my-nginx

8. 进入正在运行的容器

bash
docker exec -it my-nginx sh

作用:

  • 进入容器内部排查问题
  • 看文件、看配置、执行命令

如果容器里有 bash,也可以:

bash
docker exec -it my-nginx bash

9. 停止容器

bash
docker stop my-nginx

10. 启动已停止容器

bash
docker start my-nginx

11. 删除容器

bash
docker rm my-nginx

如果容器还在运行,先停掉再删。

12. 删除镜像

bash
docker rmi nginx

13. 查看数据卷

bash
docker volume ls

14. 查看网络

bash
docker network ls

15. 用 Compose 启动服务

bash
docker compose up -d

作用:

  • compose.yamldocker-compose.yml 一次启动多服务

停止并删除:

bash
docker compose down

docker run 为什么这么重要

新手阶段你会发现,很多例子都从 docker run 开始。

因为它几乎就是 Docker 的核心体验入口。

Docker 官方命令参考里也强调了:docker run 会创建并运行一个新的容器;如果本地没有对应镜像,还会自动拉取。

所以你可以把它理解成:

最重要的入门命令之一。

一个最简单的实践:用 Docker 跑一个 Nginx 网站

这一步很适合新手,因为效果直观。

第一步:拉镜像

bash
docker pull nginx

第二步:启动容器

bash
docker run -d --name my-nginx -p 8080:80 nginx

第三步:检查容器状态

bash
docker ps

如果状态正常,你会看到 my-nginx 正在运行。

第四步:浏览器访问

打开:

text
http://localhost:8080

如果页面能打开,说明你的容器已经把 Nginx 服务跑起来了。

第五步:看日志

bash
docker logs my-nginx

第六步:进入容器看看

bash
docker exec -it my-nginx sh

你可以在里面看 Nginx 默认站点文件:

bash
ls /usr/share/nginx/html

再进阶一点:把自己的静态页面挂进去

如果你想让容器里的 Nginx 直接显示你自己的网页,可以做一个目录挂载。

假设你本地有一个 site 文件夹,里面有 index.html,可以这样跑:

bash
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 示例:

yaml
services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./site:/usr/share/nginx/html:ro

启动:

bash
docker compose up -d

停止:

bash
docker compose down

新手最常遇到的坑

1. 容器起不来

先看日志:

bash
docker logs 容器名

大多数问题,第一步都不是乱改,而是先看日志。

2. 端口冲突

比如你映射了:

bash
-p 8080:80

但宿主机的 8080 已经被别的程序占用了,那容器就可能启动失败或访问不到。

解决方法:

  • 换一个宿主机端口
  • 先关掉占用该端口的程序

3. 数据没保存

如果你把重要数据直接放在容器内部,而不是挂 Volume 或挂载宿主机目录,删除容器后数据可能就没了。

所以涉及下面这些内容时,要优先考虑持久化:

  • 数据库
  • 上传文件
  • 配置文件
  • 日志

4. 误以为“镜像”和“容器”是一个东西

这也是最常见的概念混淆。

记住:

  • 镜像是模板
  • 容器是跑起来的实例

删掉容器,不等于删掉镜像。

5. 每次命令都要重新写很长一串

这种情况往往说明:

  • 你该考虑 Docker Compose
  • 或者该把命令整理成脚本了

适合新手的学习顺序

如果你想真正学会 Docker,而不是只会复制命令,我建议顺序如下:

  1. 先理解 Image / Container / Volume / Port Mapping
  2. 学会 pull / run / ps / logs / exec / stop / rm
  3. 自己跑通一个 Nginx 容器
  4. 再学 Volume 持久化
  5. 最后再学 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/>

互动

发表评论

已通过的评论

还没有评论。

🐱 目录