嘿群辉 篇四:docker固定ip,抛弃端口映射吧  -- 通过搭建gitlab看看如何使用

2019-11-27 17:37:14 32点赞 242收藏 28评论

小编注:此篇文章来自#原创新人#激励计划,新人发文前三篇文章,篇篇额外奖励50金币。参加超级新人计划活动,新人发文即可瓜分10万金币周边好礼达标就有,邀新任务奖励无上限点击查看活动详情

0. 什么是docker

抛开win和mac外,在linux系统下(包括群辉),docker是容器,方便部署和资源隔离、限制。

通过docker部署程序和普通直接部署程序相比较,仅仅会多占用一些磁盘空间。所以大家可以放心大胆的使用docker。

注册表: 相当于应用商城,可以选择下载不同的应用。

镜像: 就是下载的应用、软件包,大家下载的都是绿色软件,几乎不需要安装的,可能需要我们简单配置下。

容器: 相当于我们安装好的软件,同一个镜像可以启动多次,创建多个一样的容器。

很多套件是我们安装的是一些服务,比如数据库、gitlab、homeassistant等。群辉上的docker套件,每次重启容器的ip会发生变化,通过端口映射的方式来找到对应的服务。开始我也是采用这种方式,后面发现容器一多,端口就乱78遭的。

那么就得想个办法固定ip,这样直接通过ip+端口的形式访问服务,没有必要进行端口映射了。

本文内容需要开启ssh,使用终端进行。

1. 创建网络

原有的网络不支持固定ip,只能新建一个了:

sudo docker network create --subnet=172.18.0.0/16 fixbridge

默认的网段是172.17.0.0/16,我们使用相邻的,具体的随意即可。fixbridge 是网络的名称,后续需要通过这个名字指定网络。

创建的网络创建的网络

创建的网络也可以通过界面查看


2. 创建容器

我们不能直接通过群辉的界面创建,只能通过终端创建容器。 创建的容器,界面也可以看到和操作。我们以'sameersbn/gitlab:latest'为例子,创建一个gitlab服务。

2.1 创建redis容器

https://hub.docker.com/r/sameersbn/redis/

提供的命令是多行的,后面的表示该条命令没有结束。直接复制到终端即可。

sudo docker run --name redis_101 -itd --net fixbridge --ip 172.18.0.101 --restart always
--volume /volume1/docker/redis/data:/var/lib/redis
--volume /volume1/docker/redis/log:/var/log/redis
--env 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
--env 'REDIS_VERSION=4.0.9'
--env 'REDIS_USER=redis'
--env 'REDIS_DATA_DIR=/var/lib/redis'
--env 'REDIS_LOG_DIR=/var/log/redis'
sameersbn/redis:latest

--name 容器的名称, 我起的名字里面带ip,方便查看

--net 我们创建的网络名称,写你的网络名字哦

--ip 指定的ip。除了该参数界面无法配置外,其他参数界面均可配置。

--restart always 不当关机时,会尝试重启

--volume 指定路径映射, :前面是宿主的路径,该路径你需要在群辉里面创建的。 :后面是映射到容器内部的路径。

--env 环境变量

sameersbn/redis:latest 下载的镜像和版本,和自己下载的镜像对应哦。

docker固定ip,抛弃端口映射吧  -- 通过搭建gitlab看看如何使用

我们选择镜像--启动---高级设置

--env 就是环境选项卡,全部拷贝到命令行里面,这些参数目的是让我们改的,一般默认就行

--volume 对应的是卷,哪些路径需要映射呢? 基本都是env指定的。

如果不知道怎么填写可以启动一下,看看默认是什么内容。或者通过介绍页面查看帮助。

2.2 postgresql容器

https://hub.docker.com/r/sameersbn/postgresql

postgresql这个数据库,和mysql一样出名,gitlab支持较好。使用mysql也不错,但是gitlab无法使用子group,

sudo docker run --name postgresql_102 -itd --net fixbridge --ip 172.18.0.102 --restart always
--volume /volume1/docker/postgresql/certs:/etc/postgresql/certs
--volume /volume1/docker/postgresql/data:/var/lib/postgresql
--volume /volume1/docker/postgresql/log:/var/log/postgresql
--env "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
--env "PG_APP_HOME=/etc/docker-postgresql"
--env "PG_VERSION=10"
--env "PG_USER=postgres"
--env "PG_HOME=/var/lib/postgresql"
--env "PG_RUNDIR=/run/postgresql"
--env "PG_LOGDIR=/var/log/postgresql"
--env "PG_CERTDIR=/etc/postgresql/certs"
--env "PG_BINDIR=/usr/lib/postgresql/10/bin"
--env "PG_DATADIR=/var/lib/postgresql/10/main"
--env 'DB_NAME=gitlabhq_production' # 创建数据库
--env 'DB_USER=gitlab' # 创建用户,该用户具备访问上面的数据库的权限
--env 'DB_PASS=XXXXXX' # 用户密码
--env 'DB_EXTENSION=pg_trgm'
sameersbn/postgresql:latest

注释的三行表示创建个数据库以及用户给gitlab使用。

2.3 gitlab容器

https://hub.docker.com/r/sameersbn/gitlab#postgresql

sudo docker run --name gitlab_103 -itd --net fixbridge --ip 172.18.0.103
--publish 10022:22 # 映射端口号,22端口比较特殊需要映射出来
--volume /volume1/docker/gitlab/config:/home/git/gitlab/config:rw # 后面的rw表示可以读写,默认rw,之前很多没加
--volume /volume1/docker/gitlab/log:/var/log/gitlab:rw
--volume /volume1/docker/gitlab/data:/home/git/data:rw
--env "GITLAB_SSH_PORT=10022" # 和端口映射的端口一样哦,这三个配置会展示都网页提供clone地址用的
--env "GITLAB_SSH_HOST=git.xxx.xxx" # 你想采用的域名
--env "GITLAB_HOST=git.XXX.xxx" # 同上,可以不同
--env "DEBUG=true"
--env "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
--env "GITLAB_VERSION=11.11.3"
--env "RUBY_VERSION=2.5"
--env "GOLANG_VERSION=1.12.6"
--env "GITLAB_SHELL_VERSION=9.1.0"
--env "GITLAB_WORKHORSE_VERSION=8.7.0"
--env "GITLAB_PAGES_VERSION=1.5.0"
--env "GITALY_SERVER_VERSION=1.42.4"
--env "GITLAB_USER=git"
--env "GITLAB_HOME=/home/git"
--env "GITLAB_LOG_DIR=/var/log/gitlab"
--env "GITLAB_CACHE_DIR=/etc/docker-gitlab"
--env "RAILS_ENV=production"
--env "NODE_ENV=production"
--env "GITLAB_INSTALL_DIR=/home/git/gitlab"
--env "GITLAB_SHELL_INSTALL_DIR=/home/git/gitlab-shell"
--env "GITLAB_GITALY_INSTALL_DIR=/home/git/gitaly"
--env "GITLAB_DATA_DIR=/home/git/data"
--env "GITLAB_BUILD_DIR=/etc/docker-gitlab/build"
--env "GITLAB_RUNTIME_DIR=/etc/docker-gitlab/runtime"
--env "REDIS_PORT=6379" # 刚才redis的端口号
--env "REDIS_HOST=172.18.0.101" # redis的ip
--env "DB_ADAPTER=postgresql" # 使用postgresql数据库
--env "DB_HOST=172.18.0.102" # 使用postgresql数据库ip
--env "DB_PORT=5432" # 使用postgresql数据库端口
--env "DB_PASS=XXXXXXXX" # 使用postgresql数据库密码,这三个参数和之前启动数据库时的一样
--env "DB_USER=gitlab" # 使用postgresql数据库用户名
--env "DB_NAME=gitlabhq_production" # 使用postgresql数据库数据库名称
--env "GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string3-xx1" # 随机的字符串,加密用,
--env "GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string2-yy" # 字符串不同加密的内容也不同,随机填写和其他人区分
--env "GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string1-z22z" # 这三个参数全部替换掉,采用不一样的字符串
sameersbn/gitlab:latest

命令比较长,需要配置的几个后面使用#进行注释说明

GITLAB_HOST,GITLAB_SSH_HOST,GITLAB_SSH_PORT 这三个参数使用见下图

docker固定ip,抛弃端口映射吧  -- 通过搭建gitlab看看如何使用

这个容器内部包括一个nginx,我们后面做映射的使用没有使用nginx的端口,可以将nginx剔除掉。


3. 映射域名

3.1 群辉反向代理

控制面板 --- 应用程序门户 --- 反向代理设置 --- 新增

docker固定ip,抛弃端口映射吧  -- 通过搭建gitlab看看如何使用

按图填写即可:

  • 名字:随便起个

  • 来源:协议选择http或者https,有条件上https, 主机名填写你需要的域名,端口使用443或者80

  • 目的地:即我们的gitlab应用,协议http,主机名 172.18.0.103,端口8181。


3.2 路由端口映射

此处不再展开, 需要把群辉映射出去。

3.3 ddns

将域名绑定到ip上,也可以使用通配符

docker固定ip,抛弃端口映射吧  -- 通过搭建gitlab看看如何使用

本人使用通配符,这样就方便随时配置域名。

4. 总结

volume 参数的目的是让程序的数据能够保留到我们的群辉中,即使升级版本也能保留。不信你删除掉容器,重新run一个出来看看是不是完全一样的。大家可以百度下“稳定版白群晖升级数据丢失,官方回复说与他们无关”,本人不对事件做任何评论,大家珍惜自己的数据。特别是小公司,一定要舍得花钱招人,有招兼职的也可以联系我哦。

env参数的作用,是让我们对容器的程序进行定制,目的就是让我们能够按照我们的口味用着心。

文章可能有遗漏之处,如果有问题大家留言区见docker固定ip,抛弃端口映射吧  -- 通过搭建gitlab看看如何使用 ,大家多多收藏、多多点赞支持,要准备高产了~

完~

展开 收起

Synology 群晖 DS220+ 双盘位NAS网络存储服务器 黑色

Synology 群晖 DS220+ 双盘位NAS网络存储服务器 黑色

2780元起

Synology 群晖 DS220J 双盘位 NAS存储 白色(RTD1296 512MB 无盘)

Synology 群晖 DS220J 双盘位 NAS存储 白色(RTD1296 512MB 无盘)

901.55元起

Synology 群晖 DS420+ 四盘位NAS网络存储服务器 黑色

Synology 群晖 DS420+ 四盘位NAS网络存储服务器 黑色

3980元起

Synology 群晖 DS1621+ 6盘位 NAS网络存储服务器 无硬盘

Synology 群晖 DS1621+ 6盘位 NAS网络存储服务器 无硬盘

7195元起

Synology 群晖 DS1819+ 8盘位NAS网络存储器

Synology 群晖 DS1819+ 8盘位NAS网络存储器

8499元起

Synology 群晖 DS218 2盘位四核心 NAS存储

Synology 群晖 DS218 2盘位四核心 NAS存储

2200元起

Synology 群晖 DS1520+ 5盘位 NAS网络存储服务器 黑色

Synology 群晖 DS1520+ 5盘位 NAS网络存储服务器 黑色

6212元起

Synology 群晖 DS418 四盘位NAS网络存储服务器 新款

Synology 群晖 DS418 四盘位NAS网络存储服务器 新款

3300元起

群晖(Synology)DS1821+ 企业级8盘位NAS 网络存储服务器 (无内置硬盘 )

群晖(Synology)DS1821+ 企业级8盘位NAS 网络存储服务器 (无内置硬盘 )

8100元起

Synology 群晖 DS1019+ NAS存储服务器 黑色

Synology 群晖 DS1019+ NAS存储服务器 黑色

5900元起

群晖(Synology)DS420j 4盘位 NAS网络存储服务器 (无内置硬盘)

群晖(Synology)DS420j 4盘位 NAS网络存储服务器 (无内置硬盘)

2580元起

群晖(Synology)DX517 5盘位NAS网络存储服务器扩充设备 (无内置硬盘)

群晖(Synology)DX517 5盘位NAS网络存储服务器扩充设备 (无内置硬盘)

4050元起

群晖(Synology)DS419slim 可支持4颗2.5寸硬盘 NAS网络存储服务器 (无内置硬盘)

群晖(Synology)DS419slim 可支持4颗2.5寸硬盘 NAS网络存储服务器 (无内置硬盘)

2950元起

群晖(Synology)DS420j 四盘位NAS 磁盘阵列网络存储服务器 个人私有云网盘 黑色 个人和家庭用户 4盘位(无内置硬盘)

群晖(Synology)DS420j 四盘位NAS 磁盘阵列网络存储服务器 个人私有云网盘 黑色 个人和家庭用户 4盘位(无内置硬盘)

2580元起

Synology 群晖 DS1618+ 6盘位 NAS存储 黑色(C3538 4GB 无盘)

Synology 群晖 DS1618+ 6盘位 NAS存储 黑色(C3538 4GB 无盘)

5190.34元起

Synology 群晖 DS920+ 4盘位 NAS存储(J4125)

Synology 群晖 DS920+ 4盘位 NAS存储(J4125)

2385元起
28评论

发表评论请 登录
  • 最新
  • 最热
评论举报

请选择举报理由

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
242
扫一下,分享更方便,购买更轻松