简介
本全面的 Docker 教程为开发者和 IT 专业人员提供了对容器技术的基本理解。通过探索 Docker 的核心概念、安装过程和实用的命令行技术,学习者将获得在不同计算环境中打包、部署和管理应用程序的实用技能。
本全面的 Docker 教程为开发者和 IT 专业人员提供了对容器技术的基本理解。通过探索 Docker 的核心概念、安装过程和实用的命令行技术,学习者将获得在不同计算环境中打包、部署和管理应用程序的实用技能。
Docker 是一个强大的容器化平台,使开发者能够在不同的计算环境中一致地打包、分发和运行应用程序。作为现代软件部署中的关键工具,Docker 简化了创建、管理和扩展应用程序的过程。
Docker 引入了几个基本概念:
概念 | 描述 |
---|---|
Docker 镜像 | 包含应用程序代码和依赖项的只读模板 |
Docker 容器 | 镜像的可运行实例 |
Dockerfile | 定义镜像构建指令的文本文件 |
Docker 仓库 | 用于存储和共享镜像的存储库 |
## 更新软件包索引
sudo apt update
## 安装依赖项
sudo apt install apt-transport-https ca-certificates curl software-properties-common
## 添加 Docker 的官方 GPG 密钥
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## 设置稳定存储库
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
## 安装 Docker 引擎
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
## 检查 Docker 版本
docker --version
## 从 Docker Hub 拉取镜像
docker pull ubuntu:latest
## 列出可用镜像
docker images
## 运行容器
docker run -it ubuntu:latest /bin/bash
## 列出正在运行的容器
docker ps
## 停止容器
docker stop <容器ID>
## 拉取 Nginx 镜像
docker pull nginx:latest
## 运行 Nginx 容器
docker run -d -p 8080:80 nginx:latest
## 验证容器是否正在运行
docker ps
此示例展示了如何使用 Docker 快速部署 Web 服务器,体现了其在软件部署中的简单性和高效性。
Docker 提供了全面的工具来管理容器的生命周期,使开发者能够高效地控制和操作容器。
命令 | 功能 | 示例 |
---|---|---|
docker create | 创建一个容器 | docker create nginx |
docker start | 启动一个已停止的容器 | docker start <容器ID> |
docker stop | 停止一个正在运行的容器 | docker stop <容器ID> |
docker restart | 重启一个容器 | docker restart <容器ID> |
docker rm | 删除一个容器 | docker rm <容器ID> |
## 使用自定义名称运行容器
docker run --name web-server -d nginx:latest
## 检查容器详细信息
docker inspect web-server
## 查看容器日志
docker logs web-server
## 在正在运行的容器内执行命令
docker exec -it web-server /bin/bash
## 限制容器的 CPU 和内存
docker run -d --cpus=0.5 --memory=512m nginx:latest
## 列出正在运行的容器及其资源使用情况
docker stats
## 列出本地镜像
docker images
## 删除特定镜像
docker rmi nginx:latest
## 删除未使用的镜像
docker image prune
## 拉取特定版本的镜像
docker pull ubuntu:20.04
## 创建自定义网络
docker network create mynetwork
## 在特定网络中运行容器
docker run --network=mynetwork nginx:latest
多阶段构建可优化 Dockerfile 的复杂性并减小最终镜像的大小。
## 构建阶段
FROM golang:1.17 AS builder
WORKDIR /app
COPY..
RUN go build -o myapp
## 生产阶段
FROM alpine:latest
COPY --from=builder /app/myapp /usr/local/bin/
CMD ["myapp"]
version: "3"
services:
web:
image: nginx:latest
ports:
- "8080:80"
database:
image: postgres:12
environment:
POSTGRES_PASSWORD: secret
技术 | 描述 |
---|---|
层缓存 | 尽量减少层的重新构建 |
.dockerignore | 排除不必要的文件 |
Alpine 镜像 | 使用最小化的基础镜像 |
## 创建自定义桥接网络
docker network create --driver bridge isolated_network
## 将容器连接到特定网络
docker run --network=isolated_network nginx:latest
## 创建命名卷
docker volume create app-data
## 将卷挂载到容器
docker run -v app-data:/var/lib/data nginx:latest
## 实时容器指标
docker stats
## 检查容器日志
docker logs --follow <容器ID>
## 以非 root 用户身份运行容器
docker run --user 1000 nginx:latest
## 设置只读文件系统
docker run --read-only nginx:latest
Docker 通过提供一个用于容器化的一致、高效的平台,彻底改变了软件部署方式。通过本教程,读者已经学习了诸如 Docker 镜像、容器和 Dockerfile 基础等基本概念,以及安装 Docker、管理容器和运行 Web 应用程序的实用技能。这些技能构成了现代软件开发和基础设施管理的关键基础。