五分钟了解Docker基础
开始使用前,我们先了解下Docker相关的一些知识,以便于了解后面出现的一些名词;
Docker的详细介绍可以查看:Docker — 从入门到实践
什么是 Docker
Docker基于Linux内核的cgroup、namespace以及OverlayFS类的UnionFS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。
您可以简单地把Docker 容器当作一个效率很高的虚拟机,容器内部与宿主机隔离; (当然它不是真的虚拟机)
因此它需要端口映射 (用来访问容器内的网络服务),目录映射 (用来存储文件)
什么是 镜像
Docker 镜像 是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。
镜像不包含任何动态数据,其内容在构建之后也不会被改变。
根据不同的使用场景或平台,镜像会有不同的标签,比如:
latest
,arm-latest
mtphotos/mt-photos:latest
mtphotos/mt-photos:arm-latest
mtphotos/mt-photos:nodb-latest
什么是 容器
容器是镜像运行时的实体,容器可以被创建、启动、停止、删除、暂停等。
容器内部存储的生存周期和容器一样,容器删除时,容器内的存储也会删除。因此,任何保存于容器内部存储的文件都会随容器删除而丢失。
因此创建容器时需要使用数据卷(Volume)或者目录映射 来存储文件;
下面是一段使用docker run创建容器的命令:
docker run -d \
--name="mt-photos" \
-v /xxx/mt_photos/config:/config \
-v /xxx/mt_photos/upload:/upload \
-p 8163:8063 \
-e TZ="Asia/Shanghai" \
--restart="unless-stopped" \
mtphotos/mt-photos:latest
提示:某些系统中(比如Windows),不支持 \ 换行,需要将 \ 删了,合并为一行输入
什么是 目录映射
通过目录映射,可以将宿主机的目录挂载到容器内指定的目录;
这样容器内的文件,比如数据库、缩略图、备份的照片等可以存到宿主机中的目录下;
在docker run 命令中, -v /xxx/mt_photos/config:/config
就是一个目录映射;
注意:目录的路径只能是绝对路径,即 / 开头
:左侧 (/xxx/mt_photos/config)为宿主机目录路径,在创建容器前需要提前创建好
:右侧 (/config)为容器内的目录,通常不需要修改
什么是 端口映射
由于容器内部的网络和外部是隔离的,当外部需要访问容器内的服务时,就需要添加端口映射;
在docker run 命令中, -p 8163:8063
就是一个端口映射;
:左侧 8163为宿主机端口号,是外部用来访问的端口,比如 http://192.168.1.8:8163
:右侧 8063为容器内的端口号,通常不能修改,因为容器内服务绑定端口是固定的
这里的8163只是为了举例,实际使用中,一般2边会使用一样的端口号
-p 8063:8063
如果遇到宿主机的8063端口已经被占用了,那么就需要调整宿主机端口号;
但是容器内的端口号不能修改,因为容器内服务只会使用默认固定的端口号;
什么是 环境变量
环境变量是容器内程序运行时,会读取的某些配置项;通过环境变量可以自定义容器内的某些功能;
在docker run 命令中, -e TZ="Asia/Shanghai"
就是一个环境变量;
TZ 就是环境变量的名称,TZ用来指定时区
"Asia/Shanghai" 就是环境变量的值,也就是时区的值
安装
如果您的NAS系统在以下列表中,可以点击下方链接查看单独的安装方法
Windows版本服务端的安装方法请查看: Windows服务端的安装方法
使用Portainer安装的方法请查看: Portainer使用方法