1. 首页 > Docker教程 > 正文

Docker教程FG001-Docker官方架构与核心概念(容器/镜像)实战解析

本教程基于Docker官方文档的架构与核心概念部分,详细解析Docker的架构原理、核心组件以及容器和镜像的基本概念。通过理论与实战相结合的方式,帮助读者快速掌握Docker的基础知识,为后续的生产环境部署和管理奠定基础。

风哥教程参考Docker官方文档Docker Engine核心功能手册、Docker容器管理指南等相关内容。

目录大纲

Part01-基础概念与理论知识

1.1 Docker核心概念

Docker是一个开源的容器化平台,主要包含以下核心概念:

  • 镜像(Image):Docker镜像是一个只读的模板,包含了运行应用所需的所有文件系统、代码和依赖。镜像可以从Docker Hub拉取,也可以通过Dockerfile构建。
  • 容器(Container):容器是镜像的运行实例,包含了应用运行所需的完整环境。容器是隔离的,拥有自己的网络、存储和进程空间。
  • 数据卷(Volume):数据卷是持久化存储的一种方式,用于在容器和主机之间共享数据,或者在容器之间共享数据。
  • 网络(Network):Docker提供了多种网络模式,如桥接网络、host网络、overlay网络等,用于容器之间的通信。
  • 仓库(Repository):仓库是存储镜像的地方,Docker Hub是官方的公共仓库,也可以搭建私有仓库。

更多视频教程www.fgedu.net.cn

1.2 Docker架构原理

Docker采用客户端-服务器(C/S)架构,主要组件包括:

  • Docker客户端(Docker CLI):用户通过命令行工具与Docker守护进程交互,发送命令如docker run、docker build等。
  • Docker守护进程(Docker Daemon):运行在主机上,负责管理镜像、容器、网络和存储等资源。
  • Docker Registry:存储Docker镜像的仓库,如Docker Hub。
  • 容器运行时(Container Runtime):负责容器的创建和运行,如runc。

Docker的工作流程:

  1. 用户通过Docker CLI发送命令到Docker守护进程
  2. 守护进程处理命令,如拉取镜像、创建容器等
  3. 容器运行时执行容器的创建和运行
  4. 守护进程将结果返回给客户端

学习交流加群风哥微信: itpux-com

Part02-生产环境规划与建议

2.1 系统硬件要求

风哥提示:生产环境中Docker的硬件要求应根据实际应用负载进行规划,以下为基本建议配置。

  • CPU:至少4核心,推荐8核心以上
  • 内存:至少8GB,推荐16GB以上
  • 存储:至少100GB SSD,推荐200GB以上
  • 网络:千兆网络,推荐万兆网络

检查系统硬件信息:

# 检查CPU核心数
$ nproc
8
# 检查内存大小
$ free -h
total used free shared buff/cache available
Mem: 16G 2.3G 12G 128M 1.7G 13G
Swap: 4G 0B 4G
# 检查磁盘空间
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 200G 20G 180G 10% /

学习交流加群风哥QQ113257174

2.2 操作系统选择

推荐的操作系统:

  • Oracle Linux 9.3 / RHEL 9.3:企业级稳定性,官方支持
  • Ubuntu 22.04 LTS:社区活跃,更新及时
  • CentOS Stream 9:免费,兼容性好
  • 国产麒麟操作系统 Kylin v10 SP3:国产化需求

检查操作系统版本:

# 检查操作系统版本
$ cat /etc/os-release
NAME=”Oracle Linux Server”
VERSION=”9.3″
ID=”ol”
ID_LIKE=”fedora”
VARIANT=”Server”
VARIANT_ID=”server”
VERSION_ID=”9.3″
PLATFORM_ID=”platform:el9″
PRETTY_NAME=”Oracle Linux Server 9.3″
ANSI_COLOR=”0;31″
CPE_NAME=”cpe:/o:oracle:linux:9:3:server”
HOME_URL=”https://linux.oracle.com/”
BUG_REPORT_URL=”https://bugzilla.oracle.com/”

ORACLE_BUGZILLA_PRODUCT=”Oracle Linux 9″
ORACLE_BUGZILLA_PRODUCT_VERSION=9.3
ORACLE_SUPPORT_PRODUCT=”Oracle Linux”
ORACLE_SUPPORT_PRODUCT_VERSION=9.3

更多学习教程公众号风哥教程itpux_com

Part03-生产环境项目实施方案

3.1 Docker安装前期准备

在安装Docker之前,需要进行以下准备工作:

  1. 更新系统包
  2. 安装必要的依赖包
  3. 配置Docker仓库
  4. 关闭防火墙或配置防火墙规则
  5. 关闭SELinux(如适用)

执行准备工作:

# 更新系统包
$ sudo dnf update -y
[sudo] password for fgedu:
Last metadata expiration check: 1:00:00 ago on Mon Apr 10 10:00:00 2026.
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Upgrading:
kernel x86_64 5.15.0-100.0.0.0.1 ol9_baseos_latest 120 M
kernel-core x86_64 5.15.0-100.0.0.0.1 ol9_baseos_latest 400 M
kernel-modules x86_64 5.15.0-100.0.0.0.1 ol9_baseos_latest 280 M

Complete!
# 安装必要的依赖包
$ sudo dnf install -y yum-utils device-mapper-persistent-data lvm2
Last metadata expiration check: 0:10:00 ago on Mon Apr 10 10:10:00 2026.
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
device-mapper-persistent-data x86_64 0.9.0-11.el9 ol9_baseos_latest 44 k
lvm2 x86_64 2.03.11-6.el9 ol9_baseos_latest 1.2 M
yum-utils noarch 4.3.0-5.el9 ol9_baseos_latest 69 k

Complete!

from Docker视频:www.itpux.com

3.2 Docker基本操作实践

安装Docker并进行基本操作:

# 配置Docker仓库
$ sudo yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
Adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
# 安装Docker CE
$ sudo dnf install -y docker-ce docker-ce-cli containerd.io
Last metadata expiration check: 0:05:00 ago on Mon Apr 10 10:15:00 2026.
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
containerd.io x86_64 1.6.28-3.1.el9 docker-ce-stable 34 M
docker-ce x86_64 24.0.9-1.el9 docker-ce-stable 24 M
docker-ce-cli x86_64 24.0.9-1.el9 docker-ce-stable 14 M

Complete!
# 启动Docker服务
$ sudo systemctl start docker
# 设置Docker开机自启
$ sudo systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
# 验证Docker安装
$ docker –version
Docker version 24.0.9, build 2936816

Part04-生产案例与实战讲解

4.1 镜像管理实战

镜像管理是Docker的核心功能之一,包括拉取、查看、删除镜像等操作:

# 拉取Ubuntu镜像
$ docker pull ubuntu:22.04
22.04: Pulling from library/ubuntu
Digest: sha256:0e5e1810212a4b322f32d49178426f1b31188536916b525f8336145624f11d3c
Status: Downloaded newer image for ubuntu:22.04
docker.io/library/ubuntu:22.04
# 查看本地镜像
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 22.04 2b860a9fbb0e 2 weeks ago 77.8MB
# 查看镜像详细信息
$ docker inspect ubuntu:22.04
[
{
“Id”: “sha256:2b860a9fbb0e6b2c1994b3c3509f37544a2c5f5827949f277a0d1c2a932a8f50”,
“RepoTags”: [“ubuntu:22.04”],
“RepoDigests”: [“ubuntu@sha256:0e5e1810212a4b322f32d49178426f1b31188536916b525f8336145624f11d3c”],
“Parent”: “”,
“Comment”: “”,
“Created”: “2026-03-28T00:30:00Z”,
“Container”: “”,
“ContainerConfig”: {
“Hostname”: “”,
“Domainname”: “”,
“User”: “”,
“AttachStdin”: false,
“AttachStdout”: false,
“AttachStderr”: false,
“Tty”: false,
“OpenStdin”: false,
“StdinOnce”: false,
“Env”: [“PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin”],
“Cmd”: [“/bin/sh”, “-c”, “#(nop) “, “CMD [\”/bin/bash\”]”],
“Image”: “”,
“Volumes”: null,
“WorkingDir”: “”,
“Entrypoint”: null,
“OnBuild”: null,
“Labels”: {}
},
“DockerVersion”: “20.10.24”,
“Author”: “”,
“Config”: {
“Hostname”: “”,
“Domainname”: “”,
“User”: “”,
“AttachStdin”: false,
“AttachStdout”: false,
“AttachStderr”: false,
“Tty”: false,
“OpenStdin”: false,
“StdinOnce”: false,
“Env”: [“PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin”],
“Cmd”: [“/bin/bash”],
“Image”: “”,
“Volumes”: null,
“WorkingDir”: “”,
“Entrypoint”: null,
“OnBuild”: null,
“Labels”: null
},
“Architecture”: “amd64”,
“Os”: “linux”,
“Size”: 77800000,
“VirtualSize”: 77800000,
“GraphDriver”: {
“Data”: {
“LowerDir”: “/var/lib/docker/overlay2/5e6f8e9d1e8b9a3c4e9f8a7b6c5d4e3f2a1b0c9d8e7f6e5d4c3b2a1/rootfs”,
“MergedDir”: “/var/lib/docker/overlay2/5e6f8e9d1e8b9a3c4e9f8a7b6c5d4e3f2a1b0c9d8e7f6e5d4c3b2a1/merged”,
“UpperDir”: “/var/lib/docker/overlay2/5e6f8e9d1e8b9a3c4e9f8a7b6c5d4e3f2a1b0c9d8e7f6e5d4c3b2a1/diff”,
“WorkDir”: “/var/lib/docker/overlay2/5e6f8e9d1e8b9a3c4e9f8a7b6c5d4e3f2a1b0c9d8e7f6e5d4c3b2a1/work”
},
“Name”: “overlay2”
},
“RootFS”: {
“Type”: “layers”,
“Layers”: [“sha256:sha256:0e5e1810212a4b322f32d49178426f1b31188536916b525f8336145624f11d3c”]
},
“Metadata”: {
“LastTagTime”: “2026-04-10T10:20:00Z”
}
}
]

更多视频教程www.fgedu.net.cn

4.2 容器操作实战

容器操作包括创建、启动、停止、删除容器等:

# 创建并启动一个Ubuntu容器
$ docker run -it –name fgedu-container ubuntu:22.04 /bin/bash
root@fgedu-container:/#
# 在容器中执行命令
root@fgedu-container:/# ls -la
total 64
drwxr-xr-x 1 root root 4096 Apr 10 10:25 .
drwxr-xr-x 1 root root 4096 Apr 10 10:25 ..
-rwxr-xr-x 1 root root 0 Apr 10 10:25 .dockerenv
drwxr-xr-x 2 root root 4096 Mar 28 00:30 bin
drwxr-xr-x 2 root root 4096 Mar 28 00:30 boot
drwxr-xr-x 5 root root 360 Apr 10 10:25 dev
drwxr-xr-x 1 root root 4096 Apr 10 10:25 etc
drwxr-xr-x 2 root root 4096 Mar 28 00:30 home
drwxr-xr-x 8 root root 4096 Mar 28 00:30 lib
drwxr-xr-x 2 root root 4096 Mar 28 00:30 media
drwxr-xr-x 2 root root 4096 Mar 28 00:30 mnt
drwxr-xr-x 2 root root 4096 Mar 28 00:30 opt
drwxr-xr-x 2 root root 4096 Mar 28 00:30 proc
drwx—— 2 root root 4096 Mar 28 00:30 root
drwxr-xr-x 2 root root 4096 Mar 28 00:30 run
drwxr-xr-x 2 root root 4096 Mar 28 00:30 sbin
drwxr-xr-x 2 root root 4096 Mar 28 00:30 srv
drwxr-xr-x 2 root root 4096 Mar 28 00:30 sys
drwxrwxrwt 2 root root 4096 Mar 28 00:30 tmp
drwxr-xr-x 11 root root 4096 Mar 28 00:30 usr
drwxr-xr-x 11 root root 4096 Mar 28 00:30 var
# 退出容器
root@fgedu-container:/# exit
exit
# 查看容器状态
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1234567890ab ubuntu:22.04 “/bin/bash” 5 minutes ago Exited (0) 1 minute ago fgedu-container
# 启动容器
$ docker start fgedu-container
fgedu-container
# 停止容器
$ docker stop fgedu-container
fgedu-container
# 删除容器
$ docker rm fgedu-container
fgedu-container

学习交流加群风哥微信: itpux-com

Part05-风哥经验总结与分享

5.1 最佳实践建议

风哥提示:在生产环境中使用Docker时,应遵循以下最佳实践,以确保系统的稳定性和安全性。

  • 镜像管理
    • 使用官方镜像或经过验证的第三方镜像
    • 定期更新镜像以获取安全补丁
    • 使用多阶段构建减小镜像体积
    • 为镜像添加标签以便版本管理
  • 容器管理
    • 限制容器的资源使用(CPU、内存)
    • 使用数据卷进行持久化存储
    • 配置容器健康检查
    • 使用网络策略隔离容器网络
  • 安全配置
    • 使用非root用户运行容器
    • 启用Docker Content Trust
    • 定期扫描镜像漏洞
    • 配置Docker daemon的安全选项

学习交流加群风哥QQ113257174

5.2 常见问题解决

在使用Docker过程中,常见的问题及解决方案:

  • 容器启动失败
    • 检查容器日志:docker logs <container-id>
    • 检查端口是否被占用
    • 检查挂载的卷是否正确
  • 镜像拉取失败
    • 检查网络连接
    • 配置Docker镜像加速器
    • 检查Docker Hub是否可访问
  • 容器网络问题
    • 检查网络配置:docker network ls
    • 检查容器IP:docker inspect <container-id>
    • 测试网络连通性:docker exec <container-id> ping <host>

更多学习教程公众号风哥教程itpux_com

from Docker视频:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息