Skip to content

Docker 安装与配置指南 ​

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 或 Windows 机器上。

容器化

Docker 安装 ​

Linux (官方一键安装脚本) ​

适用于 Ubuntu、Debian、CentOS 等主流发行版。官方脚本会自动检测系统并安装最新稳定版。

bash
curl -fsSL https://get.docker.com | bash

安装完成后,启动 Docker 并设置开机自启:

bash
sudo systemctl start docker
sudo systemctl enable docker

Windows ​

  1. 确保系统为 Windows 10/11 专业版/企业版/教育版(支持 Hyper-V),或安装了 WSL 2。
  2. 前往 Docker Desktop for Windows 下载安装包。
  3. 运行安装程序,按照提示完成安装。
  4. 安装完成后,重启电脑。

macOS ​

  1. 前往 Docker Desktop for Mac 下载 .dmg 文件。
  2. 根据芯片类型选择 Mac with Intel chip 或 Mac with Apple chip。
  3. 拖拽 Docker 图标到 Applications 文件夹。

常用命令速查 ​

命令说明
镜像管理
docker pull <image>拉取镜像
docker images列出本地镜像
docker rmi <id>删除镜像
容器操作
docker run -d -p 80:80 <image>后台运行并映射端口
docker ps查看运行中的容器
docker ps -a查看所有容器(含停止的)
docker stop <id>停止容器
docker rm <id>删除容器
docker logs -f <id>查看容器实时日志
docker exec -it <id> sh进入容器终端

Docker Compose (V2) ​

新版 Docker Desktop 和 Linux 包已内置 docker compose 命令(注意中间有空格,不再是 docker-compose)。

常用命令:

bash
# 后台启动所有服务
docker compose up -d

# 停止并删除容器
docker compose down

# 查看服务日志
docker compose logs -f

# 更新镜像并重启
docker compose pull && docker compose up -d

⚠️ 常见问题 (FAQ) ​

1. 权限问题 (Linux) ​

现象:执行 docker 命令时提示 permission denied。 解决:将当前用户加入 docker 用户组(无需 sudo 也能运行)。

bash
sudo usermod -aG docker $USER
# 此时需注销并重新登录,或执行以下命令立即生效:
newgrp docker

2. 镜像拉取慢 / 超时 (配置国内源) ​

由于网络原因,国内直接连接 Docker Hub 经常失败。建议配置镜像加速器。

编辑或创建 /etc/docker/daemon.json:

json
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://huecker.io",
    "https://dockerhub.timeweb.cloud",
    "https://noohub.ru"
  ]
}

注:镜像源可能随时间失效,请根据实际情况寻找可用源。

修改后重启服务:

bash
sudo systemctl daemon-reload
sudo systemctl restart docker

3. 容器内部无法联网 ​

现象:容器内无法 ping 通外网或解析域名。 解决:通常是宿主机防火墙或 DNS 问题。

  • 检查防火墙是否拦截了转发。
  • 在 docker run 时添加 --dns 8.8.8.8 尝试。
  • 重建 docker0 网桥:sudo service docker stop -> sudo ip link set dev docker0 down -> sudo brctl delbr docker0 -> sudo service docker start。

4. 磁盘空间被占满 ​

Docker 使用久了会产生大量未使用的镜像、容器和卷。

一键清理(慎用):

bash
# 清理所有停止的容器、未使用的网络和挂起的镜像
docker system prune

# 深度清理(包含所有未使用的镜像和卷)
docker system prune -a --volumes