简介
本教程提供了运行 Docker 镜像和管理 Docker 容器的全面指南。你将学习 Docker 的基础知识,探索 Docker 镜像及其用例,并发现拉取、管理和与 Docker 容器进行交互的技术。此外,本教程还涵盖了高级容器管理主题,如 Docker 卷、网络、Compose 和 Swarm,以帮助你使用 Docker 有效地部署和管理应用程序。
本教程提供了运行 Docker 镜像和管理 Docker 容器的全面指南。你将学习 Docker 的基础知识,探索 Docker 镜像及其用例,并发现拉取、管理和与 Docker 容器进行交互的技术。此外,本教程还涵盖了高级容器管理主题,如 Docker 卷、网络、Compose 和 Swarm,以帮助你使用 Docker 有效地部署和管理应用程序。
Docker 是一项强大的容器化技术,它彻底改变了应用程序的部署和开发方式。它允许开发者将应用程序及其所有依赖项打包成称为容器的标准化单元,确保在不同的计算环境中具有一致的性能。
容器化使应用程序能够在隔离的环境中运行,具有以下几个关键优势:
特性 | 描述 |
---|---|
隔离性 | 每个容器独立运行 |
可移植性 | 容器可以在任何支持 Docker 的系统上运行 |
高效性 | 与传统虚拟机相比更轻量级 |
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=$(dpatch -s)] $(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 pull ubuntu:latest
## 列出镜像
docker images
## 运行容器
docker run -it ubuntu:latest /bin/bash
Docker 镜像是用于创建容器的只读模板。它们包含运行应用程序所需的应用代码、运行时环境、库和系统工具。
命令 | 描述 |
---|---|
docker images | 列出本地镜像 |
docker pull | 从镜像仓库下载镜像 |
docker rmi | 删除镜像 |
docker tag | 为镜像打标签以便版本控制 |
## 基础镜像
FROM ubuntu:22.04
## 元数据
LABEL maintainer="[email protected]"
## 更新系统
RUN apt-get update && apt-get install -y \
python3 \
pip
## 设置工作目录
WORKDIR /app
## 复制应用文件
COPY. /app
## 安装依赖项
RUN pip install -r requirements.txt
## 暴露端口
EXPOSE 5000
## 运行应用
CMD ["python3", "app.py"]
## 构建镜像
docker build -t myapp:v1.
## 使用特定标签构建
docker build -t myapp:latest.
## 使用构建参数构建
docker build --build-arg VERSION=1.0 -t myapp:v1.
## 登录到 Docker Hub
docker login
## 将镜像推送到镜像仓库
docker push username/myapp:v1
## 从镜像仓库拉取镜像
docker pull username/myapp:v1
Docker 为容器通信提供了多种网络模式:
网络模式 | 描述 |
---|---|
桥接(Bridge) | 默认网络模式 |
主机(Host) | 直接访问主机网络 |
无(None) | 无网络连接 |
## 创建自定义网络
docker network create mynetwork
## 在特定网络上运行容器
docker run --network=mynetwork ubuntu
version: "3"
services:
web:
image: nginx
ports:
- "8080:80"
database:
image: postgres
environment:
POSTGRES_PASSWORD: secret
## 扩展服务
docker-compose up -d --scale web=3
## 监控容器资源
docker stats
## 滚动更新
docker service update \
--image myapp:v2 \
--update-parallelism 2 \
--update-delay 10s \
myservice
## 查看容器日志
docker logs mycontainer
## 实时资源使用情况
docker top mycontainer
## 创建覆盖网络
docker network create \
-d overlay \
--subnet 10.0.0.0/24 \
my_overlay_network
实践 | 描述 |
---|---|
资源限制 | 限制 CPU/内存 |
只读文件系统 | 防止修改 |
非根用户 | 降低容器权限 |
在本教程结束时,你将对如何运行 Docker 镜像、管理 Docker 容器以及利用高级容器管理技术更高效地部署和管理应用程序有扎实的理解。从本教程中学到的知识将使你能够在软件开发和部署过程中利用 Docker 的优势,如一致性、可扩展性和可移植性。