从零到上线:Docker、Docker Compose 与 Runtime 安装部署全指南(含实战示例与应用场景)

文章目录

  • 一、Docker 安装
    • 1. Ubuntu / Debian(官方仓库)
    • 2. RHEL / CentOS / Rocky / AlmaLinux
    • 3. 验证
    • 4. macOS / Windows(Docker Desktop)
  • 二、Docker Compose(V2)安装与基本用法
      • 1) 验证
      • 2) 最小示例(Nginx + Redis)
  • 三、Docker Runtime(运行时)配置
    • 1. daemon.json(核心配置)
    • 2. GPU(NVIDIA)运行时
    • 3. containerd 补充
  • 四、常用运维操作
    • 1. 设置开机自启 / 状态查看
    • 2. 清理空间
    • 3. 卸载(Linux)
  • 五、三件套示例(可直接上手)
  • 六、应用场景对比
    • 1) Docker(引擎)
    • 2) Docker Compose
    • 3) Docker Runtime(运行时)
  • 七、常见问题速解

本文涵盖:

  • Docker 安装(Linux / Windows / macOS)
  • Docker Compose 安装与使用
  • Docker Runtime(运行时)配置(含 GPU、日志、cgroup 驱动等)
  • 常见验证、开机自启、卸载清理
  • 应用场景(分别说明 Docker / Compose / Runtime 适用的典型场景)
  • 赠送一个可直接 docker compose up -d 跑起来的三件套示例(Nginx + Redis + MySQL)

说明:示例命令尽量采用官方推荐做法;Linux 以 Ubuntu/DebianRHEL/CentOS/Rocky/AlmaLinux 两大系为主;Windows 建议 Docker Desktop(WSL2);macOS 用 Docker Desktop。
如机器在生产环境,请在变更前纳入变更/回滚计划。


一、Docker 安装

1. Ubuntu / Debian(官方仓库)

# 1) 清理旧版本(可选)
sudo apt-get remove -y docker docker-engine docker.io containerd runc || true# 2) 依赖
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg# 3) 安装 GPG key & 源(Ubuntu/Debian 通用)
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg \| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \$(. /etc/os-release; echo "$VERSION_CODENAME") stable" \| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 4) 安装 Docker 引擎 + Buildx + Compose v2 插件
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io \docker-buildx-plugin docker-compose-plugin# 5) 开机自启 & 立即启动
sudo systemctl enable --now docker# 6) 非 root 使用(可选)
sudo usermod -aG docker $USER
# 重新登录后 `docker ps` 不需要 sudo

2. RHEL / CentOS / Rocky / AlmaLinux

# 1) 清理旧版本(可选)
sudo yum remove -y docker docker-client docker-client-latest docker-common \docker-latest docker-latest-logrotate docker-logrotate docker-engine || true# 2) 启用官方仓库
sudo yum install -y yum-utils
# (CentOS/Rocky/AlmaLinux 通常使用 centos repo;RHEL 用 rhel repo)
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 3) 安装
sudo yum install -y docker-ce docker-ce-cli containerd.io \docker-buildx-plugin docker-compose-plugin# 4) 开机自启 & 立即启动
sudo systemctl enable --now docker# 5) 非 root 使用(可选)
sudo usermod -aG docker $USER

✅ 快速脚本方式(所有 Linux):curl -fsSL https://get.docker.com | sh
适合实验/内网镜像环境;生产建议按上面“官方仓库”方式做可控安装。

3. 验证

docker version
docker info
docker run --rm hello-world

看到 Hello from Docker! 即成功。

4. macOS / Windows(Docker Desktop)

  • macOS:下载 Docker Desktop(Apple Silicon/Intel 对应版本)→ 安装 → 运行 → 允许权限 → 终端 docker version 验证。

  • Windows 10/11:启用 WSL2 与虚拟化 → 安装 Docker Desktop → Settings 里启用 “Use the WSL 2 based engine” → 选择要集成的 WSL 发行版 → docker version 验证。

    # 开启/升级 WSL(需要管理员 PowerShell)
    wsl --install
    wsl --update
    

二、Docker Compose(V2)安装与基本用法

Compose v2 已作为 Docker 插件安装(上面 Linux 步骤已包含),命令为 docker compose(注意空格)。
旧版 docker-compose(v1)已不再推荐。

1) 验证

docker compose version

2) 最小示例(Nginx + Redis)

docker-compose.yml

services:nginx:image: nginx:1.27-alpineports:- "80:80"volumes:- ./nginx.conf:/etc/nginx/nginx.conf:rodepends_on:- redisredis:image: redis:7-alpineports:- "6379:6379"command: ["redis-server", "--appendonly", "yes"]volumes:- redis-data:/data
volumes:redis-data:

常用命令

docker compose up -d         # 后台启动
docker compose ps            # 查看状态
docker compose logs -f       # 跟日志
docker compose down          # 停止并移除
docker compose down -v       # 顺带删卷(谨慎)

三、Docker Runtime(运行时)配置

Docker 的“运行时”本质是容器底层执行环境(默认 runc;也可以配置 nvidia-container-runtime 以用 GPU)。常见还会一起配置 cgroup 驱动、日志、镜像加速、私有仓库认证等。

1. daemon.json(核心配置)

文件/etc/docker/daemon.json(无则新建)

{"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts":  { "max-size": "100m", "max-file": "3" },"registry-mirrors": ["https://registry-1.docker.io"        // 可替换为你的镜像加速/私有代理]// 如需 GPU,见下方 "runtimes" 配置
}

应用配置:

sudo systemctl daemon-reload
sudo systemctl restart docker
docker info | grep -i cgroup

2. GPU(NVIDIA)运行时

前提:主机已安装 NVIDIA 显卡驱动

安装工具包(Linux)

# 以 Ubuntu 为例(其他发行版见 nvidia-container-toolkit 文档)
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \&& curl -fsSL https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list \| sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \| sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

测试(无需改默认 runtime)

docker run --rm --gpus all nvidia/cuda:12.5.0-base-ubuntu22.04 nvidia-smi

(可选)设置默认 runtime 为 nvidia

// /etc/docker/daemon.json
{"runtimes": {"nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] }},"default-runtime": "nvidia"
}

重启 Docker 后,普通 docker run 即可使用 GPU。

3. containerd 补充

  • 安装 Docker 会同时安装 containerd.io(Docker 底层默认使用 containerd 管理镜像与容器)。
  • 如你运行 Kubernetes,建议统一使用 systemd cgroup driver(上面的 exec-opts 已设置),避免 cgroup 驱动不一致导致的资源管理问题。

四、常用运维操作

1. 设置开机自启 / 状态查看

sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl status docker

2. 清理空间

docker system df                 # 查看空间占用
docker image prune -f            # 清理悬挂镜像
docker container prune -f        # 清理已退出容器
docker volume prune -f           # 清理无用卷(谨慎)
docker builder prune -f          # 清理构建缓存

3. 卸载(Linux)

# Ubuntu/Debian
sudo apt-get purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo rm -rf /var/lib/docker /var/lib/containerd# RHEL/CentOS 系
sudo yum remove -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo rm -rf /var/lib/docker /var/lib/containerd

五、三件套示例(可直接上手)

目录结构

my-stack/
├─ docker-compose.yml
├─ nginx.conf
└─ .env

.env(可选,放数据库密码)

MYSQL_ROOT_PASSWORD=passw0rd
MYSQL_DATABASE=appdb
MYSQL_USER=appuser
MYSQL_PASSWORD=app123

nginx.conf(最小反代静态示例)

events {}
http {server {listen 80;location / {return 200 'hello from nginx in docker\n';add_header Content-Type text/plain;}}
}

docker-compose.yml

services:nginx:image: nginx:1.27-alpineports: ["80:80"]volumes:- ./nginx.conf:/etc/nginx/nginx.conf:rodepends_on: [redis, mysql]redis:image: redis:7-alpinecommand: ["redis-server","--appendonly","yes"]volumes: [redis-data:/data]mysql:image: mysql:8.4environment:- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}- MYSQL_DATABASE=${MYSQL_DATABASE}- MYSQL_USER=${MYSQL_USER}- MYSQL_PASSWORD=${MYSQL_PASSWORD}ports: ["3306:3306"]volumes: [mysql-data:/var/lib/mysql]command: ["mysqld","--default-authentication-plugin=caching_sha2_password"]
volumes:redis-data:mysql-data:

启动

docker compose up -d
docker compose ps
curl http://localhost:80

六、应用场景对比

1) Docker(引擎)

  • 一次打包、处处运行:打包你的 Python/Java/Go/Node 服务镜像,开发/测试/生产环境一致。
  • 单服务快速交付:跑一个独立的 API、Nginx、MySQL 临时实例、CI/CD 的构建/测试任务容器。
  • 隔离与限额:通过 --cpus --memory --pids-limit 做轻量资源管理。
  • 边缘/IoT:在边缘设备上部署轻量应用(可配合 Watchtower 做自动更新)。

2) Docker Compose

  • 本地/单机多服务编排:前端 + 后端 + DB + 缓存 一条命令启动,适合开发联调与小型部署。
  • 集成测试:在 CI 里用 Compose 起依赖(DB/Cache/Queue),跑完就 down 清理。
  • 可迁移 demo:把环境描述写在 docker-compose.yml,他人拉取后一键复现。

3) Docker Runtime(运行时)

  • GPU/AI 场景:通过 nvidia-container-runtime 为训练/推理容器开放 GPU。
  • 日志/审计/资源治理:统一 daemon.json 配置日志轮换、默认 cgroup 驱动,降低故障率。
  • 与 K8s 对齐策略:在需要与 Kubernetes 共存/迁移的场景里,统一 cgroup driver、容器运行时(containerd)策略,减少环境差异问题。

七、常见问题速解

  • permission denied 访问 Docker:加入 docker 组后需要重新登录或 newgrp docker
  • 镜像拉取慢:配置可靠的 registry-mirrors(公司内网代理更稳)。
  • 容器日志爆盘daemon.json 里配置 json-filemax-size/max-file;或换 local 驱动。
  • GPU 不可见:确认宿主机 NVIDIA 驱动 + nvidia-container-toolkit 安装无误,并用 --gpus 测试。
  • 端口占用:换 ports,或 lsof -i :<port> 排查已有进程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/95493.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/95493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java基础篇02:基本语法

1 注释 注释是写在程序中对代码进行解释说明的文字&#xff0c;方便自己和其他人查看&#xff0c;以便理解程序的。注释分为三种&#xff1a;单行注释、多行注释、文档注释注释不影响代码的执行&#xff1a; 原因是编译后的文件已经没有注释了// 这是单行注释&#xff1a;。通常…

【SECS/GEM 】SECS/GEM 日志管理相关的消息

明白 ✅ 在 SECS/GEM 架构里&#xff0c;设备日志&#xff08;Equipment Logging 主要涉及 事件日志&#xff08;Event Log&#xff09;、报警日志&#xff08;Alarm Log&#xff09;、配方操作日志&#xff08;Recipe Log&#xff09;、以及用户操作/命令日志。这些日志通过 S…

ragas 框架使用Chat-GLM模型报API 调用参数有误,请检查文档

ragas 框架使用Chat-GLM模型报API 调用参数有误&#xff0c;请检查文档解决方案 from ragas.llms import LangchainLLMWrapper # 点击LangchainLLMWrapper 进入这个类找到这个方法直接 return 0.1出现问题原因 ChatGLM 不支持设置temperature等于0&#xff0c;默认的值太小了

Kaggle - LLM Science Exam 大模型做科学选择题

Kaggle - LLM Science Exam Science Exam Simple Approach w/ Model Hub | Kaggle Platypus2-70B with Wikipedia RAG | Kaggle 5个选项只有一个选项正确&#xff0c;目标&#xff1a;回答一个选项序列&#xff08;只有前三个有效&#xff09; 输出正确选项 &#xff08;可…

贪吃蛇鱼小游戏抖音快手微信小程序看广告流量主开源

核心优势&#xff1a;为流量主运营者与新手量身打造 1. 为流量主运营者破解成本困局 本地化运行&#xff0c;零服务器成本&#xff1a;数据运行与存储全程在用户手机本地完成&#xff0c;无需部署服务器及后台系统&#xff0c;彻底摆脱服务器租赁、维护等硬性支出&#xff0c;…

PDF Reader 编辑阅读工具(Mac中文)

原文地址&#xff1a;PDF Reader 编辑阅读 for Mac v5.2.0 PDF Reader Pro Mac&#xff0c;是一款PDF编辑阅读&#xff0c;PDF Reader Pro让您直接在 Mac 上进行PDF文件阅读、笔记、编辑、转换、创建PDF、签署PDFs、填写PDF Forms表单、设置密码、合并拆分文件、水印等等&…

Django REST framework:SimpleRouter 使用指南

1. SimpleRouter 是什么&#xff1f; SimpleRouter 是 DRF&#xff08;Django REST framework&#xff09;提供的路由器&#xff0c;能根据 ViewSet 自动生成标准的 REST 路由&#xff0c;包括&#xff1a; GET /resources/ → 列表&#xff08;list&#xff09;POST /resource…

覆盖Transformer、GAN:掩码重建正在重塑时间序列领域!

随着大数据与深度学习的发展&#xff0c;时间序列分析的建模能力显著提升&#xff0c;而掩码重建作为一种自监督学习范式&#xff0c;已成为提升序列表征能力的重要技术。该方法通过随机掩码部分数据并重建原始序列&#xff0c;迫使模型挖掘时序依赖性与潜在模式&#xff0c;在…

用AI做TikTok影视解说,全流程全自动成片,不懂外语也能做全球矩阵!

多语种解说&#xff1a; 短剧出海狂吸美金 多语种解说抢先机 TikTok、YouTube等平台&#xff0c;尤其在非英语市场&#xff0c;内容供给仍远远不足&#xff0c;每一个小语种市场都是潜在蓝海。 有人用英语讲仙侠、西语讲爽剧、日语讲宫斗、阿语讲悬疑&#xff0c;一夜涨粉百…

解密大语言模型推理:输入处理背后的数学与工程实践

解密大语言模型推理&#xff1a;输入处理背后的数学与工程实践当你向ChatGPT提问时&#xff0c;短短几秒内就能获得流畅的回答&#xff0c;这背后隐藏着怎样的技术魔法&#xff1f;答案在于大语言模型高效推理过程中精妙的输入处理机制。在现代大语言模型推理中&#xff0c;输入…

02、连接服务器的几种方式

02、连接服务器的几种方式 1、Xshell 适用于Windows https://www.xshell.com/en/free-for-home-school/ 2、Termius 适用于MacOS 直接苹果商店下载即可 3、IDEA 连接 Tools - Deployment - Browse Remote Host 1、打开Browse Remote Host2、添加服务3、输入服务器连接信息并测试…

高并发系统设计方案(直播场景)

最近在准备面试&#xff0c;正把平时积累的笔记、项目中遇到的问题与解决方案、对核心原理的理解&#xff0c;以及高频业务场景的应对策略系统梳理一遍&#xff0c;既能加深记忆&#xff0c;也能让知识体系更扎实&#xff0c;供大家参考&#xff0c;欢迎讨论。 1. 微服务拆分 …

网络编程基础:一文搞懂 Socket、HTTP、HTTPS、TCP/IP、SSL 的关系

在日常开发中&#xff0c;我们经常听到 Socket、HTTP、HTTPS、TCP/IP、SSL 这些术语&#xff0c;这些概念往往容易混淆&#xff0c;且让人感到困惑。本文将用最通俗易懂的方式来讲清这些网络概念及其相互关系。一、从寄信说起&#xff1a;网络通信的本质假如你要给远方的朋友寄…

查看LoRA 哪个适配器处于激活状态(67)

哪个适配器处于激活状态 当前哪个适配器处于激活状态?我们来查看active_adapter属性就知道了 peft_model.active_adapter输出 default试试另一个(适配器) 你更想试试另一个(适配器)吗?只需调用set_adapter()方法即可。 peft_model.set_adapter(yoda) peft_model.act…

​​Nginx高性能Web服务器实战:从协议原理到运维优化​​

目录 前言 一、Web基础概念 1.1 什么是Web&#xff1f; 1.2 B/S架构模型 1.3 Web请求与响应流程 1.4 静态资源 vs 动态资源 二、HTTP/HTTPS协议详解 2.1 HTTP与HTTPS区别 2.2 HTTPS握手流程 2.3 HTTP状态码大全 三、Nginx核心知识 3.1 Nginx简介 3.2 Nginx vs Apache 3.3 Nginx…

【先楫HPM5E00_EVK系列-板卡测评3】hpm5e00evk平台中断、定时器、PWM、USART等基础功能详解

此文介绍了利用先楫半导体&#xff08;hpm&#xff09;官方hpm5e00_evk开发板使用的主控芯片的一些原理性知识&#xff0c;无实验内容展示&#xff0c;主要汇总了先楫半导体hpm5e00主控芯片的中断、定时器、pwm、usart等功能&#xff0c;主要内容来源于B站“HPM_FAE”的视频和官…

golang 依赖管理

目录 演进过程 1. GOPATH 阶段&#xff08;Go 1.0 - 1.10&#xff0c;2012 - 2018&#xff09; 2. Vendor 机制阶段&#xff08;Go 1.5 实验性引入&#xff0c;1.6 正式支持&#xff0c;2015 - 2018&#xff09; 3. Go Modules 过渡期&#xff08;Go 1.11 - 1.16&#xff0…

概率论—随机事件与概率

文章目录考纲术语事件的关系与运算关系运算古典概型概念和性质放入问题——随机分配取出问题——简单随机抽样问题几何概型概率的性质与计算性质计算事件的独立性和独立的判定事件的独立性判定定理举反例的思想独立试验序列概型与n重伯努利概型错题考纲 术语 (随机)试验随机事…

达梦:存储过程实现多个用户之间表的授权

一、背景在某项目现场&#xff0c;开发商想实现4个用户之间能互相拥有表的查询、删除、插入、更新权限和存储过程的执行权限。此过程只要在新增表之后&#xff0c;其他用户的权限需要授权&#xff0c;如果是手动写&#xff0c;一张表的授权就要写至少3次sql语句&#xff0c;如果…

协议分析基础

0x01 协议分析基础 网络安全领域的“基本功”&#xff1a;一切高级攻击&#xff08;漏洞利用、DDoS、渗透等&#xff09;都体现为网络流量的异常。 核心价值&#xff1a; 故障排查 &#xff1a; 定位网络延迟、丢包、无法连接等问题。性能优化 &#xff1a; 分析应用性能瓶颈。…