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

2019-11-27 17:37:14 24点赞 214收藏 21评论

小编注:此篇文章来自#原创新人#活动,成功参与活动将获得额外100金币奖励。

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 群晖 DS418j 4盘位NAS网络存储服务器

Synology 群晖 DS418j 4盘位NAS网络存储服务器

2380元起

Synology 群晖 DS918+ 四盘位NAS网络存储服务器

Synology 群晖 DS918+ 四盘位NAS网络存储服务器

3915.43元起

Synology 群晖 DS218+ 2盘位 NAS网络存储服务器

Synology 群晖 DS218+ 2盘位 NAS网络存储服务器

1803.4元起

Synology 群晖 DS218j 2盘位NAS网络存储服务器

Synology 群晖 DS218j 2盘位NAS网络存储服务器

1177元起

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

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

1782.27元起

Synology 群晖 DS218play 2盘位NAS网络存储服务器

Synology 群晖 DS218play 2盘位NAS网络存储服务器

1800元起

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

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

4045元起

Synology 群晖 DS718+ 2盘位NAS网络存储服务器

Synology 群晖 DS718+ 2盘位NAS网络存储服务器

3400元起

Synology 群晖 DS418play 4盘位NAS网络存储服务器

Synology 群晖 DS418play 4盘位NAS网络存储服务器

3490元起

群晖(Synology)DS1618+ 6盘位NAS网络存储服务器 (无内置硬盘 )

群晖(Synology)DS1618+ 6盘位NAS网络存储服务器 (无内置硬盘 )

6800元起

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

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

3100元起

Synology 群晖 DS216play 2盘位NAS网络存储服务器

Synology 群晖 DS216play 2盘位NAS网络存储服务器

1553.9元起

Synology 群晖 DS216 2盘位NAS网络存储服务器

Synology 群晖 DS216 2盘位NAS网络存储服务器

1882.79元起

Synology 群晖 DS620slim 网络存储服务器NAS 2.5寸硬盘

Synology 群晖 DS620slim 网络存储服务器NAS 2.5寸硬盘

4099元起

Synology 群晖 DS1618+ 6盘位NAS网络存储服务器

Synology 群晖 DS1618+ 6盘位NAS网络存储服务器

5190.34元起

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

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

3999元起
21评论

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

请选择举报理由

相关文章推荐

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