初学者如何掌握 Docker 基础

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本全面的 Docker 教程为开发者和 IT 专业人员提供了对容器技术的基本理解。通过探索 Docker 的核心概念、安装过程和实用的命令行技术,学习者将获得在不同计算环境中打包、部署和管理应用程序的实用技能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ImageOperationsGroup -.-> docker/rmi("Remove Image") docker/ImageOperationsGroup -.-> docker/images("List Images") subgraph Lab Skills docker/ls -.-> lab-393030{{"初学者如何掌握 Docker 基础"}} docker/ps -.-> lab-393030{{"初学者如何掌握 Docker 基础"}} docker/rm -.-> lab-393030{{"初学者如何掌握 Docker 基础"}} docker/rmi -.-> lab-393030{{"初学者如何掌握 Docker 基础"}} docker/images -.-> lab-393030{{"初学者如何掌握 Docker 基础"}} end

Docker 基础

Docker 与容器技术简介

Docker 是一个强大的容器化平台,使开发者能够在不同的计算环境中一致地打包、分发和运行应用程序。作为现代软件部署中的关键工具,Docker 简化了创建、管理和扩展应用程序的过程。

Docker 的核心概念

graph TD A[Docker 镜像] --> B[Docker 容器] A --> C[Dockerfile] B --> D[容器运行时]

Docker 引入了几个基本概念:

概念 描述
Docker 镜像 包含应用程序代码和依赖项的只读模板
Docker 容器 镜像的可运行实例
Dockerfile 定义镜像构建指令的文本文件
Docker 仓库 用于存储和共享镜像的存储库

在 Ubuntu 22.04 上安装

## 更新软件包索引
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 版本
docker --version

## 从 Docker Hub 拉取镜像
docker pull ubuntu:latest

## 列出可用镜像
docker images

## 运行容器
docker run -it ubuntu:latest /bin/bash

## 列出正在运行的容器
docker ps

## 停止容器
docker stop <容器ID>

实际示例:运行一个简单的 Web 应用程序

## 拉取 Nginx 镜像
docker pull nginx:latest

## 运行 Nginx 容器
docker run -d -p 8080:80 nginx:latest

## 验证容器是否正在运行
docker ps

此示例展示了如何使用 Docker 快速部署 Web 服务器,体现了其在软件部署中的简单性和高效性。

容器管理

容器生命周期操作

Docker 提供了全面的工具来管理容器的生命周期,使开发者能够高效地控制和操作容器。

graph LR A[已创建] --> B[正在运行] B --> C[已停止] C --> D[已删除] D --> E[已重启]

容器管理命令

命令 功能 示例
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

高级 Docker 技术

多阶段构建

多阶段构建可优化 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"]

Docker Compose 工作流程

graph LR A[Docker Compose 文件] --> B[服务定义] B --> C[容器编排] C --> D[联网应用程序]

Compose 配置示例

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 应用程序的实用技能。这些技能构成了现代软件开发和基础设施管理的关键基础。