docker固定ip,抛弃端口映射? 教你通过搭建gitlab
什么是docker
抛开win和mac外,在linux系统下(包括群辉),docker是容器,方便部署和资源隔离、限制。
通过docker部署程序和普通直接部署程序相比较,仅仅会多占用一些磁盘空间。所以大家可以放心大胆的使用docker。
注册表: 相当于应用商城,可以选择下载不同的应用。
镜像: 就是下载的应用、软件包,大家下载的都是绿色软件,几乎不需要安装的,可能需要我们简单配置下。
容器: 相当于我们安装好的软件,同一个镜像可以启动多次,创建多个一样的容器。
很多套件是我们安装的是一些服务,比如数据库、gitlab、homeassistant等。群辉上的docker套件,每次重启容器的ip会发生变化,通过端口映射的方式来找到对应的服务。开始我也是采用这种方式,后面发现容器一多,端口就乱78遭的。
那么就得想个办法固定ip,这样直接通过ip+端口的形式访问服务,没有必要进行端口映射了。
本文内容需要开启ssh,使用终端进行。
1. 创建网络
原有的网络不支持固定ip,只能新建一个了:
默认的网段是172.17.0.0/16,我们使用相邻的,具体的随意即可。fixbridge 是网络的名称,后续需要通过这个名字指定网络。
创建的网络
创建的网络也可以通过界面查看
2. 创建容器
我们不能直接通过群辉的界面创建,只能通过终端创建容器。 创建的容器,界面也可以看到和操作。我们以&39;为例子,创建一个gitlab服务。
2.1 创建redis容器
https://hub.docker.com/r/sameersbn/redis/
提供的命令是多行的,后面的表示该条命令没有结束。直接复制到终端即可。
--name 容器的名称, 我起的名字里面带ip,方便查看
--net 我们创建的网络名称,写你的网络名字哦
--ip 指定的ip。除了该参数界面无法配置外,其他参数界面均可配置。
--restart always 不当关机时,会尝试重启
--volume 指定路径映射, :前面是宿主的路径,该路径你需要在群辉里面创建的。 :后面是映射到容器内部的路径。
--env 环境变量
sameersbn/redis:latest 下载的镜像和版本,和自己下载的镜像对应哦。
我们选择镜像--启动---高级设置
--env 就是环境选项卡,全部拷贝到命令行里面,这些参数目的是让我们改的,一般默认就行
--volume 对应的是卷,哪些路径需要映射呢? 基本都是env指定的。
如果不知道怎么填写可以启动一下,看看默认是什么内容。或者通过介绍页面查看帮助。
2.2 postgresql容器
https://hub.docker.com/r/sameersbn/postgresql
postgresql这个数据库,和mysql一样出名,gitlab支持较好。使用mysql也不错,但是gitlab无法使用子group,
注释的三行表示创建个数据库以及用户给gitlab使用。
2.3 gitlab容器
https://hub.docker.com/r/sameersbn/gitlab进行注释说明
GITLAB_HOST,GITLAB_SSH_HOST,GITLAB_SSH_PORT 这三个参数使用见下图
这个容器内部包括一个nginx,我们后面做映射的使用没有使用nginx的端口,可以将nginx剔除掉。
3. 映射域名3.1 群辉反向代理
控制面板 --- 应用程序门户 --- 反向代理设置 --- 新增
按图填写即可:
名字:随便起个
来源:协议选择http或者https,有条件上https, 主机名填写你需要的域名,端口使用443或者80
目的地:即我们的gitlab应用,协议http,主机名 172.18.0.103,端口8181。
3.2 路由端口映射
此处不再展开, 需要把群辉映射出去。
3.3 ddns
将域名绑定到ip上,也可以使用通配符
本人使用通配符,这样就方便随时配置域名。
4. 总结
volume 参数的目的是让程序的数据能够保留到我们的群辉中,即使升级版本也能保留。不信你删除掉容器,重新run一个出来看看是不是完全一样的。大家可以百度下“稳定版白群晖升级数据丢失,官方回复说与他们无关”,本人不对事件做任何评论,大家珍惜自己的数据。特别是小公司,一定要舍得花钱招人,有招兼职的也可以联系我哦。
env参数的作用,是让我们对容器的程序进行定制,目的就是让我们能够按照我们的口味用着顺心。
|