Docker 本地部署是指在本地计算机上安装和配置 Docker 环境,并使用 Docker 来运行和管理应用程序。本地部署可以帮助开发者在自己的机器上快速搭建开发环境,进行应用的开发、测试和调试。以下是一个详细的步骤指南,帮助你在本地计算机上部署 Docker。
1. 安装 Docker
1.1 Windows
- 检查系统要求:确保你的 Windows 版本是 Windows 10 Pro、Enterprise 或 Education(Build 14393 或更高版本)。家庭版用户可能需要更新到 Windows 10 Pro。
- 启用 WSL 2:打开 PowerShell 以管理员身份运行以下命令:
wsl --install
- 下载 Docker Desktop:访问 Docker 官方下载页面,下载适用于 Windows 的 Docker Desktop 安装包。
- 安装 Docker Desktop:双击下载的安装包,按照提示完成安装。
- 启动 Docker Desktop:安装完成后,启动 Docker Desktop。首次启动时,可能需要几分钟时间来初始化。
1.2 macOS
- 下载 Docker Desktop:访问 Docker 官方下载页面,下载适用于 macOS 的 Docker Desktop 安装包。
-
安装 Docker Desktop:双击下载的
.dmg
文件,按照提示完成安装。 - 启动 Docker Desktop:安装完成后,启动 Docker Desktop。首次启动时,可能需要几分钟时间来初始化。
1.3 Linux
- 更新系统:
sudo apt-get update
sudo apt-get upgrade
- 安装必要的包:
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
- 添加 Docker 的官方 GPG 密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 设置稳定版存储库:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 安装 Docker Engine:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
- 启动 Docker 服务:
sudo systemctl start docker
sudo systemctl enable docker
2. 配置 Docker
2.1 配置镜像加速
为了提高 Docker 镜像的下载速度,可以配置国内的镜像加速器。编辑 /etc/docker/daemon.json
文件,添加如下内容:
{
"registry-mirrors": ["https://<Your-ID>.mirror.aliyuncs.com"]
}
然后重启 Docker 服务:
sudo systemctl restart docker
3. 测试 Docker 安装
运行以下命令来验证 Docker 是否安装成功:
docker run hello-world
如果一切正常,你应该会看到一条欢迎消息,说明 Docker 已经成功安装并运行。
4. 创建和管理 Docker 容器
4.1 创建 Dockerfile
Dockerfile 是一个文本文件,包含了一系列命令,用于构建 Docker 镜像。以下是一个简单的 Dockerfile 示例:
# 使用官方的 Python 镜像作为基础镜像
FROM python:3.8-slim-buster
# 设置工作目录
WORKDIR /app
# 将当前目录下的所有文件复制到容器的 /app 目录下
COPY . .
# 安装依赖
RUN pip3 install -r requirements.txt
# 指定容器启动时运行的命令
CMD ["python3", "app.py"]
4.2 构建 Docker 镜像
在包含 Dockerfile 的目录中运行以下命令来构建 Docker 镜像:
docker build -t my-app .
4.3 运行 Docker 容器
使用以下命令来运行 Docker 容器:
docker run -d -p 5000:5000 my-app
其中 -d
表示后台运行,-p 5000:5000
表示将宿主机的 5000 端口映射到容器的 5000 端口。
5. 使用 Docker Compose 管理多容器应用
5.1 创建 docker-compose.yml
文件
Docker Compose 允许你定义和运行多容器 Docker 应用程序。以下是一个简单的 docker-compose.yml
文件示例:
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
5.2 启动 Docker Compose
在包含 docker-compose.yml
文件的目录中运行以下命令来启动所有服务:
docker-compose up -d
其中 -d
表示后台运行。
6. 管理 Docker 容器和镜像
6.1 列出所有运行的容器
docker ps
6.2 列出所有容器(包括停止的)
docker ps -a
6.3 停止容器
docker stop <container-id>
6.4 删除容器
docker rm <container-id>
6.5 列出所有镜像
docker images
6.6 删除镜像
docker rmi <image-id>
7. 高级配置
7.1 配置 Docker 网络
Docker 提供了多种网络驱动,可以根据需要选择合适的网络配置。例如,创建一个自定义网络:
docker network create my-network
然后在 docker-compose.yml
文件中使用该网络:
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
networks:
- my-network
redis:
image: "redis:alpine"
networks:
- my-network
networks:
my-network:
7.2 使用 Docker Secrets
Docker Secrets 是一个用于存储和注入敏感数据(如密码、密钥等)的工具。例如,创建一个秘密:
echo "my-secret-value" | docker secret create my-secret -
然后在 docker-compose.yml
文件中使用该秘密:
version: '3.1'
services:
web:
build: .
ports:
- "5000:5000"
secrets:
- my-secret
secrets:
my-secret:
external: true
8. 实战案例
8.1 部署一个简单的 Web 应用
假设你有一个简单的 Flask 应用,目录结构如下:
my-flask-app/
├── app.py
├── requirements.txt
└── Dockerfile
其中 app.py
文件内容如下:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
requirements.txt
文件内容如下:
Flask==1.1.2
Dockerfile
文件内容如下:
FROM python:3.8-slim-buster
WORKDIR /app
COPY . .
RUN pip3 install -r requirements.txt
CMD ["python3", "app.py"]
在 my-flask-app
目录中运行以下命令来构建和运行 Docker 容器:
docker build -t my-flask-app .
docker run -d -p 5000:5000 my-flask-app
打开浏览器,访问 http://localhost:5000
,你应该能看到 "Hello, World!" 消息。
9. 总结
通过以上步骤,你可以在本地计算机上成功安装和配置 Docker,并使用 Docker 来运行和管理应用程序。Docker 的强大之处在于其轻量级、可移植和高效的特点,使得开发者可以在任何支持 Docker 的环境中快速搭建和运行应用。希望这些步骤对你有所帮助,祝你在 Docker 学习和实践中取得成功!