Docker 学习篇(三)| Docker安装指南(Linux版)

Docker 学习篇(三)| Docker安装指南(Linux版)

  • [1. 安装前准备](#1. 安装前准备)
  • [2. 方式一:在线安装](#2. 方式一:在线安装)
    • [2.1 卸载旧版本](#2.1 卸载旧版本)
    • [2.2 安装依赖](#2.2 安装依赖)
    • [2.3 配置 Docker 源(阿里云)](#2.3 配置 Docker 源(阿里云))
    • [2.4 安装 Docker Engine](#2.4 安装 Docker Engine)
    • [2.5 安装 Compose 插件](#2.5 安装 Compose 插件)
  • [3. 方式二:离线安装](#3. 方式二:离线安装)
    • [3.1 下载离线包](#3.1 下载离线包)
    • [3.2 上传到服务器](#3.2 上传到服务器)
    • [3.3 解压安装](#3.3 解压安装)
    • [3.4 注册为系统服务](#3.4 注册为系统服务)
  • [4. 启动 Docker](#4. 启动 Docker)
  • [5. 验证](#5. 验证)
  • [6. 配置镜像加速](#6. 配置镜像加速)
  • [7. 防火墙](#7. 防火墙)
  • [8. SELinux(CentOS 特有)](#8. SELinux(CentOS 特有))
  • [9. 常用管理命令](#9. 常用管理命令)
  • [10. 安装中可能遇到的问题](#10. 安装中可能遇到的问题)

1. 安装前准备

以 root 或 sudo 用户登录服务器,执行以下检查:

bash 复制代码
# 1. 确认系统版本
cat /etc/redhat-release
# 应显示 CentOS Linux release 7.x 或 8.x

# 2. 确认网络(在线安装需要)
ping -c 2 mirrors.aliyun.com
# 收到回复说明网络通

# 3. 确认是 root 或有 sudo 权限
whoami
# 非 root 的话后面每条命令前加 sudo

# 4. 查看架构(离线安装需要)
uname -m
# 结果是 x86_64

如果前三步都过了,直接跳到第 2 节(在线安装)。如果服务器没网,跳到第 3 节(离线安装)。


2. 方式一:在线安装

2.1 卸载旧版本

如果之前装过 Docker,先清干净:

bash 复制代码
yum remove -y \
  docker \
  docker-client \
  docker-client-latest \
  docker-common \
  docker-latest \
  docker-latest-logrotate \
  docker-logrotate \
  docker-selinux \
  docker-engine-selinux \
  docker-engine \
  docker-ce \
  2>/dev/null

末尾 2>/dev/null 的意思是:没找到旧包也不报错,忽略即可。不用管输出。

2.2 安装依赖

bash 复制代码
yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken
  • yum-utils 提供 yum-config-manager,下一步配置仓库要它
  • --skip-broken 遇到有问题的包跳过,不卡住安装

2.3 配置 Docker 源(阿里云)

国内用阿里云源,不然下载极慢:

bash 复制代码
# 添加仓库
yum-config-manager --add-repo \
  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 替换下载地址为阿里云
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' \
  /etc/yum.repos.d/docker-ce.repo

# 更新缓存
yum makecache

第三步 yum makecache 报黄色警告可以忽略,红色报错才要处理。

2.4 安装 Docker Engine

bash 复制代码
yum install -y docker-ce

装完确认:

bash 复制代码
docker -v
# 输出示例:Docker version 26.1.4, build 5650f9b

只要有版本号输出就是装好了。

2.5 安装 Compose 插件

bash 复制代码
yum install -y docker-compose-plugin

确认:

bash 复制代码
docker compose version
# 输出示例:Docker Compose version v2.27.1

如果提示找不到这个包,先装 EPEL 源:yum install -y epel-release,然后重试。


3. 方式二:离线安装

3.1 下载离线包

找一台有网的电脑,打开 Docker 静态安装包,下载最新的 .tgz 文件。

3.2 上传到服务器

用 FinalShell、宝塔面板或 scp 把 .tgz 传到服务器。放哪里都行,下面以 /data/ 为例。

3.3 解压安装

bash 复制代码
mkdir -p /data
cd /data/

# 版本号换成你实际下载的文件名
tar -xf docker-26.1.4.tgz

# 把所有 Docker 命令移到系统目录
mv docker/* /usr/bin/

确认:

bash 复制代码
docker -v
# 能输出版本号就说明文件到位了

3.4 注册为系统服务

bash 复制代码
cat > /usr/lib/systemd/system/docker.service << 'EOF'
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload

离线安装不包含 Compose 插件。如需用 docker compose,去 GitHub Releases 下载 docker-compose-linux-x86_64,放入 /usr/libexec/docker/cli-plugins/ 目录并 chmod +x


4. 启动 Docker

不管在线还是离线安装,接下来操作都一样。

bash 复制代码
# 启动
systemctl start docker

# 设置开机自启
systemctl enable docker

# 查看状态
systemctl status docker

看到 Active: active (running) 就是成功了。


5. 验证

bash 复制代码
# 版本检查
docker -v

# 拉一个测试镜像
docker run hello-world

看到 Hello from Docker! 就说明 Docker 完全装好了。

离线安装注意: 离线环境下 docker run hello-world 会因为拉不到镜像而失败,用 docker -v 确认版本即可。离线拉镜像的方式见第五篇命令速查docker load -i

bash 复制代码
# 验证 Compose(在线安装才有)
docker compose version

# 删掉测试镜像
docker rmi hello-world

如果 docker run hello-worldpermission denied:执行 sudo usermod -aG docker $USER,然后退出终端重新登录(必须退出再登录,不退出不生效),再试。


6. 配置镜像加速

国内需要配镜像加速,否则拉镜像极慢。

bash 复制代码
# 创建配置目录
mkdir -p /etc/docker

# 写入配置文件
cat > /etc/docker/daemon.json << 'EOF'
{
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.m.daocloud.io"
  ],
  "data-root": "/data/docker/lib",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
EOF

# 重载并重启
systemctl daemon-reload
systemctl restart docker

配置说明:

字段 作用
registry-mirrors 告诉 Docker 从这些镜像站拉,而不是直连 Docker Hub
data-root 镜像和数据存哪。系统盘满了换大磁盘路径
log-driver + log-opts 每个容器日志最多 10MB、保留 3 个文件,防止日志撑爆磁盘

验证加速器:

bash 复制代码
docker pull hello-world
# 速度明显快了就是生效了
docker rmi hello-world

不要加 docker.xuanyuan.me------在 Docker 26+ 上会报 content size of zero 错误。


7. 防火墙

bash 复制代码
# 根据需要开放对外端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent

# 重载
firewall-cmd --reload

# 确认
firewall-cmd --list-ports

容器之间的通信不需要手动开端口,Docker 自己管理 iptables。


8. SELinux(CentOS 特有)

SELinux 可能会阻止容器访问文件或网络。

检查状态:

bash 复制代码
getenforce

如果显示 Enforcing,可以选择:

bash 复制代码
# 临时关闭(重启后恢复)
setenforce 0

# 或永久关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

个人服务器或开发环境可以直接关。生产环境如果不方便关,启动容器时加 --security-opt label=disable


9. 常用管理命令

bash 复制代码
systemctl start docker     # 启动
systemctl stop docker      # 停止
systemctl restart docker   # 重启
systemctl enable docker    # 开机自启
systemctl status docker    # 查看状态
systemctl daemon-reload    # 改完配置重载

10. 安装中可能遇到的问题

现象 原因 解决
yum install docker-ce 找不到包 阿里云源没配好 重做第 2.3 步,确认 yum repolist 里有 docker
docker-compose-plugin 找不到 缺 EPEL 源 yum install -y epel-release 后重试
docker run hello-world 卡住不动 镜像加速没配或没重启 重做第 6 步
permission denied while trying to connect 当前用户不在 docker 组 sudo usermod -aG docker $USER,退出重新登录
docker run hello-world 报网络错误 加速器配了但镜像源挂了 换成另一个镜像源试试
容器不能访问磁盘目录 SELinux 挡住了 参考第 8 步
磁盘空间不足 镜像和数据占满了系统盘 daemon.jsondata-root 改到大磁盘路径
相关推荐
Tutankaaa1 小时前
知识竞赛软件SaaS版 vs 本地部署
人工智能·经验分享·笔记·学习
liuluyang5301 小时前
linux kernel CONFIG_KCMP解析
linux·运维·服务器
小仙女的小稀罕1 小时前
培训要点写不完不会整理?规范培训转待办可这样操作
大数据·人工智能·学习·自然语言处理·语音识别
Wallace Zhang2 小时前
SimpleFOC源码学习10(v2.3.2) - 电流传感器CurrentSense.cpp与CurrentSense.h
驱动开发·stm32·学习·电流环·simplefoc·foc电机控制
斯班奇的好朋友阿法法3 小时前
RHEL 7.3 离线安装 RPM 包
linux
LuDvei3 小时前
ubuntu环境下qt打包
linux·数据库·qt·ubuntu
逸Y 仙X3 小时前
文章二十六:ElasticSearch 异步查询执行重度任务
java·大数据·linux·运维·elasticsearch·搜索引擎·全文检索
曦夜日长4 小时前
Linux系统篇,指令(四):shell命令及运行原理
linux·运维·服务器
小仙女的小稀罕4 小时前
适合销售从业者会议整理使用的销售录音转任务工具
大数据·人工智能·学习·自然语言处理·语音识别