之前的文章已经大致讲清楚我们拿到一个linux系统一个服务器我们应该意识到什么信息以及做什么现在我们要考虑在服务器上安装软件要做的事情了部署docker1.我们先了解一下linux默认安装软件的方式以及有几种安装方式这个后面的文章有详细说明2.然后讲一下docker安装好以后如何配置3.配置好以后如何进行正常的使用4.docker提供了哪些机制以及机制对应的整个知识体系一、Linux 软件安装方式概览为什么安装 Docker 有多种途径在动手之前有必要先了解 Linux 安装软件的主流方式因为这直接决定了我们安装 Docker 的方法选择。不同的 Linux 发行版“家族”使用不同的包管理器它们作用相同——从软件源中下载并安装软件包自动解决依赖关系但命令和底层包格式不同红帽系RHEL / CentOS / Fedora / Rocky Linux 等早期使用yum新版本CentOS 8、RHEL 9、Fedora已全面转向dnfyum通常软链接到dnf。安装命令示例sudo dnf install docker-ceDebian 系Debian / Ubuntu / Linux Mint 等使用apt或旧式apt-get操作.deb包。安装命令示例sudo apt install docker-ceSUSE 系OpenSUSE / SLES使用zypper。安装命令示例sudo zypper install docker除了这些高级包管理器还有底层工具rpm/dpkg直接安装本地包但不处理依赖以及源码编译最灵活但最麻烦。此外还有跨发行版的通用包格式如 Snap、Flatpak但它们多用于桌面应用服务器场景较少采用。对于 Docker 这样相对复杂且更新频繁的软件官方强烈推荐通过配置官方软件源使用系统的包管理器进行安装这样既能自动处理依赖又能方便后续升级。当然也存在离线安装下载 RPM/DEB 包或二进制文件或一键脚本安装curl -fsSL https://get.docker.com | sh等方式但生产环境建议优先使用源安装便于版本管理和安全更新。二、安装 Docker 引擎以官方源为例虽然具体命令因发行版而异但整体流程一致我们以Ubuntu 22.04和Rocky Linux 9为例展示通用步骤1. 卸载旧版本如有# Ubuntusudoaptremovedockerdocker-engine docker.io containerd runc# Rocky Linuxsudodnf removedockerdocker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine2. 设置 Docker 官方仓库# Ubuntusudoaptupdatesudoaptinstallca-certificatescurlsudoinstall-m0755-d/etc/apt/keyringssudocurl-fsSLhttps://download.docker.com/linux/ubuntu/gpg-o/etc/apt/keyrings/docker.ascsudochmodar /etc/apt/keyrings/docker.ascechodeb [arch$(dpkg --print-architecture)signed-by/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu$(./etc/os-releaseecho$VERSION_CODENAME)stable|sudotee/etc/apt/sources.list.d/docker.list/dev/nullsudoaptupdate# Rocky Linuxsudodnfinstalldnf-plugins-coresudodnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo3. 安装 Docker 引擎及相关组件# Ubuntusudoaptinstalldocker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# Rocky Linuxsudodnfinstalldocker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin4. 启动 Docker 并设置开机自启sudosystemctlenable--nowdocker5. 验证安装sudodockerrun hello-world若能正常输出欢迎信息则安装成功。补充如果使用脚本安装get.docker.com它会自动检测系统并配置源适合快速测试但不建议在严格管控的生产环境使用因为可能干扰已有源配置。三、安装后的关键配置成功安装 Docker 只是第一步为了让其在生产环境中安全、高效运行必须进行以下配置调整1. 管理用户组免 sudo 使用 Docker默认情况下只有root用户或sudo组成员才能执行docker命令。为避免每次加sudo可将普通用户加入docker组注意该组权限等同于 root需谨慎。sudousermod-aGdocker$USER# 重新登录或执行 newgrp docker 生效2. 配置镜像加速器国内常用由于 Docker Hub 在国内访问较慢建议配置加速器如阿里云、腾讯云、中科大等。编辑/etc/docker/daemon.json{registry-mirrors:[https://your-mirror.aliyuncs.com]}重启 Docker 生效sudo systemctl restart docker3. 调整存储驱动与数据根目录存储驱动默认overlay2是当前最优选择一般无需改动。若系统内核较旧可能需降级为overlay。数据根目录默认/var/lib/docker如果系统盘空间有限可将其迁移到大容量分区。方法同上在daemon.json中添加{data-root:/data/docker}4. 日志驱动与日志大小限制容器默认会把所有标准输出日志写到 JSON 文件若不加限制容易撑爆磁盘。建议配置日志轮转{log-driver:json-file,log-opts:{max-size:10m,max-file:3}}5. 防火墙与端口开放如果服务器启用了防火墙如 firewalld 或 ufw记得开放容器需要对外暴露的端口。例如若运行 Web 容器映射 80 端口# firewalldsudofirewall-cmd --add-port80/tcp--permanentsudofirewall-cmd--reload6. 启用 Docker 的远程 API可选危险生产环境不建议开启除非配合 TLS 证书和严格的访问控制。四、Docker 正常使用核心操作一览配置完成后我们可以开始日常容器管理。以下是高频命令快速指南操作命令示例拉取镜像docker pull nginx:latest查看本地镜像docker images运行容器后台docker run -d --name web -p 80:80 nginx查看运行中的容器docker ps查看所有容器含停止docker ps -a停止容器docker stop web启动已停止容器docker start web进入容器内部交互式docker exec -it web /bin/bash查看容器日志docker logs -f web删除容器docker rm web删除镜像docker rmi nginx构建镜像使用 Dockerfiledocker build -t myapp .进阶工具 —— Docker Compose当需要管理多个容器如 Web DB Redis时推荐使用docker compose已集成到 docker 命令中。编写compose.yaml然后通过docker compose up -d一键启动整个服务栈实现环境编排。五、Docker 核心机制与知识体系熟练掌握操作后深入理解 Docker 的运行机制有助于排查故障和优化性能。Docker 的本质是基于 Linux 内核特性的容器化技术其核心支柱包括1. 命名空间Namespaces—— 资源隔离PID Namespace隔离进程树容器内进程看不到宿主机其他进程。NET Namespace隔离网络栈IP、端口、路由等每个容器拥有独立的网络空间。IPC Namespace隔离进程间通信如信号量、消息队列。MNT Namespace隔离文件系统挂载点容器拥有独立的根文件系统。UTS Namespace隔离主机名和域名。User Namespace隔离用户和组 ID可实现容器内 root 映射为宿主非 root 用户提高安全性。2. 控制组Cgroups—— 资源限制通过 cgroupsDocker 可限制每个容器使用的 CPU、内存、磁盘 IO 等资源防止单个容器耗尽宿主机资源。3. 联合文件系统UnionFS—— 镜像分层Docker 镜像采用分层存储如 OverlayFS、AUFS每一层对应 Dockerfile 中的一条指令如 RUN、COPY。这种机制使得镜像轻量、复用性强构建和传输效率高。容器运行时在镜像层之上加一层可写层容器层所有修改仅在该层进行。4. 容器网络模型CNMDocker 默认提供多种网络驱动bridge默认容器间通过虚拟网桥通信适合单机。host容器直接使用宿主机网络栈性能高但无隔离。overlay跨主机容器通信用于 Swarm 或 Kubernetes 环境。macvlan / ipvlan为容器分配物理网络 MAC/IP适合特殊场景。5. 存储卷Volumes容器无状态数据持久化需依赖卷。Docker 提供三种存储方式bind mount将宿主目录挂载进容器灵活但安全风险较高。volume由 Docker 管理的存储卷推荐用于生产数据持久化。tmpfs仅存在于内存中用于临时数据。6. Dockerfile 与镜像构建通过编写 Dockerfile 描述应用环境和启动命令实现“基础设施即代码”。掌握 Dockerfile 最佳实践如合并 RUN 指令、利用缓存、多阶段构建是进阶必备。7. 容器编排生态单机 Docker 能力有限生产环境通常需要集群编排。目前主流是Kubernetes但 Docker Swarm 和 Docker Compose 在小型场景仍有价值。理解 Docker 与编排系统的关系如 CRI 接口有助于向云原生转型。总结与后续本文涵盖了从安装到深度使用的完整路径根据发行版选择合适的包管理器安装 Docker。配置用户组、镜像加速、存储位置、日志策略等关键项。掌握日常容器操作和 Compose 编排。理解容器背后的内核机制命名空间、cgroups、联合文件系统以及网络、存储、镜像构建等知识体系。后续文章我们将深入Docker 网络调优、存储卷最佳实践、Dockerfile 编写技巧以及生产环境安全加固敬请期待。