Docker 是一个开源平台,用于开发、部署和运行应用程序。它通过容器化技术,将应用程序及其依赖打包在一起,确保在任何环境中都能一致运行。以下是 Docker 的核心概念和基本使用方法的简要介绍:
1. 容器与镜像
- 镜像(Image):镜像是一个只读模板,包含运行应用程序所需的代码、库和配置文件。例如,一个镜像可以包含 Ubuntu 操作系统、Python 环境和 Flask 应用。
- 容器(Container):容器是镜像的运行实例。你可以启动、停止、删除容器,每个容器都是独立的,拥有自己的文件系统和网络接口。
2. Docker 的优势
- 一致性:开发、测试和生产环境一致,避免“在我机器上能运行”的问题。
- 隔离性:每个容器相互隔离,确保应用互不干扰。
- 轻量:容器共享主机操作系统内核,比虚拟机更轻量、启动更快。
- 可移植性:容器可以在任何支持 Docker 的平台上运行。
3. Docker 的基本命令
- 拉取镜像:从 Docker Hub 下载镜像。
docker pull ubuntu
- 运行容器:基于镜像启动容器。
docker run -it ubuntu /bin/bash
- 列出容器:查看正在运行的容器。
docker ps
- 停止容器:停止运行中的容器。
docker stop <container_id>
- 删除容器:删除已停止的容器。
docker rm <container_id>
- 列出镜像:查看本地镜像。
docker images
- 删除镜像:删除本地镜像。
docker rmi <image_id>
4. Dockerfile
Dockerfile 是一个文本文件,包含构建镜像的指令。通过 Dockerfile,你可以自定义镜像。
示例 Dockerfile:
# 使用基础镜像
FROM ubuntu:20.04
# 安装依赖
RUN apt-get update && apt-get install -y python3
# 复制应用代码
COPY . /app
# 设置工作目录
WORKDIR /app
# 设置启动命令
CMD ["python3", "app.py"]
构建镜像:
docker build -t my-python-app .
5. Docker Compose
Docker Compose 用于定义和运行多容器应用。通过 docker-compose.yml
文件,你可以配置多个服务。
示例 docker-compose.yml:
version: '3'
services:
web:
image: my-python-app
ports:
- "5000:5000"
redis:
image: redis
启动服务:
docker-compose up
6. Docker Hub
Docker Hub 是一个镜像仓库,你可以从中拉取官方或社区镜像,也可以推送自己的镜像。
推送镜像:
docker tag my-python-app username/my-python-app
docker push username/my-python-app
7. 网络与数据管理
- 网络:Docker 提供多种网络模式,如
bridge
、host
和none
,默认情况下容器使用bridge
网络。 - 数据卷:数据卷用于持久化容器数据,即使容器删除,数据也不会丢失。
创建数据卷:
docker volume create my_volume
使用数据卷:
docker run -v my_volume:/data ubuntu
8. 总结
Docker 通过容器化技术简化了应用的开发、部署和管理。掌握 Docker 的基本概念和操作后,你可以更高效地构建和运行应用。