深色模式
Docker 安装与基本使用
概述
Docker 相关资料里最容易让人绕进去的,不是命令本身,而是组件名称和安装方式。现在常见的组合通常是这三个:Docker Engine 负责运行容器,docker 命令行负责和 Engine 交互,Compose 则作为 docker compose 子命令提供多容器编排能力。
这一篇只处理起步阶段真正需要的内容:安装、验证、镜像加速、权限配置,以及最常见的远程使用方式。像裸 TCP 暴露 Docker daemon 这种旧方案,知道它存在就够了,不适合继续当主线教程。
先确认装的是什么
在 Linux 上,日常所说的“安装 Docker”,通常指的是安装 Docker Engine 及其配套工具。
最常见的检查命令有这几个:
sh
docker --version
docker compose version
docker info这三个命令分别对应:
docker --version:确认 CLI 已安装docker compose version:确认 Compose v2 插件可用docker info:确认当前 CLI 能连上本机 Docker daemon
如果 docker --version 能执行,但 docker info 报权限错误或连接失败,问题通常不在“有没有安装”,而在 daemon 状态或当前用户权限。
Linux 上的安装主线
Docker 官方提供按发行版安装的文档,也提供便于快速上手的安装脚本。服务器上如果想尽快装起来,常见的快捷方式是:
sh
curl -fsSL https://get.docker.com | sh装完以后,先启动并设置开机自启:
sh
sudo systemctl enable --now docker然后用下面这两个命令确认状态:
sh
systemctl status docker
docker info如果是生产环境或对软件来源更敏感的环境,更稳妥的方式仍然是按 Docker 官方文档使用对应发行版的软件仓库安装。快速安装脚本适合起步和临时机器,长期维护环境最好走标准包管理流程。
安装后先跑一次验证容器
最简单的验证方式不是看版本号,而是直接跑一个容器:
sh
docker run --rm hello-world这个命令会做几件事:
- 本地没有
hello-world镜像时,先拉取镜像 - 创建并启动一个临时容器
- 输出验证信息后自动删除容器
如果这里就失败,后面再去写 Dockerfile 或 Compose,只会把问题拖到更后面才暴露。
国内环境下的镜像加速
镜像拉取慢是很常见的第一道门槛。Docker Engine 的镜像加速,一般通过 /etc/docker/daemon.json 配置。
例如:
json
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}修改后重启 Docker:
sh
sudo systemctl restart docker再用下面这个命令确认配置是否生效:
sh
docker info在输出里查找 Registry Mirrors。如果文件写了,但 docker info 里没有对应配置,优先检查:
- JSON 是否写错
- Docker 是否已经重启
- 当前环境是不是根本没有读取这份配置文件
为什么很多命令需要 root
Docker daemon 默认由 root 管理,CLI 通过 Unix socket 和它通信。这个 socket 通常是 /var/run/docker.sock,默认并不是所有用户都能访问。
所以刚装完时,很多人执行 docker ps 会碰到权限错误。这不奇怪,说明当前用户还没拿到访问 Docker daemon 的权限。
最常见的处理方式,是把当前用户加入 docker 组:
sh
sudo usermod -aG docker $USER然后重新登录 shell,或者重新建立 SSH 会话,再执行:
sh
groups
docker ps这里要记住一个边界:加入 docker 组,本质上等于给了当前用户很高的宿主机控制能力。它不是普通的“多一个命令权限”,而是接近 root 级别的操作入口。所以服务器上不该随手把所有用户都加进去。
服务器上更稳妥的日常用法
如果机器是多人共用,或者不想长期直接用 root 管理 Docker,比较常见的做法是:
- 创建一个专门的普通用户
- 把它加入
docker组 - 通过 SSH 公钥登录这个用户
这样做的重点,不是“更安全得无懈可击”,而是至少把 root 直连和密码登录这两个明显不必要的风险先拿掉。
远程使用 Docker,优先走 SSH
现在更推荐的远程使用方式,是直接通过 SSH 连接远端 Docker daemon,而不是把 daemon 的 TCP 端口暴露出来。
例如:
sh
docker -H ssh://user@server ps或者设置环境变量:
sh
export DOCKER_HOST=ssh://user@server
docker ps这种方式的好处很直接:
- 复用 SSH 的认证和加密能力
- 不需要单独暴露 Docker daemon 的 TCP 端口
- 运维上更容易和现有服务器登录体系统一
如果一篇教程还在把 2375 暴露到公网当常规方案,那篇教程最好顺手放下。
Compose 也要一起确认
现在应该优先使用 docker compose,而不是旧式 docker-compose。检查方式很简单:
sh
docker compose version如果这个命令可用,说明 Compose v2 插件已经接好了。后面的 Compose 文章和示例,都应该按这个写法来理解。
一组够用的起步命令
sh
docker --version
docker compose version
docker info
docker run --rm hello-world
docker ps
docker images这组命令的价值,不在于“背下来”,而在于它们能把安装、daemon 连接、镜像拉取、容器运行这几件基础事实一次确认完。
