# ⭐\[教程\]在iStoreOS/OpenWRT上使用Docker构建一个Debian虚拟环境

**URL:** <https://idcflare.com/t/topic/20524>\
**Category:** 教程\
**Tags:** 原创, 服务器\
**Created:** [2025 年10 月 3 日 04:21 UTC](https://idcflare.com/t/topic/20524 "2025-10-03T04:21:19Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

作者： ![wiziscool](https://idcflare.com/user_avatar/idcflare.com/wiziscool/32/9127_2.png) [@wiziscool](https://idcflare.com/u/wiziscool)\
发布日期： [2025 年10 月 3 日 04:21 UTC](https://idcflare.com/t/topic/20524/1 "2025-10-03T04:21:19Z")

</div>

![在iStoreOSOpenWRT上 使用Docker 构建一个Debian虚拟环境](https://idcflare.com/uploads/default/original/2X/4/4b372f1b892e09bdf198635ffe31537cb7cc3e06.png)

# 在iStoreOS/OpenWRT上使用Docker构建一个Debian虚拟环境

* * *

# 前言

> 最近在捣鼓软路由，不免少不了进行测试  
> 测试过程中经常要用到一些ubuntu/debian上才能用到的命令/脚本  
> 有的命令就算在opkg可以安装，但是用起来就是没有apt来的顺手和方便
> 
> 于是就在想能不能开个虚拟机，但是看着我的4H4G Arm软路由想想还是算了  
> 想到毕竟openwrt也是基于linux，能不能用docker跑一个"debian环境"
> 
> 试了一下发现还真行，跑通之后整理成文档方便后面的佬友

## 一、环境准备

首先创建宿主机上的持久化目录：

```bash
mkdir -p /mnt/nvme0n1-1/docker-data/debian/etc
mkdir -p /mnt/nvme0n1-1/docker-data/debian/root
mkdir -p /mnt/nvme0n1-1/docker-data/debian/var

```

> [!NOTE]  
> 这里请根据你自己的目录创建，我这里的/mnt/nvme0n1-1/是我挂载在软路由上的一块nvme固态  
> 请根据你自己的情况创建路径

这三个目录将分别挂载为容器的：

- `/etc` → 系统配置文件（用户、apt 源）
- `/var` → apt 包缓存、数据库、日志
- `/root` → 用户环境与配置文件

* * *

## 二、提取系统初始文件

为了让debian容器的数据持久化我们在第一步创建了本地的目录  
但是 Docker 的挂载是 **覆盖** ，而不是合并，直接运行容器会直接读取我们刚刚创建的空目录。  
所以要让容器正常运行，我们首先要复制原生 Debian 系统目录结构到本地。

1. 启动临时容器：

2. 在宿主机执行复制操作：

3. 验证内容是否复制成功：

✅ 若能看到文件，则复制成功。

1. 删除临时容器：

> [!NOTE]  
> 注意这里的路径需要和第一步创建的一致

* * *

## 三、创建 docker-compose 配置文件

路径：`/mnt/nvme0n1-1/docker-data/debian/docker-compose.yml`

```yaml
services:
  debian:
    container_name: debian
    image: debian:12
    hostname: debian-box
    command: bash -c "tail -f /dev/null"
    restart: unless-stopped
    privileged: true
    network_mode: host
    dns:
      - 8.8.8.8
      - 1.1.1.1 # 根据你的网络环境设置DNS
      # - 223.5.5.5
    volumes:
      - /mnt/nvme0n1-1/docker-data/debian/etc:/etc
      - /mnt/nvme0n1-1/docker-data/debian/var:/var
      - /mnt/nvme0n1-1/docker-data/debian/root:/root

```

启动容器：

```bash
cd /mnt/nvme0n1-1/docker-data/debian
docker compose up -d

```

* * *

## 四、进入容器并更新系统

```bash
docker exec -it debian bash
apt update && apt upgrade -y

```

* * *

## 五、设置分辨提示符

为了避免在SSH中混淆宿主机iStoreOS和容器Debian，可以给设置一个提示符

```bash
echo 'export PS1="\[\e[31m\][DEBIAN]\[\e[0m\] \u@\h:\w\\$ "' >> ~/.bashrc
source ~/.bashrc

```

效果示例：

 ![PixPin_2025-10-03_11-51-13](https://idcflare.com/uploads/default/original/2X/0/03a513837f1cd4c3e2e410a7b9b02c800106e55d.png)

这样我们就可以直观的分辨当前执行在debian容器中还是宿主机，避免误操作

* * *

## 六、创建快捷命令

为了更加快速方便的进入到debian容器中，不用每次都docker exec  
我们可以创建一个快捷命令

1. 在 **宿主机** 中创建脚本文件

2. 使用vim或任何你熟悉的编辑器编辑该文件

3. 赋予执行权限

这样每当我们想进入debian容器内，只需要在宿主机上输入`debian`即可

 ![PixPin_2025-10-03_12-08-14](https://idcflare.com/uploads/default/original/2X/0/08b76f80fdbc127b3b9e80fd89302737257fb341.png)

* * *

## ✅ 最终效果

这样，你就得到了一个基于Docker的Debian"虚拟机"容器，可以更方便的运行一些脚本等  
基于这种玩法，你甚至还可以装一个VNC和桌面（如果你的配置足够）  
也可以将宿主机的某些目录映射过来，在容器中跑一些脚本

关于配置和占用方面， **基础 Debian 容器** 启动后内存只占用大约 **20–40 MB**  
启动后仅运行 `tail -f /dev/null`，CPU 几乎为 0%  
因为使用 `network_mode: host`，没有 NAT 和虚拟网桥损耗；  
I/O 走宿主机文件系统直通，读写速度和宿主一致；  
几乎等同于 **裸机运行 Debian 命令行环境。**

---

<div class="post-metadata">

作者： ![yqyan](https://idcflare.com/user_avatar/idcflare.com/yqyan/32/3375_2.png) [@yqyan](https://idcflare.com/u/yqyan)\
发布日期： [2025 年10 月 3 日 04:43 UTC](https://idcflare.com/t/topic/20524/2 "2025-10-03T04:43:43Z")

</div>

感谢分享教程 🙏

---

<div class="post-metadata">

作者： ![soo](https://idcflare.com/user_avatar/idcflare.com/soo/32/2522_2.png) [@soo](https://idcflare.com/u/soo)\
发布日期： [2025 年10 月 3 日 05:09 UTC](https://idcflare.com/t/topic/20524/3 "2025-10-03T05:09:39Z")

</div>

学习了，感谢分享

---

<div class="post-metadata">

作者： ![Devil](https://idcflare.com/user_avatar/idcflare.com/devil/32/1273_2.png) [@Devil](https://idcflare.com/u/Devil)\
发布日期： [2025 年10 月 3 日 05:12 UTC](https://idcflare.com/t/topic/20524/4 "2025-10-03T05:12:01Z")

</div>

感谢大佬分享教程~

---

<div class="post-metadata">

作者： ![Luis](https://idcflare.com/user_avatar/idcflare.com/luis/32/247_2.png) [@Luis](https://idcflare.com/u/Luis)\
发布日期： [2025 年10 月 3 日 05:26 UTC](https://idcflare.com/t/topic/20524/5 "2025-10-03T05:26:40Z")

</div>

不错不错，很好的教程！ 感谢分享！ 😆

---

<div class="post-metadata">

作者： ![Zed](https://idcflare.com/user_avatar/idcflare.com/zed/32/5283_2.png) [@Zed](https://idcflare.com/u/Zed)\
发布日期： [2025 年10 月 3 日 06:29 UTC](https://idcflare.com/t/topic/20524/6 "2025-10-03T06:29:05Z")

</div>

太高级了，看不懂

---

<div class="post-metadata">

作者： ![blurb0875](https://idcflare.com/user_avatar/idcflare.com/blurb0875/32/10248_2.png) [@blurb0875](https://idcflare.com/u/blurb0875)\
发布日期： [2025 年10 月 3 日 06:42 UTC](https://idcflare.com/t/topic/20524/7 "2025-10-03T06:42:57Z")

</div>

感谢无私分享

---

<div class="post-metadata">

作者： ![lil](https://idcflare.com/user_avatar/idcflare.com/lil/32/12497_2.png) [@lil](https://idcflare.com/u/lil)\
发布日期： [2025 年10 月 3 日 12:47 UTC](https://idcflare.com/t/topic/20524/8 "2025-10-03T12:47:59Z")

</div>

感谢教程

---

<div class="post-metadata">

作者： ![handsome](https://idcflare.com/user_avatar/idcflare.com/handsome/32/349_2.png) [@handsome](https://idcflare.com/u/handsome)\
发布日期： [2025 年10 月 3 日 15:21 UTC](https://idcflare.com/t/topic/20524/9 "2025-10-03T15:21:05Z")

</div>

太强了，感谢大佬

---

<div class="post-metadata">

作者： ![Prince](https://idcflare.com/letter_avatar/prince/32/6_22734026db12803ebb3e059622ac3534.png) [@Prince](https://idcflare.com/u/Prince)\
发布日期： [2025 年10 月 4 日 00:28 UTC](https://idcflare.com/t/topic/20524/10 "2025-10-04T00:28:43Z")

</div>

感谢分享 感觉现在套娃的意义已经不大了

---

<div class="post-metadata">

作者： ![QICQ](https://idcflare.com/user_avatar/idcflare.com/qicq/32/3559_2.png) [@QICQ](https://idcflare.com/u/QICQ)\
发布日期： [2025 年10 月 4 日 00:52 UTC](https://idcflare.com/t/topic/20524/11 "2025-10-04T00:52:55Z")

</div>

感谢 大佬

---

<div class="post-metadata">

作者： ![ketto](https://idcflare.com/user_avatar/idcflare.com/ketto/32/11517_2.png) [@ketto](https://idcflare.com/u/ketto)\
发布日期： [2025 年10 月 4 日 01:24 UTC](https://idcflare.com/t/topic/20524/12 "2025-10-04T01:24:11Z")

</div>

感谢大佬的分享

---

<div class="post-metadata">

作者： ![WTO](https://idcflare.com/user_avatar/idcflare.com/wto/32/3678_2.png) [@WTO](https://idcflare.com/u/WTO)\
发布日期： [2025 年10 月 4 日 01:24 UTC](https://idcflare.com/t/topic/20524/13 "2025-10-04T01:24:57Z")

</div>

学习了，感谢大佬的精彩分享

---

<div class="post-metadata">

作者： ![Object](https://idcflare.com/user_avatar/idcflare.com/object/32/6553_2.png) [@Object](https://idcflare.com/u/Object)\
发布日期： [2025 年10 月 6 日 10:45 UTC](https://idcflare.com/t/topic/20524/14 "2025-10-06T10:45:19Z")

</div>

感谢大佬的教程

---

<div class="post-metadata">

作者： ![lijie](https://idcflare.com/user_avatar/idcflare.com/lijie/32/371_2.png) [@lijie](https://idcflare.com/u/lijie)\
发布日期： [2025 年10 月 6 日 16:01 UTC](https://idcflare.com/t/topic/20524/15 "2025-10-06T16:01:34Z")

</div>

容器套容器套容器？

---

<div class="post-metadata">

作者： ![Mxyjs996](https://idcflare.com/letter_avatar/mxyjs996/32/6_22734026db12803ebb3e059622ac3534.png) [@Mxyjs996](https://idcflare.com/u/Mxyjs996)\
发布日期： [2025 年10 月 7 日 00:51 UTC](https://idcflare.com/t/topic/20524/16 "2025-10-07T00:51:19Z")

</div>

感谢分享

---

<div class="post-metadata">

作者： ![Gun](https://idcflare.com/letter_avatar/gun/32/6_22734026db12803ebb3e059622ac3534.png) [@Gun](https://idcflare.com/u/Gun)\
发布日期： [2025 年10 月 7 日 03:36 UTC](https://idcflare.com/t/topic/20524/17 "2025-10-07T03:36:29Z")

</div>

搞起搞起
