ubuntu基于Docker搭建Gitlab服务器

news/2024/11/21 1:27:20/

一、安装docker

1,先卸载掉旧版本

$ sudo apt-get remove docker docker-engine docker.io containerd runc

2,更新apt包

$ sudo apt-get update

3,安装软件包以允许apt通过https使用存储库

	$ sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common

4,添加官方GPG秘钥

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -$ sudo apt-key fingerprint 0EBFCD88

5,设置稳定存储库

$ sudo add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) \stable"

6,更新apt包索引

$ sudo apt-get update

7,推荐直接安装最新版本的docker

$ sudo apt-get install docker-ce docker-ce-cli containerd.io

8,测试运行hello world镜像

$ sudo docker run hello-world

9、其他Docker操作

卸载docker引擎

$ sudo apt-get purge docker-ce

docker虽然卸载,但是镜像还会残留,卸载镜像命令

$ sudo rm -rf /var/lib/docker

docker的常用命令

启动docker

systemctl start docker

停止docker:

systemctl stop docker

重启docker:

systemctl restart docker

开机启动:

systemctl enable docker

查看docker概要信息

docker info

查看docker帮助文档

docker --help

列出容器

docker ps

二、docker部署Gitlab

1,创建容器外挂目录

创建三个目录分别存放这些数据,便于GitLab的维护和迁移。即时是GitLab被我们玩坏了,只要这三个文件还存在,就可以很简单的重建

sudo mkdir -p /gitlab/data
sudo mkdir -p /gitlab/logs
sudo mkdir -p /gitlab/config

2,启动gitlab容器

sudo docker run --detach \--publish 8443:443 --publish 8000:80 --publish 2222:22 \--name gitlab \--restart always \--volume /gitlab/config:/etc/gitlab \--volume /gitlab/logs:/var/log/gitlab \--volume /gitlab/data:/var/opt/gitlab \-log-driver=none \beginor/gitlab-ce:11.1.4-ce.0

参数说明

  • –detach 设置容器后台运行
  • –publish 暴露 https、http和ssh端口,关于端口下文会细说
  • –name 容器名称
  • –restart always 每次启动容器就重启GitLab
  • –volume 设置GitLab数据挂载点

第一次启动容器会很慢,需要三分钟左右。可以随时通过docker ps 查看启动进度。当STATUS由starting变为health时,就说明启动成功了。

另外,其中的8000:80就是docker内部80对外部8000的映射,外部访问时就用8000端口,内部实际映射为80。
3,配置GitLab
现在就可以通过地址:http://IP:8000访问GitLab,但是为了正常使用,我们还需要配置GitLab。
我们需要修改三个参数:

external_url
ssh 端口
nginx监听端口
GitLab的配置文件在我们外挂的磁盘下/gitlab/config/gitlab.rb
修改external_url

sudo vim /gitlab/config/gitlab.rb
# 可以通过`/`搜索需要修改的参数
external_url 'http://IP:8000'   # IP填写GitLab部署的服务器的IP

修改ssh端口

如果不修改ssh的端口,clone和提交代码时一直需要输入密码。
因为通过ssh链接gitlab时默认访问的是22端口,但是使用docker部署,22端口在宿主机一直被占用,所以映射为2222端口,需要修改gitlab配置文件

### GitLab Shell settings for GitLab
gitlab_rails['gitlab_shell_ssh_port'] = 2222
# gitlab_rails['gitlab_shell_git_timeout'] = 800

修改nginx监听的端口

nginx['listen_port'] = 80

这点比较重要,否则有可能造成ssh链接异常

现在配置已经完成,重启容器即可使用

docker restart gitlab

访问
GitLab的访问地址是:http://IP:8000/。第一次访问会让用户修改密码,修改成功后就可以通过账号(root)和该密码登录GitLab。
当然为了正常使用GitLab,添加SSH公钥是必须的。GitLab的使用方式和GitHub基本一致。


http://www.ppmy.cn/news/66737.html

相关文章

2023Java面试题(附答案)

精选Java面试题162道 什么是Java,Java的优点是什么?Java是一种面向对象的编程语言,请解释面向对象的概念是什么?Java编程语言有哪些数据类型?什么是Java中的Wrapper类?包装类有哪些?Java中的基…

【游戏分析】《某某明月刀》之御风神行

御风神行是《某某明月刀》里很常用的一个技能,可以用来在各大地图的传送点之间相互传送而不需要经过车夫,虽然冷却时间很长,但是非常实用。但是想去到某个传送点必须要先点亮这个传送点,也就是说要跑到传送点附近才可以。但是通过…

[Netty] 面试问题 1 (十八)

文章目录 1.Netty的特点2.Netty应用场景3. Netty核心组件4.Netty的线程模型5. EventloopGroup和EventLoop6.Netty 的零拷贝7.Netty 长连接和心跳机制8.Netty 服务端和客户端的启动过程9.Netty 的 Channel 和 EventLoop10.Netty 的 ChannelPipeline11.Netty 中的 ByteBuf12.Nett…

第一章 数组

目录 一、二分查找1.1 二分查找母题1.2 搜索插入位置1.3 在排序数组中查找元素的第一个和最后一个位置1.4 x 的平方根1.5 有效的完全平方数 二、双指针2.1 移除元素2.2 删除有序数组中的重复项2.3 移动零2.4 比较含退格的字符串2.5 有序数组的平方 三、滑动窗口3.1 长度最小的子…

HADOOP入门

1.Hadoop简介 组件 Hadoop由4部分组成 1)HDFS:(Hadoop Distribute File System)分布式文件系统,海量数据存储解决方案 2)MapReduce:Hadoop的分布式运算编程框架 3)Yarn:分布式资源调度平台和任务监控平台 4)Commons: HADOOP底层技术支持 主要用来解决:大数据存储,大数据分…

docker入门和docker应用场景,镜像制作,服务编排,docker私服

一、简介 docker解决了什么问题docker和虚拟机的区别在CentOS7里安装docker 1. docker简介 我们写的代码会接触到好几个环境:开发环境、测试环境以及生产环境等等。多种环境去部署同一份代码,由于环境原因往往会出现软件跨环境迁移的问题(也就…

DB2_sql_问题

db2新增字段指定顺序 这个是不能做到的,除非把表删除重新创建的! 原理是这样子的:当你创建表时系统会记录下你的SEQ-ID,就是字段的顺序号,这个是根据字段先后顺序来生成的,系统默认显示的时候也是根据这个来的&#x…

设计模式 - 工厂

文章参考来源 一、概念 创建简单的对象直接 new 一个就完事,但对于创建时需要各种配置的复杂对象例如手机,没有工厂的情况下,用户需要自己处理屏幕、摄像头、处理器等配置,这样用户和手机就耦合在一起了。 可以使代码结构清晰&a…