Docker 是一种开源的容器化平台,旨在简化应用的开发、部署和运行。它允许开发者将应用及其依赖项打包成一个标准化的单元,这个单元可以在任何支持 Docker 的机器上运行。下面是一个详细而通俗易懂的 Docker 最新教程。

一、Docker 基础概念
1. 容器(Container)
容器是一个轻量级的、独立的运行环境。它包含应用程序及其所有依赖项,确保在任何环境中都能一致地运行。
2. 镜像(Image)
镜像是一个只读的模板,用于创建 Docker 容器。它包含了运行应用程序所需的所有内容,如代码、运行时、库、环境变量等。
3. Docker 引擎(Docker Engine)
Docker 引擎是一个轻量级的运行时和工具,支持容器化应用的创建和运行。它包括一个守护进程(Docker Daemon)、一个 REST API 接口和一个命令行界面(CLI)。
4. Docker Hub
Docker Hub 是一个云注册表,用于共享和管理 Docker 镜像。你可以从 Docker Hub 上下载公共镜像,也可以上传你自己的镜像。
二、Docker 安装
在 Ubuntu 上安装 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
sudo docker run hello-world
三、Docker 基本操作
1. 拉取镜像
从 Docker Hub 拉取镜像:
sudo docker pull ubuntu
2. 运行容器
运行一个容器并进入交互式终端:
sudo docker run -it ubuntu /bin/bash
3. 查看运行中的容器
查看当前正在运行的容器:
sudo docker ps
4. 停止容器
停止一个正在运行的容器:
sudo docker stop <container_id>
5. 删除容器
删除一个已停止的容器:
sudo docker rm <container_id>
6. 删除镜像
删除一个镜像:
sudo docker rmi <image_id>
四、Dockerfile 的使用
1. Dockerfile 基础
Dockerfile 是用于构建镜像的脚本。它包含了一系列指令,用于指定基础镜像、安装软件、复制文件等。
示例 Dockerfile
# 使用官方的 Node.js 镜像作为基础镜像
FROM node:14
# 创建并设置工作目录
WORKDIR /app
# 复制 package.json 和 package-lock.json
COPY package*.json ./
# 安装项目依赖
RUN npm install
# 复制项目文件
COPY . .
# 暴露应用运行的端口
EXPOSE 8080
# 启动应用
CMD ["node", "server.js"]
2. 构建镜像
使用 Dockerfile 构建镜像:
sudo docker build -t my-node-app .
3. 运行构建的镜像
运行刚构建的镜像:
sudo docker run -p 8080:8080 my-node-app
五、Docker Compose 的使用
Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。你可以使用 YAML 文件来配置应用服务。
1. 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
2. 编写 docker-compose.yml 文件
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
app:
image: my-node-app
build: .
ports:
- "8080:8080"
3. 使用 Docker Compose 启动服务
sudo docker-compose up
六、持久化存储和数据卷
容器是短暂的,重启或重新创建容器会丢失数据。为了持久化存储,可以使用数据卷。
1. 创建数据卷
sudo docker volume create my-volume
2. 使用数据卷
在运行容器时,挂载数据卷:
sudo docker run -d -v my-volume:/app/data my-node-app
分析说明表
| 操作 | 命令示例 | 说明 |
|---|---|---|
| 安装 Docker | sudo apt-get install docker-ce |
安装 Docker 引擎 |
| 拉取镜像 | sudo docker pull ubuntu |
从 Docker Hub 拉取镜像 |
| 运行容器 | sudo docker run -it ubuntu /bin/bash |
运行一个容器并进入交互式终端 |
| 查看运行中的容器 | sudo docker ps |
查看当前正在运行的容器 |
| 停止容器 | sudo docker stop <container_id> |
停止一个正在运行的容器 |
| 删除容器 | sudo docker rm <container_id> |
删除一个已停止的容器 |
| 构建镜像 | sudo docker build -t my-node-app . |
使用 Dockerfile 构建镜像 |
| 启动服务(Docker Compose) | sudo docker-compose up |
使用 Docker Compose 启动多容器服务 |
| 创建数据卷 | sudo docker volume create my-volume |
创建数据卷 |
| 挂载数据卷 | sudo docker run -d -v my-volume:/app/data my-node-app |
在运行容器时挂载数据卷 |
结论
通过本教程,您已经学习了 Docker 的基础概念、安装方法、基本操作、Dockerfile 的使用、Docker Compose 的应用以及持久化存储和数据卷的使用。Docker 极大简化了应用的部署和管理,使得开发、测试和生产环境保持一致,提高了开发效率和系统稳定性。希望通过本文,您能更好地理解和应用 Docker,为您的项目带来更多便利。


