页面加载中
博客快捷键
按住 Shift 键查看可用快捷键
ShiftK
开启/关闭快捷键功能
ShiftA
打开/关闭中控台
ShiftD
深色/浅色显示模式
ShiftS
站内搜索
ShiftR
随机访问
ShiftH
返回首页
ShiftL
友链页面
ShiftP
关于本站
ShiftI
原版/本站右键菜单
松开 Shift 键或点击外部区域关闭
互动
最近评论
暂无评论
标签
寻找感兴趣的领域
暂无标签
    0
    文章
    0
    标签
    8
    分类
    10
    评论
    128
    功能
    深色模式
    标签
    JavaScript12TypeScript8React15Next.js6Vue10Node.js7CSS5前端20
    互动
    最近评论
    暂无评论
    标签
    寻找感兴趣的领域
    暂无标签
      0
      文章
      0
      标签
      8
      分类
      10
      评论
      128
      功能
      深色模式
      标签
      JavaScript12TypeScript8React15Next.js6Vue10Node.js7CSS5前端20
      随便逛逛
      博客分类
      文章标签
      复制地址
      深色模式
      AnHeYuAnHeYu
      Search⌘K
      博客
        暂无其他文档

        iStoreOS / OpenWRT 使用 Docker 构建 Debian 虚拟环境完整教程

        April 9, 20266 分钟 阅读5 次阅读

        前言

        最近在捣鼓软路由,不免少不了进行测试
        测试过程中经常要用到一些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. 启动临时容器:
        BASH
        docker run -it --name debian-temp debian:12 bash
        
        1. 在宿主机执行复制操作:
        BASH
        docker cp debian-temp:/etc/. /mnt/nvme0n1-1/docker-data/debian/etc
        docker cp debian-temp:/var/. /mnt/nvme0n1-1/docker-data/debian/var
        docker cp debian-temp:/root/. /mnt/nvme0n1-1/docker-data/debian/root
        
        1. 验证内容是否复制成功:
        BASH
        ls /mnt/nvme0n1-1/docker-data/debian/etc/apt
        ls /mnt/nvme0n1-1/docker-data/debian/var/lib
        

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

        1. 删除临时容器:
        BASH
        docker rm -f debian-temp
        

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


        三、创建 docker-compose 配置文件

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

        BASH
        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
        

        效果示例:

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


        六、创建快捷命令

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

        1. 在宿主机中创建脚本文件
        BASH
        touch /usr/bin/debian
        
        1. 使用vim或任何你熟悉的编辑器编辑该文件
        BASH
        #!/bin/sh
        if ! docker ps --format '{{.Names}}' | grep -q '^debian$'; then
          echo "Debian 容器未运行,正在启动..."
          cd /mnt/nvme0n1-1/docker-data/debian || exit 1
          docker compose up -d
          sleep 2
        fi
        docker exec -it debian bash
        

        如果不会使用编辑器也可以使用下面的一键命令

        BASH
        cat <<'EOF' > /usr/bin/debian
        #!/bin/sh
        if ! docker ps --format '{{.Names}}' | grep -q '^debian$'; then
        echo "Debian 容器未运行,正在启动..."
        cd /mnt/nvme0n1-1/docker-data/debian || exit 1
        docker compose up -d
        sleep 2
        fi
        docker exec -it debian bash
        EOF
        
        • 注意修改路径为自己的路径
        1. 赋予执行权限
        BASH
        chmod +x /usr/bin/debian
        

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

        ✅ 最终效果

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

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

        最后更新于 April 9, 2026
        On this page
        暂无目录