Docker手动安装Linux:Linux服务器上如何手动安
Linux服务器上如何手动安装Docker?从下载到运行全步骤
很多运维场景下服务器不能直接访问外网,或者你希望精确控制安装版本。Docker手动安装Linux 就是指通过二进制包或离线包来部署Docker,而不依赖系统的包管理器。
本文会手把手带你走完整个流程,即使你是第一次接触Linux也能跟着完成。
前置准备
在开始操作前,请确认以下条件已满足:
- 一台Linux服务器,本文以CentOS 7 / Ubuntu 20.04为例,其他发行版类似。
- 有root权限,或者使用sudo提权。
- 已离线准备好Docker安装包:从 Docker官方GitHub Release 下载
docker-<版本>-<架构>.tar.gz(例如docker-20.10.17-ce.tgz)。 - 可选:配置好本地的离线仓库或scp工具,以便传输文件。
如果服务器完全断网,你需要在有网的机器上下载好包,再用U盘或内网传输工具拷过去。
分步操作
第一步:检查系统依赖
Docker依赖一些内核模块和工具,先安装基础依赖:
# CentOS/RHEL
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
Ubuntu/Debian
sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
如果完全离线,这些依赖也需要提前下载。这里假定你的服务器至少有yum/apt的离线仓库。
第二步:解压并安装Docker二进制
将下载的 docker-*.tgz 上传到服务器的 /tmp 目录,然后执行:
tar -xzvf /tmp/docker-*.tgz -C /tmp/
sudo cp /tmp/docker/* /usr/bin/这样就把docker、docker-containerd等所有二进制文件复制到了系统PATH下。
第三步:配置systemd服务(可选但推荐)
为了让Docker守护进程随系统启动,需要创建systemd单元文件。
sudo tee /etc/systemd/system/docker.service > /dev/null <
[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
接着加载并启动:
sudo systemctl daemon-reload
sudo systemctl start docker
sudo systemctl enable docker第四步:验证Docker是否运行
docker version
应该显示Client和Server版本信息
docker run hello-world
如果无法拉取镜像(离线环境)可能会失败,但本地命令会显示正确
如果你是从其他机器拷贝了 hello-world.tar 镜像,可以提前导入:
docker load -i /path/to/hello-world.tar
docker run hello-world避坑指南
- 依赖缺失导致启动失败:
dockerd启动时报 “No such file or directory” 或关于“runc”的错误,通常是系统缺失libltdl7等库。在CentOS上执行yum install -y libtool-ltdl,Ubuntu上执行apt install libltdl7。 - selinux干扰:如果容器启动被拒绝,检查selinux是否启用。临时关闭:
setenforce 0,或配置selinux策略。 - 防火墙规则:Docker会修改iptables,若你的环境有自定义防火墙,可能造成冲突。启动Docker前建议先清空规则(仅测试环境)。
- 二进制版本与内核不匹配:下载的Docker版本较新而内核较旧,可能导致cgroups功能异常。建议下载与操作系统官方提供版本相近的Docker。
高频问题解答
Q1:手动安装后能用 docker-compose 吗?
A:可以。docker-compose 是一个独立的Python脚本或Go二进制,需要额外下载。从GitHub Release下载对应架构的二进制,放到 /usr/local/bin/docker-compose 并赋予执行权限即可。
Q2:离线环境如何获取镜像?
A:在有网的机器上 docker pull <镜像>,然后 docker save -o <文件名.tar> <镜像>,再把tar包传到目标服务器用 docker load 导入。
Q3:启动Docker后 docker ps 报权限错误?
A:当前用户不在docker组中。解决方法:sudo usermod -aG docker $USER,然后注销重新登录。或者始终用sudo执行。
Q4:手动安装后如何更新版本?
A:停止docker服务(systemctl stop docker),重新下载新版二进制到 /usr/bin 覆盖,再启动服务。注意数据库和容器数据存储在 /var/lib/docker,更新不会丢失。
效果验证
完成上述步骤后,可以执行以下命令确认 Docker手动安装Linux 成功:
# 查看Docker进程是否运行
ps aux | grep dockerd
查看版本信息
docker info | grep -i server
运行一个自定义容器(假设本地已有busybox镜像)
docker run --rm busybox echo "Docker works!"
如果看到类似 Server Version: 20.10.17 的输出,并且容器能打印消息,就说明安装完全正确。
如果你正在处理 Docker手动安装Linux,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。