如何运行第一个 Docker 容器

DockerBeginner
立即练习

简介

Docker 是一个强大的平台,通过容器化技术彻底改变了软件开发和部署方式。本教程为开发者和 IT 专业人员提供了一份全面指南,帮助他们理解 Docker 的基础知识,并成功运行第一个容器,从而在不同系统中实现高效且一致的应用环境。

Docker 基础

什么是 Docker?

Docker 是一个开源平台,它使开发者能够通过容器化来自动化应用程序的部署、扩展和管理。它为运行应用程序提供了一个轻量级、可移植且自给自足的环境。

核心概念

容器

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

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

Docker 镜像

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

Docker 架构

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

主要优势

  1. 一致性:确保开发和生产环境完全相同
  2. 隔离性:隔离应用程序及其依赖项
  3. 高效性:与传统虚拟机相比更轻量级
  4. 可扩展性:易于水平扩展应用程序

用例

  • 微服务部署
  • 持续集成/持续部署(CI/CD)
  • 云原生应用开发
  • 开发和测试环境

通过 LabEx 入门

为了通过实践学习 Docker 并获得实际经验,LabEx 提供了交互式环境,帮助你掌握容器化技术。

Docker 与传统虚拟化

graph TD A[传统虚拟化] --> B[每个应用程序都有完整的操作系统] A --> C[资源开销大] D[Docker 容器化] --> E[共享操作系统内核] D --> F[轻量级容器]

通过理解这些基础知识,你将为深入学习 Docker 并利用其强大的容器化功能做好充分准备。

安装与配置

系统要求

在安装 Docker 之前,请确保你的 Ubuntu 22.04 系统满足以下要求:

  • 64 位操作系统
  • Linux 内核 3.10 或更高版本
  • 至少 2GB 内存
  • 足够的磁盘空间

安装方法

方法一:官方 Docker 仓库

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

## 安装所需软件包
sudo apt-get install ca-certificates curl gnupg lsb-release

## 添加 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-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

方法二:便捷脚本

## 下载并运行 Docker 安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

安装后配置

用户组配置

## 将当前用户添加到 docker 组
sudo usermod -aG docker $USER

## 验证安装
docker --version

Docker 配置文件

文件路径 用途
/etc/docker/daemon.json Docker 守护进程配置
~/.docker/config.json 用户特定的 Docker 设置

Docker Compose 安装

## 下载 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

## 应用可执行权限
sudo chmod +x /usr/local/bin/docker-compose

## 验证安装
docker-compose --version

验证流程

graph TD A[安装 Docker] --> B[将用户添加到 Docker 组] B --> C[验证 Docker 版本] C --> D[运行测试容器] D --> E[确认安装成功]

测试 Docker 安装

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

LabEx 建议

对于全面的 Docker 学习和实践操作,LabEx 提供交互式环境,引导你完成实际的 Docker 配置和用例。

常见故障排除

  • 重启 Docker 服务:sudo systemctl restart docker
  • 检查 Docker 状态:sudo systemctl status docker
  • 验证网络连接:docker info

运行第一个容器

基本的 Docker 命令

拉取镜像

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

容器生命周期命令

命令 描述
docker run 创建并启动一个新容器
docker ps 列出正在运行的容器
docker ps -a 列出所有容器
docker start 启动一个已停止的容器
docker stop 停止一个正在运行的容器

交互式容器执行

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

容器模式

graph LR A[容器模式] --> B[交互式模式] A --> C[分离模式] A --> D[前台模式] A --> E[后台模式]

分离模式示例

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

端口映射

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

卷挂载

## 将主机目录挂载到容器
docker run -v /host/path:/container/path ubuntu:latest

环境变量

## 设置环境变量
docker run -e MYSQL_ROOT_PASSWORD=secret mysql:latest

容器管理

## 删除一个容器
docker rm container_name

## 删除所有已停止的容器
docker container prune

高级容器操作

检查容器

## 查看容器详细信息
docker inspect container_name

## 查看容器日志
docker logs container_name

最佳实践

  1. 使用官方镜像
  2. 保持容器轻量级
  3. 使用特定的镜像标签
  4. 实施适当的资源限制

LabEx 学习建议

LabEx 提供全面的 Docker 容器管理教程,帮助你掌握实用的容器技能。

容器工作流程

graph TD A[拉取镜像] --> B[创建容器] B --> C[启动容器] C --> D[交互/使用容器] D --> E[停止容器] E --> F[删除容器]

常见场景

场景 Docker 命令
网络服务器 docker run -d -p 80:80 nginx
数据库 docker run -d mysql:latest
Python 应用 docker run -it python:3.9

故障排除提示

  • 检查容器状态:docker ps
  • 查看容器日志:docker logs
  • 重启容器:docker restart

总结

通过学习本教程,你已经掌握了安装 Docker、配置环境以及运行第一个容器的基本步骤。Docker 为应用程序的打包、分发和部署提供了强大的解决方案,使开发者能够以最少的配置创建可移植且可扩展的软件解决方案,并在不同的计算环境中实现最大程度的一致性。