如何使用 Docker 基本命令

DockerBeginner
立即练习

简介

Docker 通过提供一个强大的容器化平台,彻底改变了软件开发方式。本全面教程将引导你学习基本的 Docker 命令,帮助开发者和系统管理员了解如何高效管理 Docker 容器、镜像和网络。无论你是初学者还是想复习 Docker 技能,本指南都将为你提供使用 Docker 命令行界面的实用见解。

Docker 核心概念

什么是 Docker?

Docker 是一个开源平台,旨在通过容器化实现应用程序部署、扩展和管理的自动化。它使开发者能够将应用程序及其所有依赖项打包成称为容器的标准化单元,这些容器可以在不同的计算环境中一致地运行。

Docker 关键概念

1. 容器

容器是轻量级、独立的可执行包,包含运行应用程序所需的一切:

  • 代码
  • 运行时环境
  • 系统工具
  • 系统库
  • 设置
graph LR A[应用程序代码] --> B[容器] C[依赖项] --> B D[系统库] --> B E[配置] --> B

2. 镜像

Docker 镜像是用于创建容器的只读模板。它们充当容器创建的蓝图,并可存储在诸如 Docker Hub 之类的镜像仓库中。

3. Dockerfile

Dockerfile 是一个文本文件,包含构建 Docker 镜像的指令。它定义了应用程序的环境、依赖项和配置。

Dockerfile 示例:

FROM ubuntu:22.04
RUN apt-get update
RUN apt-get install -y python3
COPY.. /app
WORKDIR /app
CMD ["python3", "app.py"]

4. Docker 架构

graph TB A[Docker 客户端] --> B[Docker 守护进程] B --> C[容器运行时] B --> D[镜像仓库] B --> E[镜像存储]

5. 容器与虚拟机对比

特性 容器 虚拟机
资源使用 轻量级 重量级
启动时间 秒级 分钟级
隔离级别 进程级 完整操作系统级
性能

Docker 的优势

  1. 跨环境一致性
  2. 更快的部署
  3. 增强的可扩展性
  4. 更好的资源利用率
  5. 简化的依赖项管理

用例

  • 微服务架构
  • 持续集成/持续部署(CI/CD)
  • 云原生应用开发
  • 简化的应用测试

开始使用 LabEx

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

Docker 安装指南

前提条件

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

  • 64 位操作系统
  • 内核版本 3.10 或更高
  • 足够的系统资源

安装方法

1. 使用软件包仓库安装

步骤 1:更新软件包索引
sudo apt-get update
步骤 2:安装所需软件包
sudo apt update
sudo apt-get install ca-certificates curl gnupg lsb-release
步骤 3:添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
步骤 4:设置 Docker 仓库
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
步骤 5:安装 Docker 引擎
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

2. 验证安装

sudo docker --version
sudo docker run hello-world

安装流程

graph TD A[更新系统] --> B[安装依赖项] B --> C[添加 GPG 密钥] C --> D[配置仓库] D --> E[安装 Docker] E --> F[验证安装]

安装后步骤

1. 以非 root 用户身份管理 Docker

sudo usermod -aG docker $USER
newgrp docker

2. 配置 Docker 开机自启

sudo systemctl enable docker
sudo systemctl start docker

Docker 安装选项

方法 优点 缺点
软件包仓库 易于更新 需要互联网连接
官方软件包 直接控制 手动更新
脚本安装 快速设置 安全性较低

常见问题排查

  • 检查系统兼容性
  • 验证网络连接
  • 确保有足够的磁盘空间
  • 定期更新系统软件包

LabEx Docker 学习环境

LabEx 提供交互式 Docker 安装教程和实践环境,帮助开发者快速有效地掌握容器化技术。

推荐系统要求

组件 最低规格
CPU 2 核
内存 4GB
磁盘空间 20GB
操作系统 Ubuntu 22.04 LTS

Docker 基本命令

Docker 命令结构

Docker 命令遵循标准语法:

docker [命令] [选项] [参数]

镜像管理命令

1. 拉取镜像

docker pull ubuntu:latest
docker pull nginx:alpine

2. 列出镜像

docker images
docker image ls

3. 删除镜像

docker rmi ubuntu:latest
docker image rm nginx:alpine

容器管理命令

1. 创建并运行容器

docker run -d --name web-server nginx
docker run -it ubuntu:latest /bin/bash

2. 列出容器

docker ps    ## 运行中的容器
docker ps -a ## 所有容器

3. 启动、停止、重启容器

docker start web-server
docker stop web-server
docker restart web-server

4. 删除容器

docker rm web-server
docker container prune ## 删除所有已停止的容器

容器交互命令

1. 在容器中执行命令

docker exec -it web-server bash
docker exec web-server ls /var/www/html

2. 查看容器日志

docker logs web-server
docker logs -f web-server ## 跟随日志输出

Docker 工作流程

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

高级 Docker 命令

1. 构建自定义镜像

docker build -t myapp:v1.

2. Docker 卷

docker volume create myvolume
docker run -v myvolume:/app nginx

3. 网络管理

docker network create mynetwork
docker run --network mynetwork nginx

常见 Docker 命令类别

类别 用途 示例命令
镜像管理 管理 Docker 镜像 pull、push、build
容器管理 控制容器 run、start、stop
系统管理 Docker 系统信息 info、version
网络管理 管理网络 network create
卷管理 管理持久数据 volume create

最佳实践

  • 使用特定的镜像标签
  • 清理未使用的资源
  • 对于复杂设置使用 Docker Compose
  • 实施多阶段构建

LabEx Docker 学习

LabEx 提供交互式环境来实践这些 Docker 命令,帮助开发者高效地获得实用的容器化技能。

有用的 Docker 命令选项

选项 描述 示例
-d 分离模式 docker run -d nginx
-it 交互式终端 docker run -it ubuntu
--name 为容器命名 docker run --name web nginx
-p 端口映射 docker run -p 8080:80 nginx

总结

通过掌握这些 Docker 基本命令,你已经获得了容器管理和部署的基本技能。Docker 为在不同环境中创建、运行和管理容器提供了一个强大的解决方案。当你继续探索 Docker 的功能时,请记住这些基本命令是高效容器化策略的基础。通过实践和试验这些命令,熟练掌握 Docker 技术并简化你的开发工作流程。