安装 docker.io(不走外网 Docker 域名)

1️⃣ 安装 docker.io(不走外网 Docker 域名)

plain 复制代码
sudo apt update
sudo apt install -y docker.io

这一步用的是 Ubuntu 官方仓库不会访问 download.docker.com

2️⃣ 启动并设置开机自启

plain 复制代码
sudo systemctl start docker
sudo systemctl enable docker

3️⃣ 验证 Docker 是否安装成功

plain 复制代码
docker --version

只要能看到版本号,说明 Docker 已经 OK

👉 把 Docker 的数据目录迁移到你指定的位置

一、确认你要用的磁盘目录(假设用 /data

如果你已经有 /data,先看一下:

plain 复制代码
df -h
ls /data

如果没有:

plain 复制代码
sudo mkdir -p /data

二、迁移 Docker 数据目录到 /data/docker(重点)

⚠️ 这一步一定要在 还没跑任何容器 前做你现在正好是最佳时机

1️⃣ 同时停止 docker.service 和 docker.socket

plain 复制代码
sudo systemctl stop docker
sudo systemctl stop docker.socket

2️⃣ 确认 Docker 已完全停止(可选验证)

plain 复制代码
ps -ef | grep dockerd | grep -v grep

如果没有任何输出,说明 Docker 已彻底停干净 ✅

2️⃣ 创建新目录

plain 复制代码
sudo mkdir -p /data/docker

3️⃣ 配置 Docker 使用新目录

plain 复制代码
sudo nano /etc/docker/daemon.json

写入以下内容(完整覆盖):

plain 复制代码
{
  "data-root": "/data/docker"
}

保存退出。

4️⃣ 启动 Docker

plain 复制代码
sudo systemctl start docker

5️⃣ 验证是否生效(非常重要)

plain 复制代码
docker info | grep "Docker Root Dir"

你应该看到:

plain 复制代码
Docker Root Dir: /data/docker

看到这行,说明安装位置调整成功

1️⃣ 把当前用户加入 docker 组

plain 复制代码
sudo usermod -aG docker $USER

2️⃣ 退出 SSH 会话,然后重新登录

或者直接执行:

plain 复制代码
newgrp docker

让当前终端 session 立即生效

3️⃣ 再次验证 Docker Root Dir

plain 复制代码
docker info | grep "Docker Root Dir"

正确输出示例:

plain 复制代码
Docker Root Dir: /data/docker

4️⃣ 后续操作就可以不用 sudo

  • 拉镜像
  • 启动 MySQL 容器
  • 管理容器

都可以直接用 docker 命令,不用加 sudo。

一、查看 Docker 服务状态(systemd 管理)

plain 复制代码
sudo systemctl status docker

输出示例:

plain 复制代码
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2025-12-19 10:45:00 CST; 5min ago
  • Active: active (running) → Docker 正在运行 ✅
  • Active: inactive (dead) → Docker 没有运行 ❌

相关命令

  • 启动 Docker:
plain 复制代码
sudo systemctl start docker
  • 停止 Docker:
plain 复制代码
sudo systemctl stop docker
  • 重启 Docker:
plain 复制代码
sudo systemctl restart docker
  • 设置开机自启:
plain 复制代码
sudo systemctl enable docker

二、查看 Docker 容器运行状态

1️⃣ 查看所有运行中的容器

plain 复制代码
docker ps

输出示例:

plain 复制代码
CONTAINER ID   IMAGE       COMMAND                  STATUS          PORTS                    NAMES
a1b2c3d4e5f6   mysql:8.0  "docker-entrypoint.s..."   Up 2 minutes    0.0.0.0:3306->3306/tcp   mysql8
  • STATUS → 容器运行状态(Up / Exited)
  • PORTS → 映射端口
  • NAMES → 容器名字

2️⃣ 查看所有容器(包括停止的)

plain 复制代码
docker ps -a
  • 可以看到已退出或报错的容器
  • 如果 MySQL 容器 STATUS 显示 Exited,说明启动失败,需要检查日志

3️⃣ 查看容器日志

plain 复制代码
docker logs mysql8
  • 查看 MySQL 容器的启动输出
  • 可以快速定位密码错误、数据目录权限问题等

4️⃣ 进入容器内部(MySQL 测试 / 操作)

plain 复制代码
docker exec -it mysql8 bash

然后可以直接使用 MySQL:

plain 复制代码
mysql -uroot -p

三、查看 Docker 使用的资源

plain 复制代码
docker info

重点看:

  • Docker Root Dir → 数据目录
  • Containers → 当前容器数量
  • Images → 镜像数量
  • Server Version → Docker 版本
相关推荐
金刚猿4 小时前
01_虚拟机中间件部署_root 用户安装 docker 容器,配置非root用户权限
docker·中间件·容器
JH_Kong4 小时前
解决 WSL 中 Docker 权限问题:从踩坑到完整修复
docker·容器
忆~遂愿5 小时前
GE 引擎与算子版本控制:确保前向兼容性与图重写策略的稳定性
大数据·开发语言·docker
陈桴浮海6 小时前
Kustomize实战:从0到1实现K8s多环境配置管理与资源部署
云原生·容器·kubernetes
70asunflower8 小时前
Emulation,Simulation,Virtualization,Imitation 的区别?
linux·docker
ShiLiu_mtx9 小时前
k8s - 7
云原生·容器·kubernetes
春日见9 小时前
车辆动力学:前后轮车轴
java·开发语言·驱动开发·docker·计算机外设
xuhe29 小时前
[全流程详细教程]Docker部署ClawBot, 使用GLM4.7, 接入TG Bot实现私人助理. 解决Docker Openclaw Permission Denied问题
linux·docker·ai·github·tldr
7哥♡ۣۖᝰꫛꫀꪝۣℋ9 小时前
Spring-cloud\Eureka
java·spring·微服务·eureka
星火s漫天10 小时前
第一篇: 使用Docker部署flask项目(Flask + DB 容器化)
数据库·docker·flask