推荐一键脚本安装:curl -fssl https://get.docker.com | sh,再执行sudo usermod -ag docker $user并重启终端,最后运行docker run hello-world验证;ubuntu/debian用apt、centos/rhel等用yum/dnf安装,需匹配系统类型,且必须配置镜像加速器避免拉取卡顿。

直接装 Docker 并拉镜像运行,不绕弯、不卡权限、不默认用 root,三步到位。
确认系统类型再选安装命令
Ubuntu/Debian 用 apt,CentOS/RHEL/AlmaLinux/Rocky 等用 yum 或 dnf,别混着来。比如在 CentOS 7 上执行 apt update 肯定报错;反过来在 Ubuntu 上用 yum install docker-ce 也找不到包。
- Ubuntu 22.04+:先跑
sudo apt update && sudo apt install -y ca-certificates curl gnupg lsb-release,再加密钥和源,最后sudo apt install -y docker-ce docker-ce-cli containerd.io - CentOS 7/8 或 Rocky 9:先
sudo yum install -y yum-utils,再配国内源(如腾讯云:sudo yum-config-manager --add-repo https://mirrors.cloud.tencent.com/docker-ce/linux/centos/docker-ce.repo),最后sudo yum install -y docker-ce docker-ce-cli containerd.io - 如果只是临时验证,用一键脚本最省事:
curl -fsSL https://get.docker.com | sh,但别用在生产机上
非 root 用户必须加 docker 组
装完不加组,普通用户执行 docker ps 会报错:Permission denied while trying to connect to the Docker daemon socket。这不是权限没设对,是根本没连上守护进程。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 执行
sudo usermod -aG docker $USER - 然后彻底退出终端(不是只
exit,要关掉整个 SSH 会话或 GUI 终端),重新登录 - 验证:运行
docker run hello-world,看到 “Hello from Docker!” 就说明组生效了 - 注意:Fedora 默认没有
docker组,得先sudo groupadd docker再加用户
拉镜像别只用 docker pull 就完事
docker pull 只下载不运行,容易误以为“拉完了就能用”,其实还要看镜像有没有暴露端口、是否需要挂载目录、要不要传环境变量。
- 查镜像是否存在且可信:先
docker search nginx,看官方标[OK]的仓库名是nginx,不是webserver或my-nginx - 拉指定版本更稳:
docker pull nginx:1.25-alpine,别用latest,尤其上线前 - 运行时记得映射端口:
docker run -d -p 8080:80 --name my-nginx nginx:1.25-alpine,漏掉-p就访问不了 - 如果容器秒退,用
docker logs my-nginx看输出,常见原因是启动命令被覆盖或配置文件缺失
镜像体积大、拉取慢?优先配镜像加速器
国内直连 docker.io 常常超时或限速,docker pull 卡在 “Waiting” 不是网络断了,是 registry 响应慢。
- 编辑或创建
/etc/docker/daemon.json,写入:{ "registry-mirrors": ["https://mirrors.aliyun.com/docker-ce/"] } - 重启服务:
sudo systemctl restart docker - 验证是否生效:
docker info | grep "Registry Mirrors" -A 2,有输出就对了 - 阿里云、腾讯云、中科大源都可用,但别堆一堆——多个镜像源不会“自动选最快的”,Docker 是顺序尝试,第一个失败才试下一个
真正麻烦的从来不是“怎么拉镜像”,而是拉下来之后发现容器起不来、端口不通、配置不生效——这些基本都卡在权限、网络模式、卷挂载路径或镜像自身启动逻辑上,动手前先看一眼 docker inspect 镜像名 里的 ExposedPorts 和 Cmd 字段。










