Docker 从安装到部署:容器基础、五个常用命令与 compose 编排

一、Docker 到底是什么:一句话和一张表

一句话:Docker 把”软件 + 它需要的运行环境”打包成一个集装箱,换台机器照样一键跑起来。它解决的是那句让所有程序员头疼的话——”在我电脑上明明是好的啊”。

对比项 虚拟机 Docker 容器
隔离级别 整套操作系统 进程级隔离,共享宿主内核
启动速度 几十秒到几分钟 通常 1 秒内
体积 几个 GB 起 几十 MB 到几百 MB
资源占用 每台都要分内存 按需占用,密度高得多
典型用途 跑不同系统的完整环境 跑服务、统一开发/生产环境

二、安装:按你的系统对号入座

系统 装什么 说明
Windows 10/11 Docker Desktop 需要开启 WSL2,安装时会提示
macOS Docker Desktop Apple 芯片选 Apple Silicon 版
Ubuntu / Debian docker-ce 用官方仓库装,别用系统自带的 docker.io
CentOS / 其他 docker-ce 老系统内核偏旧,建议用较新的发行版
不想装本地 Play with Docker 浏览器里的临时环境,练手够用

Linux 上用官方仓库安装的标准流程:

# 1. 装依赖并添加官方 GPG 密钥与仓库(以 Ubuntu 为例,具体命令以官方文档为准)
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# 2. 安装
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 3. 验证
docker --version
sudo docker run hello-world

看到 Hello from Docker! 就说明装好了。官方文档里每个发行版的命令都不一样,照着你自己系统的页面抄,不要照搬别人的博客。

Docker 官方安装文档页面
Docker 官方安装文档,按发行版给出命令

三、Linux 上必做的一步:免 sudo

默认每次敲 docker 都要加 sudo,很烦。把当前用户加进 docker 组:

sudo usermod -aG docker $USER
# 然后退出 SSH 重新登录(或 newgrp docker)使其生效
docker ps   # 不再需要 sudo

安全提醒:docker 组等价于 root 权限(容器可以挂载宿主目录)。只把你信任的用户加进去,不要在多人共用的服务器上随便开。

四、五个命令覆盖 80% 的日常

# 拉镜像
docker pull nginx

# 前台跑一个容器,把宿主 8080 映射到容器 80
docker run --name my-nginx -p 8080:80 nginx

# 后台跑(加 -d),并让它开机自启
docker run -d --restart=always --name my-nginx -p 8080:80 nginx

# 看正在运行的容器
docker ps

# 看日志(排错第一手段)
docker logs -f my-nginx

# 进容器里看看(调试用)
docker exec -it my-nginx bash

跑完浏览器访问 http://localhost:8080,看到 Nginx 欢迎页就成功了。

Docker Compose 官方文档页面
Docker Compose 官方文档,编排配置参考

五、进阶一步:用 compose 管多个服务

真实项目往往不止一个容器(应用 + 数据库 + 缓存)。一个个 docker run 太痛苦,写一个 docker-compose.yml 一次拉起:

services:
  web:
    image: nginx
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
    restart: always
  redis:
    image: redis:7-alpine
    restart: always
docker compose up -d      # 启动全部
docker compose logs -f    # 看日志
docker compose down       # 停止并删除容器
docker compose pull       # 更新镜像

能写 compose 文件,才算真正开始用 Docker。手敲 run 命令只适合临时试验。

Docker 入门教程站首页
Docker 入门教程站,练手项目示例

六、必须理解的三件事

  1. 容器里的数据默认会丢。容器一删,里面的文件就没了。要持久化必须用 -v 挂载卷,把数据放到宿主目录。
  2. 端口要显式映射。容器内的端口外部访问不到,必须 -p 宿主端口:容器端口。
  3. 镜像和容器是两回事。镜像是模板(只读),容器是模板跑起来的实例(可写层)。删容器不影响镜像。

七、七个高频问题

现象 原因 处理
拉镜像卡住 / 超时 默认镜像仓库在国内访问慢 配置加速器,或改用国内镜像源
端口被占用 address already in use 宿主端口已被别的程序占用 换一个宿主端口,或停掉占用程序
容器起来又立刻退出 主进程执行完就结束了 docker logs 看报错;注意容器需要前台进程
改了配置不生效 还在用旧容器 重建容器:docker compose up -d --force-recreate
磁盘越用越满 无用镜像、停止的容器、构建缓存堆积 docker system prune -a(会删未使用镜像,确认后再执行)
Windows 上启动失败 WSL2 未安装或未开启虚拟化 按提示装 WSL2,BIOS 里开虚拟化
容器里访问不到宿主网络 网络模式理解有误 Windows/macOS 上用 host.docker.internal 访问宿主
Docker 引擎安装文档页面
Docker 引擎安装文档

八、一页速查清单

  • ☐ 按系统装:桌面用 Docker Desktop,服务器用 docker-ce 官方仓库
  • ☐ Linux 上把用户加进 docker 组,告别 sudo
  • ☐ 记住五个命令:pull / run / ps / logs / exec
  • ☐ 数据一定要挂载卷,否则删容器就丢数据
  • ☐ 端口必须显式映射
  • ☐ 多服务用 docker compose,不要堆 run 命令
  • ☐ 定期 docker system prune 清理磁盘

Docker 的学习曲线前 30 分钟最陡,过了那一段就是”回不去”的工具。先用它跑起来一个 Nginx,再跑一个带数据库的 compose,基本就通了。

本文界面图取自 Docker 官方文档与 Docker 官方教程站,仅用于说明安装与编排配置位置。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容