Docker是什么?
Docker的直译就是码头,码头中有各种各样的集装箱,每个集装箱之间都是相互独立的,每个集装箱中都有自己的微环境。
Docker甚至可以粗暴的理解为一个安装在电脑上的软件,这个软件虚拟出了一个新电脑,在这个虚拟电脑中可以安装各种软件,这些软件可以运行在一个个独立的微环境中,这一个个微环境就被称作“容器”。
为什么要Docker?
一般在电脑上安装新软件需要配置一大堆环境(比如,运行系统等等),如果安装环境不正确或出现变化就很有可能导致软件无法正常运行。
因为在Docker中安装的软件都有自己的微环境,所以极大的降低了软件在安装或迁移过程中出现问题的可能,很容易做到傻瓜式使用软件。
这有点类似经常看到的某某软件的绿色免安装版,下载后不用安装,打开就可以直接使用。
关于Docker更详细和有趣的介绍,可以参考B站UP主“技术蛋老师”的视频,观看地址:🐳Docker概念,工作流和实践 – 入门必懂_哔哩哔哩_bilibili
如果想快速了解更多关于Docker的知识,推荐大家移步这个网站进行学习:前言 · Docker — 从入门到实践 (docker-practice.github.io)
什么是镜像?
“镜像”简单说就是,Docker中安装容器的安装包,它不仅包含软件本身,还包含运行环境所需要的各种环境。
这些安装包一般在DockerHub或GitHub中可以下载到。
由于腾讯云已经为服务器开启了镜像加速,所以我们可以直接跳过很多文章中关于配置镜像加速的内容。
什么是端口?
端口就相当于连接容器(可粗暴理解为软件)的通道,当大家通过域名解析连接到某一个IP地址的服务器后,还需要通过服务器上特定的端口号与指定的容器进行连接,因为一个服务器上有很多容器,如果不指定端口,服务器哪知道你是要访问哪个容器。
安装Portainer
由于轻量应用服务器中已经安装好了Docker,因此我们不必自己安装Docker,直接通过控制台进入服务器安装第一个软件——Portainer。
Docker是基于Linux系统的软件,其核心操作模式是命令行式的,而安装Portainer就是给Docker套上一个便于操作的可视化界面。
Portainer官网:https://www.portainer.io/
具体的安装流程网上很多,不复杂,也没什么大坑,可以自行搜索安装,也可参考以下内容一步步安装:
文字类:Portainer的简单安装和使用
视频类:超级好用的Docker可视化工具——Portainer
Portainer添加容器界面的介绍
Portainer可以实现很多功能,也可以看到很多关于Docker的状态信息,大家可以自行摸索,但这里只介绍一下用的最多的一个功能——添加并运行一个容器(Container)。
必填参数
- 容器名称
- 镜像名称(下载地址)
- 端口映射
映射数据
通过把容器内的某些文件夹映射到服务器上或容器外,来实现不进入容器,也能修改和传递容器内重要文件的目的,比如WordPress一般会有以下映射:/home/data/docker/wordpress:/var/www/html
设置环境变量
有些容器在开启时需要设置必要环境变量,但大部分环境变量可以不设置。如,MySQL有个一个必要环境变量,MYSQL_ROOT_PASSWORD=密码,把MYSQL_ROOT_PASSWORD(区分大小写)填左边,把想设置的密码填右边即可。
重启策略
一般选择Always或Unless stopped
什么是Nginx Proxy Manager?
Nginx Proxy Manager官网:https://nginxproxymanager.com
Nginx Proxy Manager简称NPM,是一个提供可视化反向代理面板和HTTPS证书管理的软件。
什么是反向代理?
之前在腾讯云上把域名解析成IP地址的过程是正向代理,而反向代理是差不多的过程,也是把域名变成IP地址的过程,基本就是套娃。
比如,你在浏览器输入域名“bilibili.com”,解析代理商一查就知道你去IP地址为A的地方申请网站资料,索要资料的申请到达A后,A通过域名再一查发现要把申请重新转到IP地址B上去。
而这个IP地址A再到IP地址B的过程就是反向代理,而IP地址A到IP地址B的查询过程就需要Nginx Proxy Manager来实现。
其中的好处之一就是,可以完全隐蔽网站真实的IP地址,虽然域名解析到IP地址A的过程基本是公开的,但IP地址A解析到IP地址B的过程是发生在你自己服务器上的,是完全封闭的状态。
更多关于反向代理的知识,感兴趣的可以自己查阅相关资料,但本人不建议花太多精力,毕竟不是建站需要这块的知识不多。
推荐学习资料:
什么是正向代理?什么是反向代理?一分钟最详解答,新手必备,入门教程_哔哩哔哩_bilibili
还在手动配置Nginx?太LOW了,这个超强大的 Nginx 可视化管理工具太牛逼了! (qq.com)
什么是HTTPS证书?
简单点形容就是,有了个这个证书,大家在登录你的网站时会更有安全感,因为交流信息得到了加密
建议大家都配置这个证书,可以增加网站的可信度。
更多关于HTTPS证书的技术细节和原理,大家可以参考这个视频:HTTPS是什么?加密原理和证书。SSL/TLS握手过程_哔哩哔哩_bilibili
安装Nginx Proxy Manager
B站上有很多关于这个软件的安装视频,大家可以一步一步安装。
本人比较推荐这个视频:家宽如何使用Nginx Proxy Manager反向代理,快速配置远程访问及SSL证书_哔哩哔哩_bilibili
这个软件的安装有几个大坑希望大家可以避开,并充分理解其中的原因:
- 先学会Portainer的基本用法后,再通过其安装NPM,安装容器时需要注意,冒号前面的端口是唯一的,不同容器之前不能一致,冒号后面的端口根据要求设置,一般是固定的,不同容器之前可以一样
- 在配置反向代理时,最好通过子域名(mail.deeostorage.top就是deeostorage.top的子域名)和Docker内部路由器IP地址把主机IP地址的端口绕开,这样就可以让服务器防火墙关闭大量端口,增加服务器的安全性,但要注意把子域名DNS解析到服务器上
- IP地址前面的那一栏一定要选http,不要选https,本人在建站时在这里卡了非常久
- 所有容器的IP地址那一栏全部填Docker内部路由器IP地址就行,一般是172.17.0.1
- Docker内部IP地址后面的那一栏,也就是端口那一栏,填的是外部访问的那个端口,不是容器自身的端口,也就是运行容器时,冒号前那个端口号
*对第三条的附加解释:
https的证书是在NPM容器中,所以当通过NPM把A地址转到B地址时,B地址一般都是http的,因为那个B地址的容器里没有https证书。*
网站https功能是通过加密与NPM容器之间通信来实现的,这也就是为啥在后面要勾选“强制HTTPS”这个选项的原因。
当然也有例外,比如Portainer是自带https证书的,可以通过9443这个端口访问,这时就可以选择让NPM在转接Portainer容器时用https连接。
最终NPM的呈现效果如下:
安装MySQL和WordPress
MySQL是一个用来存储数据的软件,也是安装WordPress所必须的条件。
通过Portainer安装MySQL和WordPress并不难,大家可以通过DockerHub的官方文档(不使用魔法可能会打不开链接)来设置和安装。
mysql – Official Image | Docker Hub
wordpress – Official Image | Docker Hub
这里给大家推荐一个视频教程作为参考:【好玩儿的Docker项目】10分钟搭建美国白宫也用的博客框架——Wordpress-我不是咕咕鸽 (laoda.de)
注意事项:
- MYSQL_ROOT_PASSWORD是MySQL的必要环境变量,必须填写
- 最好打开MySQL数据库的端口映射,以便后面能打开相应端口的防火墙修,改数据库里的内容,但是用完后注意及时关闭该端口
- 建议使用Navicat登录并访问数据库,虽然这个软件需要花钱(有破解版),但对于新手来说非常好用
MySQL和WordPress各举一个安装代码的示例,以便不会魔法的人可以根据例子填写Portainer参数。
MySQL:
docker run -d --name mysql --restart=always -p 3306:3306 -v /root/docker/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 bitnami/mysql:latest
WordPress:
docker run -d --name wordpress -p 8080:80 --restart=unless-stopped -v /root/docker/wordpress:/var/www/html wordpress:latest