文章导航
服务器上基于docker配置gitlab服务并修改host name全过程记录
Docker配置gitlab
教程:方案
Docker 创建容器后再修改 hostname
写作本文的动机
当前使用docker配置的gitlab环境,在打开服务后其http地址并非显示当前服务器IP,而是docker容器的ID。这是因为在初始化容器的时候没有配置hostname,默认就是容器ID。每次发送的邮件里面都长这样:

之前想过很多办法修改,比如说ssh host可以通过配置gitlab.rb解决
下列操作都是在docker容器中进行的。
1 | vi /etc/gitlab/gitlab.rb |

改了external_url就万事大吉了。
http host网上主流方法都是配置gitlab.yml。这种方法不是长久之计!
1 | vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml |
把

改成

这里就存在一个问题,每次服务器断电重启以后,这个文件就被重置了,相应的主机名和端口也变了。http涉及到网页服务和邮件服务,虽然使用git环境远程连接是没有问题的,但是每次收到邮件没有办法直接点进去看,网页端想跳回主页面直接来一个http://adb8725071ce神仙也打不开。
网上有方法是在建立docker容器的时候就设置:
1 | docker run --detach --hostname git.imebo.com --publish 8888:80 --publish 10443:443 --publish 10022:22 --name gitlab_web --restart always --volume /home/gitlab/config:/etc/gitlab --volume /home/gitlab/logs:/var/log/gitlab --volume /home/gitlab/data:/var/opt/gitlab docker.io/twang2218/gitlab-ce-zh |
使用 --hostname参数直接设置就好,我们没有域名就设置IP地址。但是这种方法需要重新建一个gitlab环境,旧的gitlab现在已经运行了大半年,好多仓库也不能舍掉,所以只有另寻他法。
世上是有后悔药的,只要肯琢磨!再也不用重新创建容器了!
操作过程
1. 查看容器配置文件在宿主机上的位置
1 | sudo docker inspect gitlab |

复制这个路径
2. 关闭容器、关闭 docker 服务(重要)
查看当前运行的docker进程
1 | sudo docker ps |

可以看到容器名称、ID、建立时间、端口映射信息。这些都是在建立的时候搞的。
1 | # 关闭容器 |

3. 修改宿主机配置文件
- cd到刚刚找到的目录下
这里有一个问题,普通用户权限不够,sudo的话显示sudo: cd: command not found
。
这是因为cd不是一个应用程序而是Linux内建的命令,而sudo仅仅只对应用程序起作用。
使用sudo -i
命令提升用户权限

- 搜索原 hostname

1 | grep "adb8725071ce" * |

这三处需要修改
- 备份原文件
1 | cp config.v2.json config.v2.json.bak |
- 使用vi或者vim修改、保存
1 | vi config.v2.json |
4. 启动 docker 服务,启动容器
1 | systemctl start docker |

1 | docker start gitlab |
5. 查看 hostname
1 | docker exec gitlab hostname |

6. 检查是否ok

