admin 管理员组

文章数量: 1184232

1. 为什么选择Debian+Docker来搭建你的环境?

如果你手头有一台闲置的电脑,或者租了一台云服务器,想把它变成一个能跑网站、能管理文件、还能轻松管理各种服务的“全能小主机”,那么Debian系统加上Docker容器技术,绝对是你的黄金搭档。我自己折腾过不少系统,从Windows Server到各种Linux发行版,最后发现对于个人开发者或者小团队来说, Debian的稳定 加上 Docker的便捷 ,这个组合用起来最省心。

先说说Debian,它就像一个性格沉稳、做事靠谱的老管家。系统资源占用少,软件包管理(apt)清晰明了,长期维护支持也到位,特别适合7x24小时不间断运行。而Docker呢,你可以把它理解成一个“魔法集装箱”。以前我们要在服务器上装一个软件,比如宝塔面板,得经历下载、解压、安装依赖、配置环境变量等一系列繁琐操作,中间任何一个环节出错都可能前功尽弃。现在有了Docker,你只需要一条命令,它就能把整个软件连同它需要的运行环境,打包成一个“集装箱”(镜像),直接拉过来运行。软件之间互不干扰,想删除也干干净净,不会在系统里留下乱七八糟的垃圾文件。

今天我们要做的,就是在Debian这个“地基”上,用Docker这个“魔法”,快速搭建三个超级实用的“集装箱”: Portainer (一个图形化的Docker管理面板,让你告别命令行)、 宝塔面板 (国人最爱的服务器运维面板,建站、管理数据库一键搞定)、 可道云 (一个私有网盘,可以当成你自己的“百度云”来用)。整个过程,我会把我自己踩过的坑、优化的技巧都揉进去,保证你跟着做,一次就能成功。

2. 准备工作:给你的Debian系统“热身”

在开始施展“魔法”之前,我们得确保“法师”(你的Debian系统)状态良好。这一步看似基础,但非常重要,能避免后面很多莫名其妙的错误。

2.1 系统更新与基础工具安装

首先,用SSH工具(比如PuTTY、Xshell或者Mac的终端)连接到你的Debian服务器。登录后第一件事,就是更新系统的软件包列表并升级已有的软件。这就像去超市前先看看最新的商品目录,确保能买到最新鲜的货。

sudo apt update && sudo apt upgrade -y

这条命令里的 sudo 是获取管理员权限, apt update 是更新软件源列表, apt upgrade -y 则是升级所有可升级的软件包, -y 参数表示对所有的确认提示都自动回答“是”,让过程更自动化。

接下来,安装一些我们后续肯定会用到的基础工具。最典型的就是 Curl ,它是一个命令行工具,用于从网络上下载数据。我们待会儿安装Docker的脚本就需要用它来下载。

sudo apt install -y curl wget vim

这里我多装了 wget (另一个下载工具)和 vim (一个强大的文本编辑器)。 vim 可能对新手有点门槛,但学会基本操作(按 i 进入编辑模式,编辑完后按 ESC 再输入 :wq 保存退出)后,在服务器上编辑配置文件会非常方便。如果你实在不习惯,也可以用 nano 编辑器,命令是 sudo apt install -y nano

2.2 检查系统与网络环境

在继续之前,最好快速检查一下系统版本和网络连通性。运行 cat /etc/os-release 可以查看详细的系统信息,确认你确实在Debian上。然后可以 ping -c 4 baidu.com 测试一下网络是否通畅,因为接下来我们需要从互联网拉取Docker镜像,网络不好会卡住。

还有一个很多人会忽略的点: 系统时区 。如果服务器时区不对,日志时间全是乱的,排查问题会很头疼。设置时区为上海(中国标准时间)的命令是:

sudo timedatectl set-timezone Asia/Shanghai

设置完后用 date 命令检查一下,显示的时间应该就是你的本地时间了。

3. 一键搞定Docker安装与基础配置

好了,热身完毕,现在开始安装我们的核心工具——Docker。官方提供了一键安装脚本,非常方便,但我们不能无脑运行,得加点“调料”让它更适合国内环境。

3.1 使用国内镜像源加速安装

直接运行官方的 curl -fsSL | bash 命令理论上是可以的,但在国内,从国外源下载速度可能会很慢,甚至失败。所以我们要使用国内镜像源来加速。这里我推荐使用阿里云的镜像。

在终端中输入以下命令:

curl -fsSL  | bash -s docker --mirror Aliyun

这条命令的意思是:使用Curl工具从 get.docker.com 获取安装脚本,然后通过管道 | 传递给 bash 执行。 -s docker --mirror Aliyun 这个参数就是告诉安装脚本,使用阿里云的镜像源来下载Docker安装包。

脚本运行起来后,它会自动执行一系列操作:添加Docker的官方GPG密钥、设置稳定的软件仓库、安装Docker引擎及其相关组件。整个过程完全自动化,你只需要泡杯茶等待几分钟。安装成功后,你会看到提示信息。

3.2 验证安装与配置镜像加速

安装完,我们先不急着启动,来验证一下是否安装成功,并做两个重要配置。

首先,将当前用户加入 docker 用户组。这样以后运行Docker命令就不需要每次都加 sudo 了,更安全也更方便。

sudo usermod -aG docker $USER

注意 :执行这个命令后,你需要 完全退出当前的SSH会话,然后重新登录 ,这个用户组变更才会生效。你可以直接关闭终端再重新连接。

重新登录后,运行一个最简单的命令来测试:

docker --version

如果能看到类似 Docker version 24.0.7, build afdd53b 的版本信息,恭喜你,Docker引擎安装成功了。

接下来是一个 超级重要的优化步骤 :配置Docker镜像加速器。Docker默认是从Docker Hub拉取镜像,这在国外很快,但在国内可能慢如蜗牛。我们需要给它配置一个国内的镜像地址,比如阿里云、腾讯云、网易云等都提供免费的加速服务。这里以阿里云为例(你需要有一个阿里云账号)。

  1. 访问阿里云官网,登录后进入“容器镜像服务”控制台。
  2. 在左侧菜单找到“镜像加速器”,你会看到一个专属的加速器地址,格式像
  3. 在你的Debian服务器上,创建或修改Docker的配置文件:
    sudo vim /etc/docker/daemon.json
    
  4. 将以下内容写入这个文件(请替换 为你自己阿里云控制台提供的地址):
    {
      "registry-mirrors": [""]
    }
    
    如果你想配置多个加速器,可以这样写: ["地址1", "地址2"]
  5. 保存退出后,重启Docker服务使配置生效:
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

配置完成后,你可以运行 docker info ,在输出信息的末尾,如果看到 Registry Mirrors 下面有你配置的地址,就说明加速器生效了。以后你拉取任何镜像,速度都会飞起。

4. 部署Portainer:给Docker装上“可视化方向盘”

Docker本身是命令行操作的,虽然很酷,但记命令、看日志总归不够直观。 Portainer 就是一个轻量级的Docker图形化管理界面,有了它,你几乎可以不用再敲复杂的Docker命令,通过点点鼠标就能管理容器、镜像、网络和卷。

4.1 一条命令拉起Portainer容器

部署Portainer简单到令人发指,只需要一条 docker run 命令。这条命令我拆解开给你讲讲:

docker run -d \
  --restart=always \
  --name portainer \
  -p 9000:9000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest
  • docker run -d :运行一个容器, -d 表示在后台运行(守护进程模式)。
  • --restart=always :这是我最喜欢的一个参数。它表示无论容器因何原因退出(除非你手动停止),Docker都会自动重新启动它。对于像Portainer、宝塔这类需要持续在线的服务,加上这个参数能省去很多运维麻烦。
  • --name portainer :给这个容器起个名字,方便后续管理,比如 docker stop portainer
  • -p 9000:9000 :端口映射。把容器内部的9000端口映射到宿主机的9000端口。这样你访问服务器的 IP:9000 就能打开Portainer的Web界面了。
  • -v /var/run/docker.sock:/var/run/docker.sock :这是 关键的一步 docker.sock 是Docker守护进程的通信接口,把这个文件挂载到容器内,Portainer才能有权限与宿主机的Docker引擎通信,从而管理其他容器。你可以把它理解为给Portainer授予了“管理员钥匙”。
  • -v portainer_data:/data :数据卷挂载。这里创建了一个名为 portainer_data 的Docker卷,并挂载到容器的 /data 目录。Portainer的所有配置数据(比如你设置的账号、管理的端点信息)都会保存在这个卷里。即使你删除了Portainer容器,只要这个卷还在,重新部署后数据依然能恢复。 使用命名卷( portainer_data )比直接挂载主机目录(如 -v /opt/portainer/data:/data )更推荐,因为管理起来更干净,由Docker自动处理路径和权限。
  • portainer/portainer-ce:latest :指定要运行的镜像。我们用的是Portainer社区版(CE)。

把上面这条完整的命令复制到你的终端执行即可。执行后,用 docker ps 命令查看,应该能看到一个名为 portainer 的容器正在运行。

4.2 初始化Portainer与基本使用

现在,打开你的浏览器,输入 。第一次访问,你需要创建一个管理员账号,设置用户名和密码。

接下来会让你选择连接的环境。我们是要管理“本地的Docker环境”,所以选择 “Local” ,然后点击“Connect”。

恭喜!你已经进入了Portainer的主界面。左侧是菜单栏,在这里你可以:

  • Dashboard(仪表盘) :一目了然地看到所有容器、镜像、卷的状态。
  • Containers(容器) :列表形式展示所有容器,可以在这里轻松启动、停止、重启、删除容器,或者查看日志、进入容器终端。
  • Images(镜像) :管理所有拉取到本地的镜像,可以搜索、拉取新镜像,或者删除旧的。
  • Volumes(卷) & Networks(网络) :管理数据卷和网络,这些是容器持久化存储和通信的基础。

有了Portainer,后面部署宝塔和可道云,你甚至可以不敲命令,直接在它的“Containers”页面点击“Add container”,然后填填表单就能搞定。不过,为了让你更深入理解,我们接下来还是用命令行的方式,这能让你更清楚每个参数的意义。

5. 部署宝塔面板:打造全能服务器运维中心

宝塔面板在国内开发者中知名度极高,它把复杂的服务器运维(网站部署、FTP、数据库、防火墙、监控等)都做成了简单的图形化操作。用Docker来跑宝塔,可以实现环境隔离,并且迁移、备份都特别方便。

5.1 拉取与运行宝塔Docker镜像

这里我们使用一个社区维护的、口碑不错的宝塔镜像。运行以下命令:

docker run -tid \
  --name baota \
  --restart unless-stopped \
  -p 21:21 \
  -p 80:80 \
  -p 443:443 \
  -p 888:888 \
  -p 3306:3306 \
  -p 8888:8888 \
  -v /home/docker/bt/www:/www/wwwroot \
  -v /home/docker/bt/vhost:/www/server/panel/vhost \
  -v /home/docker/bt/mysql:/www/server/data \
  -v /home/docker/bt/backup:/www/backup \
  yiwanlingyi/baota_back:lnmp-amd64

这条命令参数比较多,我详细解释一下:

  • -tid :这是 -t -i -d 的合并。 -t 分配一个伪终端, -i 保持标准输入打开, -d 后台运行。对于宝塔这种需要交互和后台服务的容器,这样组合比较合适。
  • --restart unless-stopped :和 always 类似,也是自动重启,区别在于如果容器是被你手动执行 docker stop 停止的,它就不会自动重启。
  • 端口映射群 :这里映射了多个端口,每个端口对应宝塔的一项服务。你可以根据自己需要删减。比如你暂时不用FTP,就可以去掉 -p 21:21
    • -p 80:80 :HTTP网站服务。
    • -p 443:443 :HTTPS(加密)网站服务。
    • -p 888:888 :phpMyAdmin(数据库管理工具)端口。
    • -p 3306:3306 :MySQL数据库服务端口。
    • -p 8888:8888 宝塔面板本身的Web管理端口 ,最重要!
  • 目录挂载(关键!) :这是Docker部署宝塔的精华所在。我们把容器内重要的数据目录,都挂载到宿主机的特定路径上。这样做的好处是:
    1. 数据持久化 :即使容器被删除,你的网站文件、数据库、配置文件都安全地留在宿主机上。
    2. 方便备份 :直接备份宿主机上的 /home/docker/bt 目录就行了。
    3. 便于管理 :你可以用熟悉的工具(如SFTP)直接管理宿主机上的网站文件。
    • -v /home/docker/bt/www:/www/wwwroot :网站根目录。
    • -v /home/docker/bt/vhost:/www/server/panel/vhost :网站配置文件目录。
    • -v /home/docker/bt/mysql:/www/server/data :MySQL数据库文件目录。
    • -v /home/docker/bt/backup:/www/backup :宝塔的备份目录。 请注意 /home/docker/bt 这个宿主机路径是我示例用的,你可以改成任何你喜欢的、有写入权限的路径。 务必确保这些目录在宿主机上存在 ,如果不存在,Docker会自动创建,但有时权限可能不对,所以最好手动先创建好: sudo mkdir -p /home/docker/bt/{www,vhost,mysql,backup}

5.2 初始化宝塔面板并获取登录信息

容器运行后,它内部的宝塔服务可能还没启动。我们需要进入容器手动启动一下,并获取默认的登录账号密码。

  1. 启动宝塔服务

    docker exec -it baota /etc/init.d/bt start
    

    docker exec -it baota 是进入名为 baota 的容器内部执行命令。后面跟着的就是在容器内启动宝塔服务的命令。

  2. 获取默认登录信息

    docker exec -it baota /etc/init.d/bt default
    

    执行这条命令,终端会打印出宝塔面板的登录地址、用户名和默认密码。请务必 立即复制保存 !输出信息通常类似:

    ==================================================================
    Bt-Panel: 
    username: xxxxxx
    password: xxxxxx
    ==================================================================
    

    注意,这里的地址可能是内网IP。你实际访问时,需要在浏览器输入

  3. 登录与安全设置 : 用上一步获取的信息登录宝塔面板。首次登录,它会推荐你安装LNMP或LAMP套件(即Nginx/Apache、MySQL、PHP)。你可以根据自己建站的需要选择安装,这个过程比较耗时,让它自己慢慢装就行。 强烈建议 :登录后第一件事,去面板设置里做以下操作:

    • 修改面板密码 :把默认密码改成你自己设定的强密码。
    • 修改面板端口 :8888是默认端口,容易被扫描。建议在“面板设置”里修改成一个不常用的高端口号(如 35897 ),修改后记得在防火墙和安全组中放行新端口,并重启面板服务。
    • 绑定域名和开启SSL :如果你有域名,可以为面板绑定一个域名并申请SSL证书,这样就能通过 的安全方式访问了。

现在,你就拥有了一个功能强大的图形化服务器管理后台。建站、部署SSL证书、管理数据库、设置定时任务,都可以在这里轻松完成。

6. 部署可道云:搭建你的私有云盘

最后一个“集装箱”,我们部署 可道云(KodExplorer) 。它是一个基于Web的文件管理器,功能堪比网盘,你可以用它来在线管理服务器上的文件,预览文档、图片、视频,甚至在线编辑代码。把它部署在本地或内网,传输速度极快,而且完全私密,不用担心隐私问题。

6.1 快速部署可道云容器

部署可道云的命令非常简洁:

docker run -d \
  --name kodexplorer \
  -p 58989:80 \
  -v /home/docker/kodcloud:/var/www/html \
  --restart=always \
  kodcloud/kodexplorer:latest
  • -p 58989:80 :将容器内的80端口映射到宿主机的58989端口。你可以把 58989 改成任何未被占用的端口。
  • -v /home/docker/kodcloud:/var/www/html :这是核心!把容器内可道云的程序和数据目录 /var/www/html ,挂载到宿主机的 /home/docker/kodcloud 目录。这样,你上传到可道云的所有文件,实际上都存储在宿主机这个路径下,容器重建也不会丢失数据。同样,请确保宿主机目录存在: sudo mkdir -p /home/docker/kodcloud
  • kodcloud/kodexplorer:latest :这是可道云官方维护的Docker镜像。

执行命令后,等待十几秒,让容器完全启动。然后在浏览器访问

6.2 初始化与使用指南

首次访问,会进入可道云的初始化页面。你需要设置一个管理员密码。设置完成后,就进入了可道云的主界面。

它的界面非常直观,左侧是目录树,右侧是文件列表。你可以:

  • 上传/下载文件 :直接拖拽文件到浏览器窗口即可上传,下载也很方便。
  • 在线预览 :支持图片、音乐、视频、PDF、Office文档等多种格式的在线预览,无需下载。
  • 在线编辑 :对于文本文件、代码文件(如 .txt , .html , .js , .py ),可以直接在线编辑并保存。
  • 分享文件 :可以生成文件或文件夹的外链,设置密码和有效期,方便临时分享给他人。
  • 用户管理 :在“设置”中,你可以创建多个用户,并为他们分配不同目录的权限,适合小团队协作。

一个实用技巧 :你可能会想,能不能把可道云挂载的目录,指向宝塔面板的网站目录(比如 /home/docker/bt/www )?这样不就能用可道云直接管理网站文件了吗?答案是 可以,但要小心 。你可以在部署可道云时,将 -v 参数改为 -v /home/docker/bt/www:/var/www/html/data/User/admin/home/你的网站文件夹 。但更稳妥的做法是,在可道云内部使用“外部存储”功能,添加一个指向宿主机目录的链接,这样权限管理更清晰,避免误操作。

7. 进阶管理与故障排查心得

三个核心容器都跑起来了,但要让这个环境长期稳定运行,还需要一些进阶的管理知识和排错能力。这部分是我自己踩坑后总结的干货。

7.1 容器日常运维命令备忘

虽然有了Portainer,但掌握一些基础命令在关键时刻能救急。这里列一个最常用的清单:

  • 查看容器状态
    • docker ps :查看正在运行的容器。
    • docker ps -a :查看所有容器(包括已停止的)。
  • 管理容器生命周期
    • docker start <容器名或ID> :启动已停止的容器。
    • docker stop <容器名或ID> :停止运行中的容器(发送SIGTERM信号,允许优雅关闭)。
    • docker restart <容器名或ID> :重启容器。
    • docker rm <容器名或ID> :删除已停止的容器。加 -f 可以强制删除运行中的容器(不推荐)。
  • 查看日志与进入容器
    • docker logs -f <容器名> :实时查看容器的日志输出,排查问题神器。 -f 是跟随(follow)模式。
    • docker exec -it <容器名> /bin/bash :以交互模式进入容器内部,就像登录一台小Linux。想修改宝塔面板的某个配置文件,或者看看可道云内部结构,就用这个命令。
  • 管理镜像与数据卷
    • docker images :列出本地所有镜像。
    • docker rmi <镜像ID> :删除不再使用的镜像,节省空间。
    • docker volume ls :列出所有数据卷。
    • docker volume rm <卷名> :删除数据卷( 危险!会删除数据!

7.2 常见问题与解决方案

  1. 容器启动失败,提示“端口被占用” : 这是最常见的问题。比如你之前运行过宝塔,没删干净,再次运行就会提示 8888 端口被占用。用 sudo netstat -tlnp | grep :8888 查看是哪个进程占用了端口,然后停止它,或者修改新容器的映射端口(如 -p 8889:8888 )。

  2. 访问宝塔或可道云,页面打不开

    • 检查防火墙 :Debian可能自带了 ufw 防火墙。确保你映射的端口(如8888, 58989)已经放行: sudo ufw allow 8888 。云服务器(如阿里云、腾讯云)还需要在控制台的安全组规则中放行相应端口。
    • 检查容器是否运行 docker ps 看看容器状态是不是 Up
    • 查看容器日志 docker logs baota docker logs kodexplorer ,看有没有启动错误信息。
  3. 宝塔面板内安装软件(如Nginx)速度慢或失败 : 这是因为宝塔容器内部使用的软件源可能也是国外的。解决办法是进入宝塔容器: docker exec -it baota bash ,然后修改容器内的软件源为国内源(如清华源、阿里源)。具体修改 /etc/apt/sources.list 文件的方法,和修改宿主机Debian源类似。

  4. 如何备份和迁移整个环境? 这是Docker的最大优势之一。

    • 备份 :你只需要备份两个东西:1) 所有容器的启动命令(可以写成 docker-compose.yml 文件,这是更高级的用法);2) 你在宿主机上挂载的数据目录(如 /home/docker )。把这两个打包,就是完整的备份。
    • 迁移 :在新服务器上安装好Docker,恢复数据目录到相同路径,然后用备份的启动命令重新运行容器,一切就都回来了。
  5. 宿主机磁盘空间不足怎么办? Docker运行久了,会产生很多无用的镜像层、停止的容器、构建缓存,占用大量空间。定期清理是个好习惯:

    # 删除所有已停止的容器
    docker container prune
    # 删除所有未被使用的镜像(谨慎,确保镜像真的没用)
    docker image prune -a
    # 删除所有未被使用的数据卷(非常谨慎!会删除数据!)
    # docker volume prune
    

最后,我想说,这套组合拳打下来,你的Debian服务器就已经从一个“黑乎乎的终端”变成了一个拥有图形化运维面板、私有云盘和强大Web服务能力的生产环境。整个过程,从系统准备到三个容器上线,顺利的话半小时内就能完成。最重要的是,你通过这次实践,不仅得到了一个可用的环境,更理解了Docker“一次构建,到处运行”的精髓。以后无论换服务器,还是部署新的应用,你都可以从容地用Docker来搞定,这才是最大的收获。我自己在项目中也越来越依赖这种容器化的部署方式,它让环境的一致性得到了保证,再也不用说“在我电脑上是好的”这种话了。

本文标签: 镜像 命令 容器