最早以前用gitlab,但是太耗资源了。换了gogs,发现总不更新。最后换了gitea。
之前放在托管服务器上的是使用docker部署的gitea 1.6.1版,好长时间没升级了,这次升级了一下,升级到了当前最新的1.12.3版。
按照gitea官方文档,原来的docker容器删掉换新的docker容器就好了,但是前提是容器的/data必须映射到了宿主。也就是说,docker容器删掉,数据不会丢失。
我升级的时候也没有一步到位,先是升级到1.8.3,再升级到1.12.3。避免跨度太大,扯到……docker。
现在升级完看上去都正常。另外,升级前记得备份映射到宿主的/data。
习惯了Arch的仓库以后,Raspbian的仓库老的不能再老了。查了Docker的网站,不能直接装,需要用如下的方法,先搞下来一个脚本来安装,速度有点慢:
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh
真的是有慢,用的docker官方的仓库。
之前用Docker的方式在阿里云给公司部署了1台Gitlab CE,当时觉得部署起来很简单方便。这次公司要把这个git迁移会IDC,记录过程如下:
1.暂停老服务器的服务
docker stop gitlab
2.迁移数据
进入新服务器的/srv目录,sftp到老服务器,执行get –r /srv/gitlab /srv
-r参数会把整个目录都拿下来
3.新服务器启用安装docker
略
4.下载gitlab-ce镜像
略
5.运行容器
按照https://docs.gitlab.com/omnibus/docker/ 中 Run the Image章节运行。
6.迁移预处理
docker exec -it gitlab update-permissions
docker restart gitlab
再重启之后,重新对域名做解析,gitlab服务就正常了。
另,gitlab文档说更换image的版本,可以实现升级,有闲的兄弟可以试试,哈哈
不知道Docker公司是怎么想的,明明其Dockerfile没有指定必须x64,却不提供i686的镜像,只好每次有新版本的时候,重新制作一次。步骤如下:
1.先从Docker公司的github里面获取最新的Dockerfile
git clone https://github.com/docker-library/mariadb.git
2.进入mariadb/10.2目录,然后执行
docker build –t mariadb:10.2.13 .
然后等着就好了。
建议开始之前,先把debian:jessie升级到最新,这样能省很多debian做apt update的时间。
原本CentOS7里面的Docker是1.12版本的,没觉得很老,但是在自动化构建asp.net core的时候,不支持Dockerfile中的FROM AS语法,只好查一下CentOS7下怎么安装新的Docker-CE,如下:
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce
systemctl start docker
目前安装的是17.09.0-ce版本
我不知道多少人会像我一样在家里使用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,没理由扔到一边不管嘛
今天看见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
近期评论