Docker 入门与实践指南
Docker 是一种开源的容器化平台,可以让开发者将应用和依赖打包到一个轻量级、可移植的容器中,并在任何地方运行。
它的出现彻底改变了软件交付方式,使“在我电脑上能运行”不再成为借口。
1. 为什么要用 Docker?
在传统开发模式中:
- 不同环境(开发/测试/生产)配置不一致,导致运行失败。
- 部署一个应用需要安装各种依赖,流程复杂。
- 迁移到新服务器需要大量环境搭建时间。
Docker 的优势:
- 环境一致性:应用在容器中运行,不依赖宿主机环境。
- 快速部署:容器启动速度快,秒级上线。
- 资源隔离:容器之间互不干扰,安全性高。
- 可移植性:支持 Linux、Windows、Mac 以及各类云平台。
- 高效利用资源:相比虚拟机,容器更轻量,占用更少内存。
2. 核心概念
| 概念 | 作用 | 类比 |
|---|---|---|
| Image(镜像) | 应用的只读模板,包含运行环境和代码 | 模板文件 |
| Container(容器) | 镜像的运行实例,可读写 | 程序副本 |
| Dockerfile | 定义镜像构建步骤的脚本文件 | 配方 |
| Registry(仓库) | 存储和分发镜像的服务(如 Docker Hub) | 应用商店 |
| Volume(数据卷) | 持久化容器数据的存储机制 | 外接硬盘 |
| Network(网络) | 让容器之间或与外部通信 | 局域网 |
3. Docker 架构与工作原理
Docker 由以下组件组成:
- Docker Client:命令行工具,发送指令给 Docker Daemon。
- Docker Daemon:后台服务,负责构建、运行和管理容器。
- Docker Images:运行应用所需的只读模板。
- Docker Containers:镜像运行起来的实例。
- Registry:存储镜像的服务,如 Docker Hub 或私有仓库。
运行流程:
- 用户通过
docker run命令启动容器。 - Docker Daemon 从本地或远程拉取镜像。
- 基于镜像启动一个新的容器。
- 容器运行应用并与宿主机进行交互。
4. 安装 Docker
Linux(Ubuntu)
sudo apt update
sudo apt install docker.io -y
sudo systemctl enable --now docker
## 5. 基本命令
```c
bash
# 查看版本
docker version
# 拉取镜像
docker pull nginx:latest
# 运行容器(后台运行)
docker run -d --name my-nginx -p 8080:80 nginx:latest
# 查看运行中的容器
docker ps
# 停止容器
docker stop my-nginx
# 删除容器
docker rm my-nginx
# 删除镜像
docker rmi nginx:latest
6. 使用 Dockerfile 构建镜像
新建 Dockerfile:
dockerfile
# 使用官方 Python 镜像
FROM python:3.11
# 设置工作目录
WORKDIR /app
# 复制当前目录到容器
COPY . /app
# 安装依赖
RUN pip install -r requirements.txt
# 启动应用
CMD ["python", "app.py"]
构建镜像:
docker build -t my-python-app .
运行容器:
docker run -d -p 5000:5000 my-python-app
- 数据持久化与网络
数据卷(Volume)
docker volume create mydata
docker run -d -v mydata:/var/lib/mysql mysql:latest
自定义网络
bash
docker network create mynet
docker run -d --network=mynet --name=app nginx
docker run -d --network=mynet --name=db mysql
8. 多容器编排:Docker Compose
docker-compose.yml 示例:
```bash
yaml
version: "3"
services:
web:
image: nginx:latest
ports:
- "8080:80"
db:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: root
启动:
docker-compose up -d
总结
Docker 让应用部署变得快速、可移植、可扩展,是现代 DevOps 的核心工具之一。
建议从简单的容器运行开始,逐步掌握 Dockerfile 编写 和 Compose 编排,最终配合 Kubernetes,实现完整的云原生应用部署流程。
1416

被折叠的 条评论
为什么被折叠?



