一、Docker 是什么
Docker 是一个基于 Linux 的容器引擎,它可以让开发者打包、发布和运行分布式应用程序。
容器是一个轻量级、可移植和自包含的软件单元,它可以在不同的环境中运行,而不需要针对每个环境编写代码。Docker 使用容器作为应用程序的打包和分发方式。
使用 Docker,您可以创建镜像,其包含应用程序及其所有运行时依赖项。然后,您可以轻松地将镜像部署到任何支持 Docker 的环境中。
二、Docker 安装
1. 在Linux上安装 Docker
在 Linux 上安装 Docker 非常简单。只需要执行命令依次安装即可:
sudo apt-get update
sudo apt-get install docker.io
在安装完成后,您需要将用户添加到 Docker 用户组中:
sudo usermod -aG docker $USER
注销并重新登录后,您就可以使用 Docker 了。
2. 在 Windows 上安装 Docker
在 Windows 上安装 Docker 需要使用 Docker Desktop。Docker Desktop 可以在 Windows 的 Hyper-V 虚拟机中运行 Linux 容器。
您需要执行以下步骤来在 Windows 上安装 Docker:
- 下载并安装 Docker Desktop。
- 启用 Windows 上的 Hyper-V。
- 启用 BIOS 中的虚拟化选项。
- 设置 Docker Engine 资源限制。
安装完成后,您可以使用 Docker。
3. 在 macOS 上安装 Docker
在 macOS 上安装 Docker 需要使用 Docker Desktop for Mac。
您需要执行以下步骤来在 macOS 上安装 Docker:
- 下载并安装 Docker Desktop for Mac。
- 启用 macOS 上的 HyperKit 虚拟化。
- 将 Docker Desktop 添加到您的应用程序文件夹中。
安装完成后,您可以使用 Docker。
三、使用 Docker
1. 创建 Docker 镜像
创建 Docker 镜像通常需要基于一个 Dockerfile 文件,该文件对应应用程序的依赖项和配置进行定义。以 Python 为例,下面是一个简单的 Dockerfile:
FROM python:3
WORKDIR /app
COPY requirements.txt /app/
RUN pip install --no-cache-dir -r requirements.txt
COPY . /app
CMD ["python", "app.py"]
在运行此 Dockerfile 后,您将获得一个包含 Python 应用程序的镜像。
2. 运行 Docker 容器
您可以使用以下命令运行 Docker 容器:
docker run <镜像名称>
例如,使用以下命令可以启动一个默认的 Nginx 容器:
docker run nginx
3. Docker 容器管理
以下是一些常用的 Docker 容器管理命令:
docker ps
:查看运行中的 Docker 容器。docker stop <容器 ID>
:停止运行中的 Docker 容器。docker start <容器 ID>
:启动已停止的 Docker 容器。docker rm <容器 ID>
:删除 Docker 容器。docker images
:查看所有本地 Docker 镜像。docker rmi <镜像名称>
:删除 Docker 镜像。
四、Docker 实战
1. 使用 Docker 部署 Flask 应用程序
以下是一个简单的示例,演示如何使用 Docker 部署一个 Flask 应用程序:
- 创建一个名为 Dockerfile 的文件。
- 使用以下 Dockerfile 创建一个 Python 环境并安装 Flask 应用程序:
FROM python:3
WORKDIR /app
COPY requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
COPY . /app
EXPOSE 8080
CMD ["python", "app.py"]
- FROM:指定使用哪个基础镜像。
- COPY:将应用程序复制到 Docker 容器中。
- RUN:在容器中运行命令。
- EXPOSE:在容器中公开端口。
- CMD:指定容器启动的默认命令。
- 使用以下命令构建 Docker 镜像:
docker build -t <your-dockerhub-username>/flaskapp:v1 .
- 使用以下命令运行 Docker 容器:
docker run -p 8080:8080 <your-dockerhub-username>/flaskapp:v1
现在,您可以通过浏览器访问 http://localhost:8080 来查看 Flask 应用程序。
2. 使用 Docker 部署多个微服务应用程序
以下是一个简单的示例,演示如何使用 Docker 部署多个微服务应用程序:
- 使用以下 Dockerfile 创建第一个应用程序:
FROM python:3
WORKDIR /app
COPY requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
COPY app1 /app
EXPOSE <app1-port>
CMD ["python", "app1.py"]
- COPY:将应用程序复制到 Docker 容器中。
- EXPOSE:在容器中公开端口。
- CMD:指定容器启动的默认命令。
- 使用以下 Dockerfile 创建第二个应用程序:
FROM python:3
WORKDIR /app
COPY requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
COPY app2 /app
EXPOSE <app2-port>
CMD ["python", "app2.py"]
- COPY:将应用程序复制到 Docker 容器中。
- EXPOSE:在容器中公开端口。
- CMD:指定容器启动的默认命令。
- 使用以下命令构建 Docker 镜像:
docker build -t <your-dockerhub-username>/app1:v1 -f Dockerfile.app1 .
docker build -t <your-dockerhub-username>/app2:v1 -f Dockerfile.app2 .
- 使用以下命令运行 Docker 容器:
docker run -p <app1-port>:<app1-port> <your-dockerhub-username>/app1:v1
docker run -p <app2-port>:<app2-port> <your-dockerhub-username>/app2:v1
现在,您已经成功地使用 Docker 部署了多个微服务应用程序。