畅快玩转NAS 篇二:Docker极速上手使用教程
张大妈上面的Docker教程很多,但大多都是面向具体某个应用的手把手教程,并没有讲清楚为什么这么做 当有自己其他需求的时候,小白往往就不知道怎么做了 与其看无数篇小白教程不如搞懂原理是什么,为什么这么设置。但如果是非专业用户为了方便使用NAS,专门去学习Docker,耗费的时间成本非常高。本文的目的在于让非专业普通家庭用户快速学会使用docker,轻松搭建家庭NAS所需的各种应用
我们可以从docker的图标来理解docker究竟是什么。大海指的就是我们的电脑,叫做宿主主机。大海里面有各式各样的鱼,代指各种应用程序,而这条大鲸鱼就是其中的一个程序——docker。鲸鱼背上的集装箱就是docker容器。
作为普通家庭用户,把docker理解成为一个极其轻量的虚拟机即可。和直接在系统上运行的原生程序相比,docker损失的性能十分微小,对于docker带来的各种便利,这点损失微不足道。
由于各种NAS系统的docker管理界面都不一样,所以本文会用命令行来演示。如果你搞懂命令行各个选项的意义之后,再使用图形界面是轻而易举。新手一般看到命令行会比较畏惧,但是当你熟悉命令之后,再加上finalshell这种ssh工具的加成,效率真的会比使用图形界面还要来得高。下面以linuxserver/qbittorrent这个镜像作为例子。
由于默认的镜像(image)源地址在国外,要把动辄几百MB的镜像文件pull下来,几十上百K的下载速度简直要命了。 所以使用docker的第一件事情就是更改镜像源地址。在尝试过中科大、网易N多的源地址之后 我发现最快的是微软爸爸的地址 即使是冷门刚发布的镜像,下载速度也能维持1M+/s。至于怎么修改镜像源地址,自行根据自己系统搜索吧。
微软镜像地址 http://dockerhub.azk8s.cn
docker存储镜像的仓库叫做docker hub,我们可以在docker hub上面寻找需要的镜像,这些镜像的页面一般都包含了简单的使用说明。
docker hub地址 https://hub.docker.com/
我们也可以在命令行上查找镜像,使用命令docker search查找镜像
在获取镜像之前,要查看该镜像是否包含你设备的架构。各种矿渣盒子的架构是arm64、armv8,而英特尔J1900、J3455就是x86-64
直接页面复制右上角的docker pull 命令,就可以把符合你设备架构的镜像从仓库pull(拉)到本地
没有特别标明tag,docker pull会默认获取tag为latest(最新)的镜像
docker images 命令可以查看本地的已经获取的镜像信息,删除镜像用的是docker rmi 镜像名
镜像的介绍页面一般都会有这么一长串的运行命令,先不要慌
了解每个选项的用途之后,看懂它十分的简单。docker create 命令是用来创建容器(container)。我们之前下载的是镜像(image)。镜像生成容器,容器才是我们真正使用的程序。删除镜像的命令是docker rm 容器名,如果容器正在运行需要添加-f,即docker rm -f 容器名
--name 指定容器的名字,随便写,qbittorrent直接缩写成qb
-e(environment) 环境变量,设置一些参数,我设置了PUID为1000 GUID为100的用户li运行容器。同时还设置了时区、权限掩码,以及webui端口号。有些变量的参数是有默认值的,并不需要设置,例如这里的umask。具体看每个镜像的页面说明。
权限设置还是挺重要的,不明白PUID和GUID可以看我之前介绍Linux权限文章。
-p(ports)端口号, docker默认是以bridge网络模式运行的,-p选项完成了主机和容器的端口映射,前一个端口是宿主主机的端口,后一个是容器的端口,主机的端口可修改为你需要的端口,不要和现存的端口冲突即可。
-v(volumes) 数据卷,这是为了把容器所需要的数据保存到本机。即使容器被删除,数据也会保存下来。当你再生成新的容器时,依旧可以使用原来的数据。数据卷的设置和端口映射类似,前者为主机目录,后者为容器目录。这里的qbittorrent只写了一个downloads目录,如果要下载到其他目录的话,再添加数据卷即可,比如说-v /sharedfolders/movie:/movie,在qbtorrent的下载路径填写/movie,那么文件就会下载到/sharedfolders/movie。需要多少个下载目录,就添加多少个数据卷。
--restart 重启策略,unless-stopped当你手动停止容器后,下次开机该容器就不会自动启动,always总是自动启动。
输入docker start qb就可以启动容器了,同理 docker stop 就是停止容器运行,docker restart则是重启容器
你会在其他镜像说明页面经常看见docker run命令。这个命令会直接创建并运行容器,如果本地没有对应的镜像,它会从docker hub下载该镜像,再创建容器。-d 是在后台运行容器。
之前说过docker可以看成是一个轻量的虚拟机。容器本身运行了一个精简版的linux,然后在这个基础之上再运行的qbittorrent。输入 docker exec -it qb bash 就进入了容器的系统。看下图红线部分,root后面主机名也变成了容器的id。
输入ls命令查看目录。对于了解Linux的人来说,这个目录结构再熟悉不过了。这正是Linux的根目录。除此之外还多了config、downloads、movie 这3个目录,这是在创建容器时添加的目录。所以在qb输入的下载目录是/downloads,而不是本机的目录/sharedfolders/downloads,qb容器并没有/sharedfolders/downloads这个目录。
切换到movie目录,新建一个叫做file的文件,这时在/sharedfolders/movie下也生成了一个fie文件
movie和/sharedfolders/movie其实是同一个目录
Alpine Linux是一个只有5MB的Linux系统,docker推荐它来当作基础镜像。linuxserver/qbittorrent这个镜像是基于ubuntu,和其他基于Alpine的镜像相比大不少。因此我们在寻找镜像的时候,偏向使用基于Alpine的镜像。这点也可以在镜像的页面找到。
荒野无灯的qb基于Alpine只有84MB,而linuxserver的qb足足300MB
我们再来看jellyfin官方的镜像说明
这是不是和上面qb的设置相似呢?-v是--volume的缩写,这里添加了3个数据卷。环境变量-e 设置PUID和PGID变成了--user ,这是因为有的镜像没有设置PUID和PGID,所以需要--user(缩写是-u) 来指定运行用户; --net=host 使用docker的host网络模式运行容器,这里就不需要设置端口映射了,docker会直接使用主机的端口,但要注意避免端口冲突。jellyfin的默认端口是8096。 --net=host 改成 -p 8096:8096也是一样可以运行的。
我们再看百度网盘下载工具的运行说明,它和qb的运行几乎一模一样,也是设置了环境变量、端口、数据卷这些参数。
当你看过这3个不同镜像的运行说明之后,会发现docker镜像的使用方法其实大同小异。几乎都是设置环境变量、端口以及数据卷。也许你会问如果在群晖、qnap、unraid、omv这些系统又怎么设置呢?这些系统在命令行下的命令是一样的,这也是我推荐使用命令行的原因。你可以在张大妈上搜docker,那些教程在图形界面是不是也都是设置这几个参数呢
所以说搞懂原理之后可以做到触类旁通,图形界面下的设置也根本不在话下
码字不易,如果觉得本文对你有帮助,收藏的同时顺手点个赞,谢谢 文章的点赞数经常不到收藏的十分一 能帮助到更多的人是我写文章的初衷 有疑问的请留言,我会尽量回复
晓空残月
校验提示文案
Huzour
校验提示文案
无大侠
校验提示文案
Clul
校验提示文案
龙腾风云
校验提示文案
Mark_Luo
校验提示文案
fu_fu330
校验提示文案
小朱朱蓝
校验提示文案
值友2833464748
校验提示文案
bluedevils
校验提示文案
灰色会
校验提示文案
夜歌豪
校验提示文案
天外来鸿
很实用!
校验提示文案
小羊shawnzh
校验提示文案
月非明之夜
校验提示文案
180天后修改昵称
校验提示文案
假装成熟1987
校验提示文案
Senpaii
校验提示文案
wlbol
校验提示文案
血溅风过
校验提示文案
追不到的男神
校验提示文案
值友6530807131
校验提示文案
zzone
校验提示文案
Cainlee
校验提示文案
愤怒的白白
校验提示文案
篁唯依
校验提示文案
zgmboy
校验提示文案
我还能再冲
校验提示文案
小朱朱蓝
校验提示文案
linqishenglllll
校验提示文案
值友一生一起走666
校验提示文案
bluedevils
校验提示文案
fu_fu330
校验提示文案
值友2833464748
校验提示文案
深圳市民吴先生
校验提示文案
sevevloveXX
校验提示文案
BobH
校验提示文案
追风的小明
校验提示文案
芳心纵火犯2020
校验提示文案
高昂
校验提示文案