Docker学习
·
一、Docker 核心概念(先理解,再动手)
这是 Docker 的底层逻辑,理解后操作会更清晰:
- 镜像(Image)
- 类比:可以理解为一个 “软件安装包”(比如包含 Ubuntu 系统 + Python 环境 + 你的应用代码),是只读的、不可修改的模板。
- 特点:分层存储(多个镜像可共享底层层,节省空间)、可通过 Dockerfile 构建。
- 容器(Container)
- 类比:镜像运行起来的 “实例”,相当于基于安装包启动的 “独立软件环境”,是可读写的、独立的运行单元。
- 特点:隔离性(容器间互不干扰)、轻量级(共享宿主机内核,比虚拟机快)、可启停 / 删除。
- 仓库(Repository)
- 类比:存放镜像的 “网盘”(比如 Docker Hub 是官方公共仓库,也可搭建私有仓库)。
- 常用操作:
pull(拉取镜像)、push(推送镜像)。
- Dockerfile
- 定义:一个文本文件,包含构建镜像的 “指令集”(比如指定基础镜像、安装依赖、复制代码、启动命令),是自动化构建镜像的核心。
二、Docker 基础操作(必掌握的命令)
先确保已安装 Docker(Windows/macOS 可装 Docker Desktop,Linux 可通过包管理器安装),验证安装:
bash
运行
docker --version # 查看Docker版本
docker info # 查看Docker系统信息
docker run hello-world # 运行测试容器,验证环境正常
1. 镜像相关命令
表格
| 命令 | 作用 | 示例 |
|---|---|---|
docker pull <镜像名:版本> | 拉取镜像 | docker pull ubuntu:20.04(拉取 Ubuntu 20.04 镜像) |
docker images | 查看本地所有镜像 | docker images(列出镜像名称、标签、ID、大小) |
docker rmi <镜像ID/名称> | 删除镜像 | docker rmi ubuntu:20.04(删除指定镜像) |
docker build -t <镜像名:标签> <Dockerfile路径> | 构建镜像 | docker build -t myapp:v1 .(基于当前目录的 Dockerfile 构建镜像) |
2. 容器相关命令(最常用)
表格
| 命令 | 作用 | 示例 |
|---|---|---|
docker run [参数] <镜像名> | 创建并启动容器 | docker run -it ubuntu:20.04 /bin/bash(交互式启动 Ubuntu 容器,进入命令行) |
关键参数说明:- -it:交互式 + 分配终端,用于进入容器操作- -d:后台运行容器(守护进程模式)- -p 宿主机端口:容器端口:端口映射(比如-p 8080:80)- -v 宿主机目录:容器目录:数据卷挂载(持久化数据)- --name 容器名:给容器命名(方便管理) | ||
docker ps | 查看运行中的容器 | docker ps(加-a查看所有容器,包括停止的) |
docker start/stop/restart <容器名/ID> | 启动 / 停止 / 重启容器 | docker start my-ubuntu |
docker exec -it <容器名/ID> /bin/bash | 进入运行中的容器 | docker exec -it my-ubuntu /bin/bash |
docker rm <容器名/ID> | 删除容器 | docker rm my-ubuntu(加-f强制删除运行中的容器) |
docker logs <容器名/ID> | 查看容器日志 | docker logs -f my-app(-f实时查看) |
三、实战:用 Docker 运行一个简单的 Web 应用(Nginx)
通过这个案例,把基础命令串起来:
- 拉取 Nginx 镜像:
bash
运行
docker pull nginx:latest - 启动 Nginx 容器(端口映射 + 后台运行):
bash
运行
docker run -d --name my-nginx -p 8080:80 nginx - 验证:打开浏览器访问
http://localhost:8080,能看到 Nginx 默认页面即成功。 - 进入容器修改页面(体验容器操作):
bash
运行
docker exec -it my-nginx /bin/bash # 进入容器后,修改默认页面 echo "Hello Docker!" > /usr/share/nginx/html/index.html - 刷新浏览器,能看到 “Hello Docker!”,验证修改生效。
- 停止并删除容器:
bash
运行
docker stop my-nginx docker rm my-nginx
四、进阶入门(掌握后更实用)
-
Dockerfile 编写:示例(构建一个包含 Python 的自定义镜像):
dockerfile
# 指定基础镜像 FROM ubuntu:20.04 # 维护者信息(可选) MAINTAINER yourname <your@email.com> # 安装Python RUN apt-get update && apt-get install -y python3 python3-pip # 设置工作目录 WORKDIR /app # 复制本地文件到容器 COPY ./app.py /app/ # 启动命令 CMD ["python3", "app.py"]构建命令:
docker build -t my-python-app:v1 . -
数据卷(Volume):解决容器删除后数据丢失的问题,比如挂载 Nginx 的网页目录:
bash
运行
# 创建数据卷 docker volume create nginx-data # 启动容器并挂载数据卷 docker run -d --name my-nginx -p 8080:80 -v nginx-data:/usr/share/nginx/html nginx此时修改宿主机的数据卷目录(可通过
docker volume inspect nginx-data查看路径),容器内的页面会同步更新。 -
Docker Compose(多容器管理):当需要运行多个容器(比如前端 + 后端 + 数据库)时,用
docker-compose.yml统一管理,示例:yaml
version: '3' services: nginx: image: nginx:latest ports: - "8080:80" volumes: - nginx-data:/usr/share/nginx/html mysql: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=123456 volumes: - mysql-data:/var/lib/mysql volumes: nginx-data: mysql-data:启动:
docker-compose up -d,停止:docker-compose down。
总结
- 核心三要素:镜像(只读模板)、容器(镜像运行实例)、仓库(镜像存储),是理解 Docker 的基础。
- 必掌握操作:镜像的拉取 / 构建、容器的启停 / 进入 / 端口映射 / 数据挂载,通过 Nginx 实战能快速上手。
- 进阶方向:Dockerfile 编写(自定义镜像)、Docker Compose(多容器管理),是解决实际开发问题的关键。
初学者建议先反复练习 “镜像拉取→容器启动→进入容器操作→停止删除容器” 的流程,再逐步学习 Dockerfile 和 Compose,不用急于掌握所有细节,先跑通案例,再深入理解原理。
更多推荐


所有评论(0)