如何部署首个 Docker 镜像

DockerBeginner
立即练习

简介

Docker 通过提供一个强大的容器化平台,彻底改变了软件开发。本教程将指导你完成部署首个 Docker 镜像的基本步骤,帮助开发者和 IT 专业人员理解 Docker 容器的基本概念和实际应用。

Docker 基础

什么是 Docker?

Docker 是一个开源平台,旨在使用容器化技术自动化应用程序的部署、扩展和管理。它允许开发者将应用程序及其所有依赖项打包成一个称为容器的标准化单元。

Docker 关键概念

容器

容器是一个轻量级、独立的可执行包,其中包含运行应用程序所需的一切:代码、运行时、系统工具、库和设置。

graph TD
    A[应用程序代码] --> B[容器]
    C[依赖项] --> B
    D[系统库] --> B
    E[运行时环境] --> B

Docker 镜像

Docker 镜像是用于创建容器的只读模板。它们是创建容器的基础,可以存储在 Docker Hub 等镜像仓库中。

Docker 架构

组件 描述
Docker 客户端 用于与 Docker 交互的命令行界面
Docker 守护进程 管理 Docker 对象的后台服务
Docker 镜像仓库 Docker 镜像的存储和分发系统

为什么使用 Docker?

  1. 不同环境之间的一致性
  2. 轻量级且快速的部署
  3. 易于扩展
  4. 提高资源利用率
  5. 简化配置管理

在 Ubuntu 22.04 上安装 Docker

要在 Ubuntu 上安装 Docker,请使用以下命令:

## 更新软件包索引
sudo apt update

## 安装依赖项
sudo apt install apt-transport-https ca-certificates curl software-properties-common

## 添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

## 设置稳定仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(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 版本
docker --version

## 运行 hello-world 容器
sudo docker run hello-world

Docker 工作流程

graph LR
    A[开发] --> B[构建镜像]
    B --> C[推送到镜像仓库]
    C --> D[拉取镜像]
    D --> E[运行容器]

开始使用 LabEx

LabEx 提供交互式 Docker 学习环境,帮助开发者更有效地实践和理解容器化技术。

环境设置

系统要求

在设置 Docker 环境之前,请确保你的系统满足以下要求:

要求 规格
操作系统 Ubuntu 22.04 LTS
CPU 64 位处理器
内存 至少 4GB
存储 20GB 可用磁盘空间

准备系统

更新系统软件包

sudo apt update
sudo apt upgrade -y

安装所需依赖项

sudo apt install -y \
  ca-certificates \
  curl \
  gnupg \
  lsb-release \
  software-properties-common

Docker 安装方法

graph LR
    A[Docker 安装] --> B[通过仓库安装]
    A --> C[手动安装软件包]
    A --> D[基于脚本安装]

通过仓库安装(推荐)

添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
设置仓库
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安装 Docker 软件包
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

安装后配置

将用户添加到 Docker 组

sudo usermod -aG docker $USER

配置 Docker 开机自启

sudo systemctl enable docker
sudo systemctl start docker

验证安装

检查 Docker 版本

docker --version
docker compose version

运行 Hello World 容器

sudo docker run hello-world

Docker Compose 设置

安装 Docker Compose

sudo apt install docker-compose

推荐工具

工具 用途
Docker Desktop Docker 管理的图形用户界面
Visual Studio Code 带有 Docker 扩展的集成开发环境
Docker Hub 容器镜像仓库

LabEx 环境推荐

LabEx 提供预配置的 Docker 环境,简化了设置和学习过程,使初学者更容易开始使用容器化技术。

解决常见安装问题

可能的问题

  • 系统架构不兼容
  • 系统软件包过时
  • 权限不足
  • 网络连接问题

推荐的解决方案

  1. 确保系统满足最低要求
  2. 定期更新系统软件包
  3. 检查网络连接
  4. 验证用户权限
  5. 查阅官方 Docker 文档

首次部署容器

理解容器部署

容器部署工作流程

graph LR
    A[选择镜像] --> B[拉取镜像]
    B --> C[创建容器]
    C --> D[启动容器]
    D --> E[管理容器]

拉取 Docker 镜像

Docker Hub 官方镜像

## 拉取 Ubuntu 镜像
docker pull ubuntu:latest

## 拉取 Nginx 网络服务器镜像
docker pull nginx:latest

## 拉取 Python 开发镜像
docker pull python:3.9

运行首个容器

基本容器执行

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

## 运行 Nginx 网络服务器
docker run -d -p 8080:80 nginx:latest

## 运行 Python 交互式容器
docker run -it python:3.9 python

容器管理命令

命令 描述
docker ps 列出正在运行的容器
docker ps -a 列出所有容器
docker start <容器ID> 启动已停止的容器
docker stop <容器ID> 停止正在运行的容器
docker rm <容器ID> 删除容器

创建自定义容器

Dockerfile 示例

## 使用官方 Python 基础镜像
FROM python:3.9

## 设置工作目录
WORKDIR /app

## 复制应用文件
COPY.. /app

## 安装依赖项
RUN pip install flask

## 暴露端口
EXPOSE 5000

## 定义启动命令
CMD ["python", "app.py"]

构建并运行自定义镜像

## 构建 Docker 镜像
docker build -t myapp:v1.

## 运行自定义容器
docker run -p 5000:5000 myapp:v1

容器网络

graph TD
    A[容器] -->|端口映射| B[主机网络]
    B -->|暴露服务| C[外部访问]

端口映射示例

## 将容器端口 80 映射到主机端口 8080
docker run -d -p 8080:80 nginx:latest

容器卷

卷管理

## 创建命名卷
docker volume create mydata

## 将卷挂载到容器
docker run -v mydata:/data ubuntu:latest

最佳实践

  1. 使用官方镜像
  2. 最小化镜像大小
  3. 实施多阶段构建
  4. 使用特定的镜像标签
  5. 避免以 root 身份运行容器

监控容器

## 查看容器日志

## 监控资源使用情况

## 检查容器详细信息

LabEx 学习环境

LabEx 提供交互式 Docker 实验,帮助开发者在实践指导的环境中练习容器部署技术。

高级部署技术

技术 描述
Docker Compose 多容器编排
Kubernetes 容器扩展与管理
Docker Swarm 原生 Docker 集群

总结

通过完成本教程,你已经对 Docker 容器化有了宝贵的见解,学会了如何设置 Docker 环境,并成功部署了你的第一个容器。这些基础技能将使你能够在实际场景中利用 Docker 的功能进行更复杂的应用程序部署和管理。