第2课:Docker 基本概念

【腾讯云】语音识别准确率高,支持多语种,多场景,限时特惠,最低14.9元起

推广

【腾讯云】语音识别准确率高,支持多语种,多场景,限时特惠,最低14.9元起

Docker 架构

Docker 使用客户端-服务器架构。Docker 客户端与 Docker 守护进程通信,后者负责构建、运行和分发 Docker 容器。

核心组件

1. Docker 守护进程(Docker Daemon)

  • 运行在主机上的后台服务
  • 负责管理Docker对象:镜像、容器、网络和卷
  • 监听Docker API请求并处理

2. Docker 客户端(Docker Client)

  • 用户与Docker交互的主要方式
  • 发送命令到Docker守护进程
  • 可以与多个守护进程通信

3. Docker 注册表(Docker Registry)

  • 存储Docker镜像的地方
  • Docker Hub是默认的公共注册表
  • 可以运行私有注册表

核心概念详解

镜像(Image)

Docker镜像是一个只读模板,包含创建Docker容器的指令。

特点:

  • 分层存储:镜像由多个层组成,每层代表Dockerfile中的一条指令
  • 只读:镜像创建后不能修改
  • 可共享:多个容器可以共享同一个镜像

镜像层示例:

应用层     ← 你的应用代码
运行时层   ← Node.js/Python/Java等
系统层     ← Ubuntu/Alpine等基础系统

容器(Container)

容器是镜像的运行实例,是一个可运行的环境。

特点:

  • 可写层:在镜像之上添加一个可写层
  • 隔离性:每个容器都有独立的文件系统、网络和进程空间
  • 临时性:容器删除后,可写层的数据会丢失

仓库(Repository)

仓库是集中存放镜像的地方,包含同一个应用的不同版本。

仓库标签:

  • nginx:latest - 最新版本
  • nginx:1.21 - 特定版本
  • nginx:alpine - 基于Alpine Linux的版本

Docker 对象

网络(Networks)

Docker网络允许容器之间以及容器与外部世界通信。

网络类型:

  • bridge:默认网络驱动,适用于单主机
  • host:容器直接使用主机网络
  • overlay:用于多主机通信
  • none:禁用网络

数据卷(Volumes)

数据卷是持久化数据的首选机制。

优势:

  • 数据持久化:容器删除后数据仍然存在
  • 性能更好:直接访问主机文件系统
  • 可共享:多个容器可以挂载同一个卷

命名空间(Namespaces)

Docker使用Linux命名空间提供隔离。

命名空间类型:

  • PID:进程隔离
  • NET:网络隔离
  • IPC:进程间通信隔离
  • MNT:文件系统挂载点隔离
  • UTS:主机名和域名隔离

实践示例

查看系统信息

# 查看Docker版本
docker version

# 查看系统信息
docker info

# 查看帮助
docker --help

镜像操作

# 搜索镜像
docker search nginx

# 拉取镜像
docker pull nginx:latest

# 查看本地镜像
docker images

# 删除镜像
docker rmi nginx:latest

容器操作

# 运行容器
docker run -d --name my-nginx nginx

# 查看运行中的容器
docker ps

# 查看所有容器
docker ps -a

# 停止容器
docker stop my-nginx

# 删除容器
docker rm my-nginx

小结

在这一课中,我们学习了:

  • Docker的客户端-服务器架构
  • 镜像、容器、仓库的详细概念
  • Docker网络和数据卷
  • 基本的Docker命令操作

理解这些核心概念对后续学习非常重要。

实践作业

  1. 使用docker info查看你的Docker系统信息
  2. 拉取一个nginx镜像并运行容器
  3. 查看容器的详细信息:docker inspect <容器名>
  4. 尝试进入运行中的容器:docker exec -it <容器名> /bin/bash

思考题

  1. 为什么Docker镜像要使用分层存储?
  2. 容器和虚拟机的隔离机制有什么不同?
  3. 什么情况下需要使用数据卷?

下一课我们将学习Docker镜像的管理和操作。

Vue3 + TypeScript 企业级项目实战

课程推荐

Vue3 + TypeScript 企业级项目实战
Python 全栈开发工程师培训

热门课程

Python 全栈开发工程师培训

📚 文章对你有帮助?请关注我的公众号,万分感谢!

获取更多优质技术文章,第一时间掌握最新技术动态

关注公众号

关注公众号

第一时间获取最新技术文章

添加微信

添加微信

技术交流 · 问题答疑 · 学习指导

评论讨论

欢迎留下你的想法和建议