最近入坑了docker,发现这东西果然方便。

这里有一个docker的基础教程,我觉得不错,先贴出来。
docker – 纯洁的微笑博客 (ityouknow.com)
谈谈我对docker的简单理解,我们可以把docker理解为一个虚拟机软件,而不同的docker镜像里包含了“操作系统+应用+配置”,docker镜像就是一个配置好的,可以直接运行特定应用的环境。以往,我们要部署一个应用,要按照不同的操作系统,先安装这个应用的基础组件,然后下载应用,再改应用的配置文件,最后启动应用,非常费劲,经常会因为操作系统的不同、组件版本的不同、甚至莫名其妙的原因失败。有了docker,这一切都不需要自己操心了,docker应用镜像已经是一个测试过的,配置好的环境,我们只需要把它拿过来直接run就行。
一、docker的安装
这个和其他软件一样,不同的操作系统有不同的方式,大家自行搜索即可,要注意的是,安装后最好把docker添加到开机启动,这样基于docker的应用在开机后也都能启动了。
对于用户来说,知道docker的映射方法就可以。基本上就是
x:y
的这种格式,啥意思呢?就是把主机的x位置或者端口映射到虚拟机(容器)的y位置或者端口,也就是说访问宿主的x端口,相当于访问虚拟机(容器)的y端口,虚拟机(容器)访问y位置,相当于访问宿主的x位置。
二、docker compose
compose可以通过配置文件,直接加载docker镜像,一次性能加载多个docker镜像,更为方便。
compose的安装也有许多方法,我采用的是直接下载编译好的包的方法:
1、确定系统、内核、cpu
uname -a
uname -s
uname -m
2、下载compose
docker/compose: Define and run multi-container applications with Docker (github.com)
去release里下载
3、改名,下载的文件名字改为docker-compose
4、移动位置,放在合适的位置
我这里是放到了/usr/libexec/docker/cli-plugin
5、赋予执行权限,用chmod+x
6、compose的简单使用
compose是根据docker-compose.yml文件来配置容器环境的,docker-compose里有几个重要的参数
(1)iamge:这个的镜像名称
(2)container_name:容器名称
(3)environment:配置参数
(1)port:这个是docker的端口映射
(2)volumes:这个是文件路径映射
三、部署seafile
home – Seafile Cloud 主要看这里
docker compose 的部署很简单,直接下载yml的配置文件就可以,docker会根据配置文件自动下载需要环境文件。
1、seafile的docker-compose.yml需要修改以下信息
(1)db:数据库里要修改数据库的密码和数据库的映射路径
(2)elasticsearch:修改映射路径
(3)seafile:
- 修改端口,建议把80和443端口都映射成外部端口,同时,修改映射路径
- 修改路径映射
- 修改环境environment
- 数据库密码
- 管理员邮箱和密码
- 服务器hostname,写上域名或者IP
2、部署
采用docker compose up -d即可完成
3、开启https
修改seafile-data/nginx/conf文件,这里我们可以看到,seafile内部是8000端口,通过nginx反向代理到了80端口的,我们需要把80端口的数据rewrite到https,看官方的示例即可
配置443端口,要先将证书文件和私钥复制到seafile-data文件下,建一个文件夹,存放证书和私钥。要知道,seafile-data文件夹在容器里面对应的/shared文件夹。因此,证书的配置文件里面,证书的路径要写容器的路径,也就是/shared/ssl/证书,这点很重要,剩下的就很简单了。
配置完成后,重启容器的nginx
docker exec -it seafile /usr/sbin/nginx -s reload
4、配置CSRF_TRUSTED_ORGINS,这个是关于浏览器跨域的一个安全设定,如果不设定这个,会出现错误,可能是seafile尚未修复的一个bug
修改seafile-data/seafile/conf/seahub_settings.py文件
在最后添加一行
CSRF_TRUSTED_ORIGINS = ['域名/IP:端口']
https://github.com/haiwen/seafile/issues/2118#issuecomment-523688712
修改完后,重启seafile
docker-compose restart
ok,现在用浏览器登录试试
https://域名/IP:端口