目录
- 什么是 Docker
- Docker 的核心概念
- 镜像
- 容器
- Dockerfile
- Docker Compose
- Docker 的安装
- 在 Windows 上安装 Docker
- 在 macOS 上安装 Docker
- 在 Linux 上安装 Docker
- Docker 的基本使用
- 启动第一个容器
- 管理容器
- 构建自定义镜像
- 使用 Docker Compose
- 高级主题
- Docker 网络
- Docker 数据卷
- 多阶段构建
- 结论
什么是 Docker
Docker 是一个开源的平台,用于开发、运输和运行应用程序。Docker 通过将应用程序及其依赖项打包到一个称为容器的标准化单元中来实现这一目标。容器可以在任何环境中运行,无论是在开发人员的本地计算机上,还是在生产环境中的服务器集群中。
Docker 提供了一种一致的环境,从而消除了“在我机器上可以工作”的问题。通过容器化,开发人员可以确保他们的应用程序在任何地方都能以相同的方式运行。
Docker 的核心概念
在深入了解 Docker 的安装和使用之前,首先需要了解一些核心概念。
镜像
Docker 镜像是一个只读模板,包含了运行应用程序所需的所有内容,包括代码、运行时、库和依赖项。镜像是创建 Docker 容器的基础。
容器
容器是镜像的一个运行实例。它是一个轻量级、可移植的执行环境,包含了应用程序运行所需的所有内容。多个容器可以在同一主机上运行,并且相互隔离。
Dockerfile
Dockerfile 是一个文本文件,包含了一系列指令,用于构建 Docker 镜像。通过定义 Dockerfile,可以自动化镜像的创建过程,确保环境的一致性。
Docker Compose
Docker Compose 是一个工具,用于定义和运行多容器的 Docker 应用程序。通过一个 docker-compose.yml
文件,可以定义应用程序的服务、网络和卷,从而简化了复杂应用程序的部署。
Docker 的安装
Docker 可以在 Windows、macOS 和 Linux 操作系统上运行。以下是不同操作系统上的安装步骤。
在 Windows 上安装 Docker
-
下载 Docker Desktop:
- 访问 Docker 官网。
- 下载适用于 Windows 的 Docker Desktop 安装包。
-
安装 Docker Desktop:
- 双击下载的安装包,按照安装向导的指示完成安装。
-
启动 Docker Desktop:
- 安装完成后,启动 Docker Desktop。首次启动时可能需要进行一些初始化配置。
-
验证安装:
- 打开命令提示符,输入以下命令以验证 Docker 是否安装成功:
docker --version
- 如果看到 Docker 版本信息,说明安装成功。
- 打开命令提示符,输入以下命令以验证 Docker 是否安装成功:
在 macOS 上安装 Docker
-
下载 Docker Desktop:
- 访问 Docker 官网。
- 下载适用于 macOS 的 Docker Desktop 安装包。
-
安装 Docker Desktop:
- 打开下载的
.dmg
文件,将 Docker 图标拖动到应用程序文件夹中。
- 打开下载的
-
启动 Docker Desktop:
- 安装完成后,启动 Docker Desktop。首次启动时可能需要进行一些初始化配置。
-
验证安装:
- 打开终端,输入以下命令以验证 Docker 是否安装成功:
docker --version
- 如果看到 Docker 版本信息,说明安装成功。
- 打开终端,输入以下命令以验证 Docker 是否安装成功:
在 Linux 上安装 Docker
-
更新软件包索引:
sudo apt-get update
-
安装必要的软件包:
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
-
添加 Docker 的 GPG 密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
-
添加 Docker 仓库:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
-
安装 Docker:
sudo apt-get update sudo apt-get install docker-ce
-
启动 Docker 并设置开机启动:
sudo systemctl start docker sudo systemctl enable docker
-
验证安装:
- 输入以下命令以验证 Docker 是否安装成功:
docker --version
- 如果看到 Docker 版本信息,说明安装成功。
- 输入以下命令以验证 Docker 是否安装成功:
Docker 的基本使用
安装完成后,接下来了解一下 Docker 的基本使用方法。
启动第一个容器
-
拉取镜像:
- 使用
docker pull
命令从 Docker Hub 拉取官方的 Hello World 镜像:docker pull hello-world
- 使用
-
运行容器:
- 使用
docker run
命令启动一个 Hello World 容器:docker run hello-world
- 该命令将启动一个容器并输出 “Hello from Docker!” 的消息,随后容器退出。
- 使用
管理容器
-
查看正在运行的容器:
- 使用
docker ps
命令查看当前正在运行的容器:docker ps
- 使用
-
查看所有容器:
- 使用
docker ps -a
命令查看所有容器,包括已经停止的容器:docker ps -a
- 使用
-
停止容器:
- 使用
docker stop <容器ID>
命令停止正在运行的容器:docker stop <container_id>
- 使用
-
删除容器:
- 使用
docker rm <容器ID>
命令删除容器:docker rm <container_id>
- 使用
构建自定义镜像
-
创建 Dockerfile:
- 在项目目录下创建一个名为
Dockerfile
的文件,并添加以下内容:# 使用官方的 Python 运行时镜像作为基础镜像 FROM python:3.8-slim# 设置工作目录 WORKDIR /app# 复制当前目录内容到工作目录 COPY . /app# 安装依赖 RUN pip install --no-cache-dir -r requirements.txt# 指定容器启动时运行的命令 CMD ["python", "app.py"]
- 在项目目录下创建一个名为
-
构建镜像:
- 使用
docker build
命令构建自定义镜像:docker build -t my-python-app .
- 使用
-
运行容器:
- 使用
docker run
命令启动容器:docker run -d -p 5000:5000 my-python-app
- 使用
使用 Docker Compose
-
创建
docker-compose.yml
文件:- 在项目目录下创建一个名为
docker-compose.yml
的文件,并添加以下内容:version: '3' services:web:image: my-python-appbuild: .ports:- "5000:5000"redis:image: "redis:alpine"
- 在项目目录下创建一个名为
-
启动服务:
- 使用
docker-compose up
命令启动多容器应用:docker-compose up
- 使用
-
管理服务:
- 使用
docker-compose ps
查看运行中的服务:docker-compose ps
- 使用
docker-compose down
停止并删除容器、网络、卷:docker-compose down
- 使用
高级主题
Docker 网络
Docker 提供了多种网络模式,用于管理容器之间的通信。
-
桥接网络:
- 默认情况下,Docker 容器连接到一个名为
bridge
的网络。可以通过docker network create
创建自定义桥接网络:docker network create my-bridge-network
- 默认情况下,Docker 容器连接到一个名为
-
使用自定义网络:
- 在运行容器时,可以使用
--network
选项指定自定义网络:docker run -d --network my-bridge-network my-python-app
- 在运行容器时,可以使用
-
查看网络:
- 使用
docker network ls
查看现有网络:docker network ls
- 使用
-
删除网络:
- 使用
docker network rm
删除网络:docker network rm my-bridge-network
- 使用
Docker 数据卷
Docker 数据卷用于持久化和共享容器数据。
-
创建数据卷:
- 使用
docker volume create
创建数据卷:docker volume create my-volume
- 使用
-
挂载数据卷:
- 在运行容器时,使用
-v
选项挂载数据卷:docker run -d -v my-volume:/app/data my-python-app
- 在运行容器时,使用
-
查看数据卷:
- 使用
docker volume ls
查看现有数据卷:docker volume ls
- 使用
-
删除数据卷:
- 使用
docker volume rm
删除数据卷:docker volume rm my-volume
- 使用
多阶段构建
多阶段构建可以创建更小的镜像,通过分阶段构建镜像来减少最终镜像的大小。
-
编写多阶段 Dockerfile:
- 在
Dockerfile
中定义多个构建阶段:# 第一阶段:构建应用程序 FROM golang:1.16 AS builder WORKDIR /app COPY . . RUN go build -o myapp# 第二阶段:创建运行时镜像 FROM alpine:latest WORKDIR /root/ COPY --from=builder /app/myapp . CMD ["./myapp"]
- 在
-
构建和运行镜像:
- 使用
docker build
和docker run
命令构建并运行镜像:docker build -t my-multi-stage-app . docker run my-multi-stage-app
- 使用
结论
通过本指南,你应该已经了解了 Docker 的基本概念、安装步骤以及常见的使用方法。Docker 作为一个强大的工具,能够显著简化应用程序的开发、部署和管理过程。随着你对 Docker 的深入了解,你将能够利用其高级功能,进一步优化你的开发和运维流程。
Docker 的学习和使用是一个不断探索的过程。希望这篇博客能为你的 Docker 之旅打下坚实的基础。如果你有任何问题或建议,欢迎在评论区留言。