Windows体验NAS(一)准备工作:docker desktop安装、docker compose简介以及其他简单的准备工作
本文主要主要是作为后续折腾的前置,说一说如何安装docker相关的环境。
docker是一个开源的应用程序容器化平台。所谓容器化指的就是将应用程序和他所需要的环境打包装在一起,从而实现能在各个不同的系统之间方便的移植。例如不会出现说这个程序必须要在linux系统里面才能运行,win就不能兼容了。四舍五入简单理解的话安装docker就相当于装了一个应用市场一类的东西吧,安装一个docker的平台就可以使用一些不同操作系统上的别人打包好的应用。
一、安装前置需求
docker如果是在linux上安装,可以参考官方网站的文档或者直接包管理工具安装,官方源的下载速度感人的话可以使用镜像源,比如说清华源。后面说PVE搭建All in One机器的时候会把这部分展开来说,现在暂时先跳过。其实在linux上安装会简单很多,如果后续有单独整一个All in one而且不着急用可以等后面直接上All in one虚拟机或者通过下面的文档自行安装。
官方文档:
https://docs.docker.com/manuals/
清华源:
以下是windows的安装,windows的docker desktop基于hyper-V或者WSL这两项虚拟技术其中之一,系统要求如下:


首先是需要首先在BIOS中开启CPU虚拟化选项,一般来说不是特别老的都是默认开了的,我只有intel所以只能演示intel的了。开机进入bios之后(视你的机器不同可能是按del/F2/F12或者什么别的,要么网上查一下要么就全部一起按),一般来说会在CPU高级或者进阶设置里面,去找这个东西,Intel Virtualization Technology或者有中文虚拟化三个字的,设置为enable/启用。

然后确保你的windows10版本大于19045或者Windows11大于21H2(版本号应该是22000之后)之后。没有就任务栏搜索系统更新等他自动更新,如果windows的更新功能不太正常,可以自行去windows官网下载MediaCreationTool,运行后选择本机更新,记得选择保留用户数据和应用,别整成重装了。
以下是这几个东西开启的地方,首先在windows下方任务栏搜索“启用或关闭windows功能”,然后按照图里面的把这三个打上勾(其实我们后面用WSL只需要Hyper-V和WSL,但是注意如果你有其他虚拟机设备,比如VMware或者说安卓模拟器之类的,可能会对他们有性能影响),点击确定等系统安装,随后重启。

二、安装启动WSL2
以下以使用WSL2的方式为例,重启后以管理员身份运行powershell(桌面底部搜索框输入powershell,右键以管理员身份运行),进入后输入命令
wsl --update
安装完成后再输入一行命令
wsl --set-default-version 2
随后前往C:用户[你的windows用户名]这个目录下新建一个文本文档,写入以下内容
[wsl2]
processors=4
memory=4GB
swap=4GB
processors是你wsl用的核数,不要超过你电脑的本身的核数就ok
memory是wsl可用内存大小,同样不要超过你的电脑本身内存大小。
swap是wsl可用的缓存,就是类似Windows虚拟内存的东西,看你自己的情况设置。保存后将文本文档名字修改为.wslconfig(注意前面有个.,修改完成后应该显示为WSLCONFIG文件),注意设置显示文件名后缀,要把原来的.txt也删掉。4GB的内存已经差不多足够折腾了,文件名字修改完成后重启。
二、安装docker desktop
然后打开浏览器下载安装程序,开始安装,程序下载地址,选择download for windows:
https://www.docker.com/get-started/
虽然说文档中写的是WSL和hyper-V在运行效率上没有区别,但是在安装界面会显示推荐你使用WSL

点击确认后会自动安装,没有路径选择选项,安装完成后会要求重启,重启后会进入选项设置界面,推荐就是使用推荐选项(红框),后续会要求输一次你当前Windows账户密码就ok。你点高级设置也就是问你是自动升级wsl2还是你手动安装。我们刚才已经升级了wsl2,所以其实点哪个都行。

接下来就是注册账号,由于docker-hub访问不了,直接选择continue without signing in就ok。开启后点左上角齿轮进入设置,主要改两个东西,增加国内源,设置wsl虚拟硬盘位置。

首先是修改存放虚拟硬盘的位置,由于我们的docker其实是跑在WSL上的一个虚拟机,他会有一个虚拟硬盘来存储后续的docker相关的文件,默认的位置是在C:用户[你的windows用户名]appdatedockerwsl里面的,如果你的C盘空间有限想搬到其他盘,点击蓝色的browse选择路径即可,例如我选择了在D盘新建一个dockerimage来存放。确认后点击Apply&Restart保存并重启docker.可能要等待一会儿因为他要移动原来的vhdx文件

然后dockerhub国内的连接速度可能非常感人,所以需要增加一些国内的源(registry-mirrors内填写,注意带英文引号用英文逗号间隔,我确实没找到什么特别稳定好用的国内源,可以尝试https://dockerproxy.com/,https://docker.nju.edu.cn/等等),增加同时下载数量(max-concurrent-downloads,默认为3)和尝试数(max-download-attempts,默认为5),转到docker engine选项卡,除了这三条其他都是默认的,完整的内容如下。同样点击Apply&Restart保存,如果想调整其他的上面有个链接可以点开看看还有什么参数可以调整。
调整后的内容大概会是这个样子
{
"max-concurrent-downloads": 5,
"max-download-attempts": 10,
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"registry-mirrors": [
"https://dockerproxy.com/", "https://docker.nju.edu.cn/"
]
}
另外General里面第一项是开机启动,Software Update里面可以设置自动更新,可以考虑打开。
至此完成docker设置,后续所有的docker我都建议使用docker compose的形式来部署,方便以后的更新和管理。
二、docker compose简介
这里只是简单介绍一下docker的这些配置文件怎么组织管理比较方便以及docker compose到底写的是些什么,有个印象就行,实际部署的其实就算有需要自己要改的也就端口、挂载文件夹以及用户这些基础的。
docker compose就是通过每个项目文件夹内的docker compose.yml这个文件来对容器进行配置,相对于直接使用docker run命令来运行docker的优势有
可以方便的将多个需要配合的容器一并配置管理;
可以清晰的看出来自己配置写了啥,而不是docker run那一长串命令;
方便升级。
首先是目录的架构,基本来说建议在你喜欢的盘先新建一个docker文件夹作为统一管理所有docker,然后每个项目再新建一个文件夹,里面放入该项目的docker compose.yml和需要挂载的文件夹,目录结构建议如下。当然如果说你有需要挂载文件夹到其他位置也可以,比如说挂载你存储数据的机械盘,注意记得路径就行。docker移植的时候直接将项目文件夹移动了再重新构建就行。
docker/
│
├── 项目1/
│ ├── docker-compose.yml # 配置文件
│ ├── .env # 环境变量文件,不一定有
│ ├── 挂载文件夹1/ # 需要挂载到容器内的文件夹,不一定有,也不一定就要放在这里,只要挂载路径写对就行。
│ └── 挂载文件夹2/ # 同上
└── 项目2/
├── docker-compose.yml # 配置文件
├── .env # 环境变量文件,不一定有
├── 挂载文件夹1/ # 需要挂载到容器内的文件夹,不一定有,也不一定就要放在这里,只要挂载路径写对就行。
└── 挂载文件夹2/ # 同上
让ai写了个docker compose的例子,大概看看就行,主要一般会自己改的就是ports、volumes里面的映射关系,冒号前面的是宿主机上面的,后面的是docker里面的。有个印象就行,后面多调整几次就熟了,不太清楚就可以复制进去问AI。
services:
web:
image: nginx:alpine # 使用nginx的alpine版本作为web服务器,必有项
ports:
- "8080:80" # 将容器的80端口映射到宿主机的8080端口
volumes:
- ./html:/usr/share/nginx/html # 挂载当前目录下的html文件夹到nginx的web根目录
depends_on:
- app # 确保web服务在app服务启动后再启动,多容器协同才会有的
app:
build: ./app # 构建位于./app目录下的Docker镜像
environment:
- DATABASE_URL=postgres://db_user:db_password@db:5432/db_name # 环境变量,用于连接数据库
db:
image: postgres:11-alpine # 使用postgres的11-alpine版本作为数据库
environment:
- POSTGRES_DB=db_name # 数据库名
- POSTGRES_USER=db_user # 数据库用户
- POSTGRES_PASSWORD=db_password # 数据库密码
volumes:
- db_data:/var/lib/postgresql/data # 挂载数据库数据卷
volumes:
db_data: # 定义一个持久化存储的卷,用于存储数据库数据
html: # 定义一个持久化存储的卷,用于存储web服务器的静态文件
在完成对docker compose.yml的编辑后就可以使用以下的命令了
docker compose up -d
# 按照yml文档启动容器,-d指后台运行
docker compose down
# 按照当前目录内的yml文件删除容器
docker compose restart
# 重启容器
docker compose ps
# 查看运行了哪些容器
启动之后回到docker desktop就可以看到在运行中的容器,例如这里部署的immich项目总共由5个容器构成

点击容器名字可以查看到容器运行的信息,包括日志、运行元数据、挂载、内部执行命令行、文件夹、状态,如果出现问题可以来这里检查。

三、简单其他准备工作
由于很多docker项目都是映射端口到主机然后通过网页来查看项目,所以说主机有一个固定的ip或者域名会比较方便。公网域名ddns和内网穿透在后面会来详细说说。局域网内直接通过路由器设置就行.
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

值友1766358556
校验提示文案
偏北就是我
校验提示文案
houalibaba
校验提示文案
东街小东东
校验提示文案
秋流年
校验提示文案
炊烟袅袅般
校验提示文案
AI购物管家-电脑数码
校验提示文案
无事长相见
校验提示文案
偏北就是我
校验提示文案
东街小东东
校验提示文案
无事长相见
校验提示文案
houalibaba
校验提示文案
值友1766358556
校验提示文案
炊烟袅袅般
校验提示文案
秋流年
校验提示文案
AI购物管家-电脑数码
校验提示文案