Docker-Gitlab
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。这篇文章是我练习时,在网上找了很多资料,记录下来的笔记,给大家演示一下我的Docker安装Gitlab的安装历程,O(∩_∩)O哈哈~
安装环境 :CentOS
服务器 :腾讯云
通过Docker Compose安装Gitlab
Docker Compose是一个用来定义和运行复杂应用的Docker工具。使用Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成一切准备工作。
一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose,不再需要使用shell脚本来启动容器。在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器。完整的命令列表如下:
-
build
构建或重建服务 -
help
命令帮助 -
kill
杀掉容器 -
logs
显示容器的输出内容 -
port
打印绑定的开放端口 -
ps
显示容器 -
pull
拉取服务镜像 -
restart
重启服务 -
rm
删除停止的容器 -
run
运行一个一次性命令 -
scale
设置服务的容器数目 -
start
开启服务 -
stop
停止服务 -
up
创建并启动容器
安装Docker Compose
运行下边的命令来安装 Compose:
curl -L https://github.com/docker/compose/releases/download/1.3.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
注意:如果你在安装的时候出现了 “Permission denied” 的错误信息,这说明你的 /usr/local/bin 目录是不可写的,你需要使用超级用户来安装。运行 sudo -i , 然后运行上边的两个命令,然后 exit 退出。
可选,你也可以利用pip方式进行安装。
CentOS上需要先行安装yum的一个额外的包,这个包里面才有Python-pip,缺省的没有。运行下边命令检查Linux是否安装Python-pin包:
yum install python-pip
- 本地不存在Python-pin包,执行命令:
yum -y install epel-release
- 执行成功之后,再次执行命令安装Python-pin包:
yum install python-pip
- 若想对Python-pin包升级,执行命令:
pip install --upgrade pip
- pip工具就安装好了,就可以安装Docker-Compose了,执行命令:
sudo pip install -U docker-compose
到这里Compose已经安装完成。你可以使用 docker-compose --version
来进行测试 。
利用Docker Compose安装Gitlab
利用Docker Compose能够快速搭建Gitlab,执行下面命令配置:
wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml
启动Gitlab,执行命令:
docker-compose up
到这里安装就结束了;Gitlab安装完成了,你可以执行docker ps
来查看容器的运行。
通过Docker安装Gitlab
利用Docker下载Gitlab镜像
首先我们需要先拉取gitlab镜像到本地:
docker pull sameersbn/gitlab:9.2.5
当然也可以使用latest标签去拉取代码仓库HEAD中最新的版本:
docker pull sameersbn/gitlab:latest
或者,你可以直接在本地创建镜像:
docker build -t sameersbn/gitlab github.com/sameersbn/docker-gitlab
建立容器
通过下面三个步骤来启动gitlab、postgresql和redis三个container。
步骤1. 启动postgresql container:
docker run --name gitlab-postgresql -d \
--env 'DB_NAME=gitlabhq_production' \
--env 'DB_USER=gitlab' --env 'DB_PASS=password' \
--env 'DB_EXTENSION=pg_trgm' \
--volume /srv/docker/gitlab/postgresql:/var/lib/postgresql \
sameersbn/postgresql:9.6-2
步骤2. 启动redis container:
docker run --name gitlab-redis -d \
--volume /srv/docker/gitlab/redis:/var/lib/redis \
sameersbn/redis:latest
步骤3. 启动gitlab container:
docker run --name gitlab -d \
--link gitlab-postgresql:postgresql --link gitlab-redis:redisio \
--publish 10022:22 --publish 10080:80 \
--env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' \
--env 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \
--env 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' \
--env 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string' \
--volume /srv/docker/gitlab/gitlab:/home/git/data \
sameersbn/gitlab:9.2.5