news 2026/5/9 20:57:35

容器技术入门与 Docker 环境部署

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
容器技术入门与 Docker 环境部署

一、容器与 Docker 核心认知

1. 什么是容器

容器是操作系统层面的轻量级虚拟化,把应用、依赖、配置打包成独立运行单元,共享宿主机内核,实现环境一致性与资源隔离。

2. 为什么用 Docker

  • 启动秒级,性能接近原生
  • 环境一次打包,到处运行
  • 资源占用低,单机可跑上千容器
  • 适配微服务、CI/CD、云原生

3. Docker vs 虚拟机(补充知识点)

表格

维度Docker 容器传统虚拟机
虚拟化层级操作系统层硬件层
内核共享宿主机内核独立 Guest OS
启动速度秒级分钟级
资源开销极低高(约损耗 50%)
隔离性进程 / 资源隔离强系统级隔离
存储大小MB 级GB 级

补充知识点

  • cgroup:限制容器 CPU、内存、磁盘 IO 等资源,防止资源抢占。
  • namespace:实现 PID、网络、挂载、用户等隔离,让容器 “看起来像独立机器”。
  • UnionFS(联合文件系统):Docker 镜像分层存储的基础,支持复用、增量更新、节省空间。

二、Docker 三大核心概念

  1. 镜像(Image)只读模板,分层存储,是容器的 “安装包”。
  2. 容器(Container)镜像的运行实例,可启动 / 停止 / 删除,自带可写层。
  3. 仓库(Registry)集中存储镜像,公共:Docker Hub;私有:Harbor。

补充知识点

  • 镜像分层复用:不同镜像可共享底层层,下载更快、占空间更小。
  • 容器 = 镜像 + 可读层,删除容器不删除镜像。
  • 虚悬镜像:无标签、无引用的镜像,用docker images -f dangling=true查看。

三、CentOS 7/8 安装 Docker(全代码 + 详细步骤)

1. 关闭防火墙与 SELinux

bash

运行

# 停止并禁用防火墙 systemctl stop firewalld systemctl disable firewalld # 临时关闭SELinux setenforce 0 # 永久关闭SELinux sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

2. 配置阿里云 Docker YUM 源

bash

运行

# 下载repo文件 curl -o /etc/y.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 替换系统版本与架构(适配CentOS 7/8) sed -i 's/$releasever/8/g' /etc/yum.repos.d/docker-ce.repo sed -i 's/$basearch/x86_64/g' /etc/yum.repos.d/docker-ce.repo

3. 安装 Docker 引擎

bash

运行

# 清空缓存并生成新缓存 dnf clean all dnf makecache # 安装Docker社区版 dnf -y install docker-ce

4. 配置国内镜像加速(关键)

bash

运行

# 创建docker配置目录 mkdir -p /etc/docker # 写入daemon.json(镜像加速+cgroup驱动) cat > /etc/docker/daemon.json <<EOF { "exec-opts": ["native.cgroupdriver=systemd"], "registry-mirrors": [ "https://docker.m.daocloud.io", "https://docker.imgdb.de", "https://docker-0.unsee.tech", "https://docker.hlmirror.com" ] } EOF

5. 启动并设置开机自启

bash

运行

# 重载配置 systemctl daemon-reload # 启动Docker systemctl restart docker # 开机自启 systemctl enable docker # 验证安装 docker version

6. 内核参数优化(网络转发)

bash

运行

cat >> /etc/sysctl.conf <<EOF net.ipv4.ip_forward=1 net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-ip6tables=1 EOF # 生效配置 sysctl -p

补充知识点

  • native.cgroupdriver=systemd:保证 Docker 与系统资源管理一致,避免稳定性问题。
  • net.ipv4.ip_forward=1:开启 IP 转发,让容器能访问外网和宿主机网络。

四、Docker 镜像操作(全命令 + 代码 + 知识点)

1. 拉取镜像

bash

运行

# 拉取指定版本 docker pull nginx:1.24.0 # 拉取最新版(默认latest) docker pull nginx

补充知识点

  • 不指定 TAG 默认拉取latest,生产环境建议固定版本。
  • 镜像分层下载,重复层不会重复下载。

2. 查看本地镜像

bash

运行

# 查看所有顶层镜像 docker images # 查看所有镜像(含中间层) docker images -a # 只显示镜像ID docker images -q

3. 查看镜像详细信息

bash

运行

# 用ID或名称查看 docker inspect nginx:1.24.0

补充知识点

  • docker inspect返回 JSON,可--format提取字段:

bash

运行

docker inspect --format '{{.Architecture}}' nginx:1.24.0

4. 给镜像打标签

bash

运行

docker tag nginx:1.24.0 nginx:v1

补充知识点

  • tag不复制镜像,只是添加别名,多标签共享同一镜像 ID。

5. 删除镜像

bash

运行

# 按标签删除 docker rmi nginx:v1 # 按ID强制删除 docker rmi -f 镜像ID

注意:删除前必须停止并删除依赖该镜像的容器。

6. 镜像导出 / 导入(离线迁移)

bash

运行

# 导出为tar文件 docker save -o nginx.tar nginx:1.24.0 # 导入镜像 docker load < nginx.tar

补充知识点

  • save/load保存完整分层与历史;export/import只保留当前文件系统,体积更小。

五、Docker 容器操作(全命令 + 代码 + 知识点)

1. 创建容器(不启动)

bash

运行

docker create -it --name mycentos centos:7

2. 查看容器

bash

运行

# 查看运行中容器 docker ps # 查看所有容器(含停止) docker ps -a # 只看容器ID docker ps -q

3. 启动容器

bash

运行

docker start 容器ID/名称

4. 创建并直接启动(最常用)

bash

运行

# 后台运行Nginx,端口映射8080→80 docker run -d --name mynginx -p 8080:80 nginx:1.24.0 # 交互式进入容器 docker run -it --name test centos:7 /bin/bash

常用参数:

  • -d:后台运行
  • -p:端口映射 宿主机:容器
  • -v:挂载目录 宿主机:容器
  • --name:指定容器名
  • --cpus/-m:限制 CPU / 内存

5. 进入运行中的容器

bash

运行

docker exec -it 容器ID /bin/bash

补充知识点

  • exec:在运行中容器新开进程,退出不停止容器。
  • attach:进入容器主进程,退出会停止容器,生产少用。

6. 停止 / 重启容器

bash

运行

# 优雅停止(等待10秒) docker stop 容器ID # 强制停止 docker kill 容器ID # 重启 docker restart 容器ID

7. 容器日志与状态

bash

运行

# 查看日志 docker logs 容器ID # 实时查看日志 docker logs -f 容器ID # 查看资源占用 docker stats 容器ID

8. 容器导出 / 导入

bash

运行

# 导出容器文件系统 docker export 容器ID > centos7.tar # 导入为新镜像 docker import centos7.tar centos7:test

9. 删除容器

bash

运行

# 删除已停止容器 docker rm 容器ID # 强制删除运行中容器 docker rm -f 容器ID # 批量删除所有已停止容器 docker rm -f $(docker ps -aq -f status=exited)

六、Docker 数据卷(补充知识点 + 常用命令)

核心作用

  • 容器数据持久化
  • 宿主机与容器、容器与容器共享数据
  • 容器删除,数据卷不删除

常用命令

bash

运行

# 创建数据卷 docker volume create myvol # 查看数据卷 docker volume ls # 运行时挂载数据卷 docker run -d -v myvol:/data nginx # 删除无用数据卷 docker volume prune

七、常用一键清理命令

bash

运行

# 停止所有容器 docker stop $(docker ps -aq) # 删除所有容器 docker rm -f $(docker ps -aq) # 删除所有镜像 docker rmi -f $(docker images -q) # 清理无用资源(镜像/容器/网络) docker system prune -a

八、本章必懂补充知识点

  1. 容器生命周期:创建→启动→运行→停止→删除
  2. 端口映射:容器端口不直接暴露,必须-p映射到宿主机。
  3. 数据持久化:默认容器删除数据丢失,必须用-v数据卷。
  4. 镜像分层:每层只读,共享复用,构建 / 分发更快。
  5. 生产最佳实践:固定镜像 TAG、使用数据卷、限制资源、配置日志、定期清理。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 20:20:21

英雄联盟智能辅助工具League Akari:5分钟快速上手的完整指南

英雄联盟智能辅助工具League Akari&#xff1a;5分钟快速上手的完整指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为排位赛中的英雄…

作者头像 李华
网站建设 2026/5/9 13:40:10

跨境电商支付系统全解析:从多币种结算到风控反欺诈的技术实现

跨境电商的核心竞争力&#xff0c;除了供应链和物流&#xff0c;还有一个经常被忽视的关键环节——支付系统。对于反向海淘、代购集运等业务场景&#xff0c;支付系统不仅要处理多币种结算&#xff0c;还要应对跨国合规、汇率波动、反欺诈等复杂挑战。本文将从技术架构层面&…

作者头像 李华
网站建设 2026/5/9 19:18:05

XUnity.AutoTranslator终极指南:5分钟实现Unity游戏实时汉化

XUnity.AutoTranslator终极指南&#xff1a;5分钟实现Unity游戏实时汉化 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为看不懂外语游戏而苦恼吗&#xff1f;XUnity.AutoTranslator让你轻松打破语言…

作者头像 李华