Docker 使用指南
Docker 是一个平台,允许你使用容器化技术来自动化部署、扩展和管理应用程序。以下是帮助你入门的基本指南:
1. 安装 Docker
首先,你需要在机器上安装 Docker。安装过程取决于你的操作系统。
- Windows: Docker Desktop for Windows
- macOS: Docker Desktop for Mac
- Linux: Docker Engine
2. 理解 Docker 概念
- 镜像 (Images): 包含应用程序及其所有依赖项的只读模板。
- 容器 (Containers): Docker 镜像的实例,作为独立的进程在主机上运行。
- Dockerfile: 包含如何构建 Docker 镜像的指令脚本。
- Docker Hub: 一个云端存储库,Docker 用户可以在其中创建、测试、存储和分发容器镜像。
3. 基本 Docker 命令
以下是一些基本的 Docker 命令,帮助你入门:
-
检查 Docker 版本:
docker --version
-
运行一个容器:
docker run hello-world
-
列出正在运行的容器:
docker ps
-
列出所有容器:
docker ps -a
-
停止一个容器:
docker stop <container_id>
-
移除一个容器:
docker rm <container_id>
-
列出镜像:
docker images
-
移除一个镜像:
docker rmi <image_id>
4. 创建一个 Dockerfile
Dockerfile
用于创建自定义镜像。以下是一个简单的 Dockerfile
示例:
# 使用官方 Python 运行时作为基础镜像
FROM python:3.8-slim
# 设置工作目录
WORKDIR /app
# 将当前目录的内容复制到容器的 /app 目录
COPY . /app
# 安装 requirements.txt 中指定的包
RUN pip install --no-cache-dir -r requirements.txt
# 使端口 80 可供外部使用
EXPOSE 80
# 定义环境变量
ENV NAME World
# 容器启动时运行 app.py
CMD ["python", "app.py"]
5. 构建和运行 Docker 镜像
创建 Dockerfile
后,你可以构建和运行 Docker 镜像:
-
构建 Docker 镜像:
docker build -t my-python-app .
-
运行 Docker 容器:
docker run -p 4000:80 my-python-app
6. 使用 Docker Compose
Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。你可以使用 docker-compose.yml
文件来配置应用的服务。
以下是一个 docker-compose.yml
示例文件:
version: '3'
services:
web:
build: .
ports:
- "4000:80"
volumes:
- .:/app
environment:
- NAME=World
redis:
image: "redis:alpine"
使用 Docker Compose 启动应用:
docker-compose up
7. 访问 Docker 容器日志
你可以使用以下命令查看正在运行的容器的日志:
docker logs <container_id>
8. Docker 网络
Docker 自动为容器创建一个桥接网络,容器之间可以通过该网络通信。如果需要,你可以创建自定义网络:
-
创建网络:
docker network create my-network
-
在网络上运行容器:
docker run -d --name my-container --network my-network my-image
9. Docker 卷
Docker 卷用于持久化数据:
-
创建卷:
docker volume create my-volume
-
将卷挂载到容器:
docker run -d -v my-volume:/app/data my-image
10. Docker Hub
Docker Hub 是一个公共注册表,允许你分享镜像:
-
登录 Docker Hub:
docker login
-
标记你的镜像:
docker tag my-image myusername/my-image
-
推送你的镜像:
docker push myusername/my-image
这个指南应该能帮助你入门 Docker。欲了解更多高级用法和功能,可以参考 Docker 文档。如果你有任何具体问题或需要进一步的帮助,请告诉我!