我不知道多少人会像我一样在家里使用Docker来跑GitLab,如果真有,那么一定会与到和我一样的问题。我遇到的问题比较简单:宽带运营商不开放80端口,GitLab的Docker镜像默认只支持80端口。外网端口直接端口映射可以用,但是在gitlab的网站里面看到git的clone路径的端口是有问题的,或者地址也是内网的。
解决这个问题需要预先确定准备使用什么域名和端口。首先需要一个动态域名,老tp-link路由器可以使用花生壳,新的tp-link路由器可以用tp-link提供的动态域名,比如现在有一个叫 xx456.tpddns.cn的域名。然后需要确定使用什么端口,比如我映射在2080上。那么我们可以用如下的命令创建一个Docker容器:
docker run \
-e GITLAB_OMNIBUS_CONFIG="external_url 'http://xx456.tpddns.cn:2080’;” \
–p 22:22 –p 2080:2080 \
--name gitlab \
--restart always \
-v /srv/docker/gitlab/config:/etc/gitlab \
-v /srv/docker/gitlab/logs:/var/log/gitlab \
-v /srv/docker/gitlab/data:/var/opt/gitlab \
-d gitlab/gitlab-ce:latest
其中
- 如果你不准备使用ssh访问gitlab里面的git的话,那个22端口的映射也可以去掉。
- 环境变量GITLAB_MNIBUS_CONFIG里面的external_url就是gitlab提示的地址,gitlab会自动判断是使用http还是使用https,自动判断是使用默认端口,还是其中配置的接口。
现在LAN用ip访问一下,然后再在路由器上做外网2080端口到docker所在服务器192.168.1.2的2080端口的映射。这样无论以后在外网还是内网,都可以使用http://xx456.tpddns.cn:2080来访问这个docker容器中的gitlab了。
注意:不知道什么原因,这种方式做的gitlab容器,会比默认情况下创建的gitlab启动的要慢,也就是docker容器重启以后,由starting到health状态花费的时间要多,初步估计会多30%到50%,但是运行起来之后没有区别。
docker hub里面的archlinux大部分是archlinux支持i686时期的镜像,目前archlinux不支持i686以后,这些镜像估计就不再支持i686了。我看了一些x86_64的镜像制作脚本,相当多的一部分都是直接用的其rootfs的tar来制作的,只有少数几种是直接从pacman获取包制作rootfs,挑了两种大牌的,如下:
1.在Moby的github的捐献里,有一个archlinux的制作完整base包的脚本,我把获取包的mirror服务器改成了Archlinux32在日本的服务器以后,在i686的环境里面制作成功并运行了一个Archlinux32。我整理的脚本在https://github.com/bh1rio/archlinux32-docker
2.另外一种方式是使用https://github.com/archlinux/archlinux-docker 的Makefile来直接用make的方式制作。这个不需要改Makefile,他是使用本机配置的mirror来获取包。惊喜是这个makefile可以制作rootfs。
对比两种方式,第二种方式的生成的包稍小,我怀疑有某些不必要的文件没有清理,不过还没有具体比较两个差异。
另,别问我为啥抱着i686玩docker:我给我的那个4盘位的小机器配好了Raid5,没理由扔到一边不管嘛
新装机的话,可以从archlinux32.org下载纯32位的安装包。
原来archlinux官方的i686装机,可以更换archlinux32的更新服务,方法如下:
- 先把/etc/pacman.d/mirrorlist的内容换成https://raw.githubusercontent.com/archlinux32/packages/master/core/pacman-mirrorlist/mirrorlist这个内容。这里面是最新的archlinux32的镜像文件清单,今天镜像服务器数量爆发性增长,是昨天的两倍了,昨天只有4个,今天8个了。国内目前不要选新加坡的那个,死慢,小鬼子的速度最快。
- 执行pacman -Syy archlinux32-keyring-transition来更新证书链。
- 执行pacman -Syuu来做完整升级。但是有两个问题:1是目前archlinux32的包没有archlinux的新,可能得有相当数量的包会提示降级。2是开始第一次会提示你本机缓存的老版本包的数字签名不对,一种解决办法是当提示你的时候,选Y然后删掉原来的包,再-Syuu的时候就会重新下载对的,另一种解决办法是在开始前先运行pacman -Sc据说会清理掉数字签名不对的。
不管咋样,我去重启我的那个机器去了
.
.
.
.
.
.
顺利重启,反正我也不关心是不是出了什么问题。
话说,国内也没谁写这样的Blog了吧
这个找了好久,以前在VisualStudio里面一直有,在Code里面不知道换成什么了。今天找了一下:
- Windows下:Shift+Alt+F
- Linux下:Shift+Ctrl+F
生活一下变美好了
今天看见Docker的Hub里面的microsoft/mssql-server-linux已经升级到了2017-CU1,就顺手装了一个。可以用如下命令:
docker run –name mssql -e ‘ACCEPT_EULA=Y’ -e ‘SA_PASSWORD=‘ -e ‘MSSQL_PID=Standard’ -p 1433:1433 -d microsoft/mssql-server-linux:2017-CU1</yourstrong!passw0rd>
其中有意思的是MSSQL_PID这个参数,PID是Product ID (PID)或者版本的意思,可以送的参数包括:
Developer :开发版,默认值
Express :这个不用说了
Standard :标准版
Enterprise :企业版
EnterpriseCore :这个你们自己试试吧
赶快搞起来吧
摘录自https://docs.docker.com/engine/admin/#configure-the-docker-daemon
首先修改/etc/docker/daemon.json文件,添加:
"hosts": ["unix:///var/run/docker.sock","tcp://192.168.59.3:2376"]
如果这个文件不存在,就创建一个。如果存在,注意这个文件是json格式,添加新的行,注意上一行末尾添加逗号。
然后再用systemctl show –property=FragmentPath docker找到服务的定义文件,然后去掉ExecStart那一行的-H参数,修改为:
ExecStart=/usr/bin/dockerd
这样重启整个系统就好了。不愿意重启的话,先systemctl daemon-reload,再systemctl restart docker
近期评论