Rocky Linux 9.5 部署docker
本文于 141 天前发布,最后更新于 141 天前

原文地址:https://blog.csdn.net/leblanceAndSherry/article/details/147931144

一、Docker的简介

容器化平台 Docker 是一个开源的应用容器引擎,开发者可通过它将应用及其依赖(库、环境配置等)打包为轻量级、可移植的独立单元——容器(Container)。

核心目标 解决“环境一致性”问题,确保应用在开发、测试、生产环境中运行行为一致,实现“一次构建,随处运行”(Build Once, Run Anywhere)。

技术原理:

  1. 轻量级虚拟化
    • 与传统虚拟机对比
      • 虚拟机(VM):虚拟化硬件层 + 完整操作系统,资源占用高。
      • Docker容器:直接共享宿主机的操作系统内核,仅隔离进程与文件系统,启动快(秒级)、资源占用极低。
    • 依赖技术
      • Linux Namespace:实现进程、网络、文件系统等资源的隔离。
      • Cgroups(Control Groups):限制容器对CPU、内存等资源的占用。
      • Union FS(如OverlayFS):支持镜像分层构建与高效存储。
  2. 核心组件
    • Docker镜像:只读模板,定义容器运行环境和应用代码。通过分层构建节省存储。
    • Docker容器:镜像的运行实例,包含应用进程和独立环境。
    • Docker守护进程(dockerd):管理容器生命周期,监听API请求。
    • Docker客户端(docker):用户与守护进程交互的命令行工具。
    • Docker Hub:公共镜像仓库,用于共享和获取镜像(如 nginxredis 等)。

核心优势:

  1. 环境一致性 消除“开发-生产环境差异”,避免因环境配置导致的问题。
  2. 高效资源利用 单台服务器可运行数十个容器,资源利用率显著高于虚拟机。
  3. 快速部署与扩展 容器秒级启动,结合编排工具(如Kubernetes)可实现自动化扩缩容。
  4. DevOps 友好
    • 标准化CI/CD流程,加速代码从提交到部署的流水线。
    • 支持微服务架构,每个服务独立容器化开发和部署。

主要应用场景

  • 微服务架构:将单体应用拆分为独立容器化服务,提升灵活性和可维护性。
  • 持续集成/持续部署(CI/CD):自动化测试与发布,确保每次构建的环境一致。
  • 混合云迁移:容器化封装旧应用(如Java/.NET),无需重写即可迁移至云环境。
  • 高密度计算任务:快速启动大量容器处理批处理任务(如数据分析)。
  • 开发环境标准化:新成员通过 Dockerfile 一键复现开发环境。

生态工具

  • Docker Compose:通过YAML文件定义和管理多容器应用。
  • Docker Desktop:为Windows/macOS提供图形化管理界面。
  • Docker Swarm:原生集群管理工具,支持服务伸缩与滚动更新。
  • Kubernetes:行业标准容器编排平台,管理大规模容器集群。

Docker 通过 容器化技术 重构了应用交付方式,以 轻量、隔离、可移植 的特性成为现代云计算、微服务及DevOps的核心基础设施。其技术本质是“进程级虚拟化”,资源效率远超传统虚拟机,同时通过标准化镜像与工具链赋能快速构建、分发和运维应用。

二、Docker的安装

(1)添加阿里云 docker 社区版仓库

dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(2)安装 docker 社区版

# 安装最新版
dnf install -y docker-ce

或者

# 安装指定版本
# 列出当前系统中所有可安装的 docker-ce 版本,并按照版本号从高到低进行排序,同时显示重复的版本。
dnf list docker-ce --showduplicates | sort -r
# 安装指定版本 docker-ce
dnf install -y docker-ce-3:28.3.0-1.el9

(3)启动 docker 并设置开机自启

systemctl enable docker --now
# --now 选项:表示在启用开机启动的同时立即启动该服务,相当于同时执行了 enable 和 start

其他命令:

# 设置 docker 开机自启
systemctl enable docker
# 启动 docker
systemctl start docker
# 查看 docker 状态
systemctl status docker

三、配置Docker镜像加速

国内由于网络环境的特殊性,访问 Docker Hub 可能会遇到速度慢或者连接不稳定的问题。为了提高 Docker 镜像的下载速度,可以使用镜像加速服务。截至到目前,阿里云镜像加速仅支持具备公网访问能力的阿里云产品,腾讯云镜像加速只支持内网访问,本地部署笔者目前使用的相对稳定和可信的有两个:
1.DaoCloud 提供的公共 Docker 镜像加速服务,地址为 https://docker.m.daocloud.io
2.华为云镜像加速器:需要登陆获取地址,方法可以参考:https://support.huaweicloud.com/usermanual-swr/swr_01_0045.html

(1)创建目录,存放 docker 的配置文件

mkdir -p /etc/docker

(2)创建 daemon.json,添加镜像加速服务地址

cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io"
  ]
}
EOF

备注:
使用 cat 如果 daemon.json 不存在会创建文件,但是如果文件存在,会覆盖里面的内容
如果只是想在 daemon.json 里面追加内容,可以自行编辑文件。
daemon.json 用的比较多的配置参数有下面三个:
1.registry-mirrors: 数组,指定 Docker Hub 的镜像加速器地址,以加快镜像下载速度
2.insecure-registries: 数组,列出不安全的私有仓库地址。默认情况下,Docker 只允许连接使用 HTTPS 的仓库,如果需要连接到一个使用 HTTP 的仓库,则需在此处添加该仓库地址。
3.exec-opts: 数组,指定运行时的选项。例如,使用 native.cgroupdriver=systemd 来改变 cgroups 驱动为 systemd。

(3)更新 docker 服务配置并重启服务

systemctl daemon-reload
systemctl restart docker

(4)测试是否可以正常拉取 nginx 镜像

docker pull nginx

(5)测试部署 nginx

# 上一步拉取 nginx 成功后执行
# 下面命令执行成功后浏览器访问 http://ip:80
docker run -d -p 80:80 --name nginx nginx

四、Docker的常用命令

4.1 镜像相关命令

# 拉取镜像,以 nginx 为例,不添加标签默认拉取最新版本
# docker pull [镜像名:标签]
docker pull nginx:latest

# 查看所有本地镜像
docker images
# 查看所有本地镜像,只显示镜像ID
docker images -q

# 构建镜像
docker build -t [镜像名:标签] .          # 在当前目录构建镜像
docker build -f Dockerfile.prod .       # 指定Dockerfile构建

# 登录 Docker 镜像仓库(如 Docker Hub、私有仓库等)
docker login [服务器地址]
# 登出指定服务器
docker logout [服务器地址]

# 标记镜像(用于推送到仓库)
# docker tag [源镜像] [目标仓库/镜像:标签]
docker tag nginx:latest http://localhost:5000/nginx/nginx:1.0
# 推送镜像到仓库
# docker push [仓库/镜像:标签]
docker push http://localhost:5000/nginx/nginx:1.0 

# 删除指定镜像
# docker rmi [镜像ID或名称]
docker rmi nginx:latest
# 删除所有本地镜像(危险操作)
docker rmi $(docker images -q)

4.2 容器操作

# 创建并启动容器
# -d 或 --detach: 在后台运行容器,不使用这个选项,命令将会在前台运行
# -p:实现主机端口与容器端口的映射,格式为 主机端口:容器端口
# --name: 为容器指定一个名称。如果没有指定,Docker将自动生成一个唯一的名称。
# -v:将主机目录或者文件挂载到容器中,格式是 主机路径:容器路径
# -e:用于设置容器内的环境变量,它允许你向容器中传递环境变量,这些环境变量可以在容器内的应用程序中使用。
# -m 或 --memory:限制容器可用的最大内存,例如 --memory=512m
# --cpus:限制容器可以使用的最大 CPU 数,例如 --cpus=0.5 表示容器最多能使用 0.5 个 CPU 核心
# --restart: 定义容器退出后的重启策略。例如,no, on-failure, always, unless-stopped
# docker run -d -p <host-port>:<container-port> --name <container-name> <image-name>
docker run -d -p 80:80 --name nginx nginx

# 列出正在运行的容器
docker ps
# 列出所有容器(包括停止的)
docker ps -a
# 列出所有容器,只显示容器ID
docker ps -aq

# 启动/停止/重启容器
docker start [容器ID或名称]              # 启动已停止的容器
docker stop [容器ID或名称]               # 优雅停止容器
docker restart [容器ID或名称]            # 重启容器
docker kill [容器ID或名称]               # 强制终止容器

# 进入容器
docker exec -it [容器ID或名称] bash      # 进入运行中的容器
docker attach [容器ID或名称]             # 附加到容器的主进程
# 主要用于查看 Nginx 容器的实时日志输出
docker attach nginx

# 删除容器, 添加 --force 参数强制删除
docker rm [容器ID或名称]                 # 删除已停止的容器
docker rm -f $(docker ps -aq)           # 强制删除所有容器(危险操作)

# 查看容器日志
docker logs [容器ID或名称]               # 查看容器日志
docker logs -f [容器ID或名称]            # 实时跟踪日志输出

4.3 容器资源与状态

# 查看容器资源使用情况
docker stats [容器ID或名称]              # 实时监控CPU/内存/网络等
docker top [容器ID或名称]                # 查看容器内运行的进程

# 获取容器详细信息
docker inspect [容器ID或名称]            # 获取容器详细配置信息
docker port [容器ID或名称]               # 查看端口映射情况

4.4 其它常用命令

# 保存/加载镜像
docker save -o myimage.tar nginx        # 将镜像保存为tar文件
docker load -i myimage.tar              # 从tar文件加载镜像

# 清理 Docker
# 默认情况下会删除以下内容
# 1、所有已经停止的容器。
# 2、未被使用的网络(即没有被任何容器使用的网络)。
# 3、悬空的镜像(dangling images),即没有标签且未被任何容器引用的镜像。
# 4、未使用的构建缓存
# 建议定期运行 docker system prune 来保持系统的清洁,特别是当你频繁地构建和测试镜像时,这样可以避免不必要的磁盘空间占用。
docker system prune
# 查看Docker磁盘使用情况
docker system df
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇