简介
本全面的 Docker 教程为开发者和系统管理员提供了一份实用指南,帮助他们理解和应用容器技术。通过探索 Docker 的核心概念、安装过程和基本命令,学习者将获得简化软件部署和创建一致开发环境所需的技能。
本全面的 Docker 教程为开发者和系统管理员提供了一份实用指南,帮助他们理解和应用容器技术。通过探索 Docker 的核心概念、安装过程和基本命令,学习者将获得简化软件部署和创建一致开发环境所需的技能。
Docker 是一个强大的容器化平台,它彻底改变了软件部署和开发方式。它使开发者能够将应用程序及其所有依赖项打包成称为容器的标准化单元。
概念 | 描述 |
---|---|
容器 | 轻量级的、独立的可执行包 |
镜像 | 用于创建容器的只读模板 |
Dockerfile | 包含构建镜像指令的文本文件 |
## 更新软件包索引
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 pull ubuntu:latest
## 列出镜像
docker images
## 运行容器
docker run -it ubuntu:latest /bin/bash
## 列出正在运行的容器
docker ps
## 停止容器
docker stop [容器 ID]
容器为应用程序提供了一个隔离的环境,确保在不同的计算环境中具有一致的性能。它们通过将应用程序及其所有必要的依赖项打包,解决了“在我的机器上能运行”的问题。
Dockerfile 是一个文本文件,其中包含组装 Docker 镜像所需的所有命令。它为应用程序打包和容器创建提供了一种系统的方法。
指令 | 用途 |
---|---|
FROM | 指定基础镜像 |
COPY | 将文件复制到镜像中 |
RUN | 在镜像构建期间执行命令 |
EXPOSE | 声明容器的网络端口 |
CMD | 定义容器的默认执行命令 |
## 使用官方 Python 运行时作为基础镜像
FROM python:3.9-slim
## 设置工作目录
WORKDIR /app
## 复制需求文件
COPY requirements.txt.
## 安装依赖项
RUN pip install --no-cache-dir -r requirements.txt
## 复制应用程序代码
COPY..
## 暴露应用程序端口
EXPOSE 5000
## 定义启动命令
CMD ["python", "app.py"]
## 使用标签构建镜像
docker build -t myapp:v1.
## 列出创建的镜像
docker images
## 验证镜像详细信息
docker inspect myapp:v1
## 为镜像仓库标记镜像
docker tag myapp:v1 username/myapp:v1
## 将镜像推送到 Docker Hub
docker push username/myapp:v1
策略 | 描述 | 可扩展性 |
---|---|---|
单主机 | 基本部署 | 低 |
群模式 | 原生 Docker 集群 | 中等 |
Kubernetes | 高级编排 | 高 |
## 创建覆盖网络
docker network create -d overlay production_network
## 使用网络配置部署服务
docker service create \
--name web-service \
--network production_network \
--replicas 3 \
nginx:latest
version: "3"
services:
prometheus:
image: prom/prometheus
volumes: -./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
grafana:
image: grafana/grafana
ports:
- "3000:3000"
## 限制容器资源
docker run -it \
--cpus=".5" \
--memory="512m" \
nginx:latest
## 以非 root 用户运行容器
docker run --read-only \
--tmpfs /tmp \
--tmpfs /run \
--security-opt=no-new-privileges:true \
myapp:latest
Docker 通过提供一个强大的容器化平台,彻底改变了软件开发方式,该平台确保了应用程序的可移植性和一致性。通过掌握容器生命周期管理、Dockerfile 创建以及基本的 Docker 命令,专业人员可以优化他们的开发工作流程,降低部署复杂性,并在各种计算环境中创建可扩展、可重现的软件解决方案。