Ubuntu16.04使用Docker部署Gitlab

我个人非常不喜欢用SVN同步代码,正好想重温一下docker的一些命令,那就用docker方便的搭建一下gitlab.

ubuntu安装docker

前提条件

Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的Ubuntu版本是否支持 Docker 。
打开控制台使用 uname -r命令来查看你当前的内核版本。

1
2
$ uname -r
3.11.0-15-generic

安装步骤

1
2
3
4
sudo apt-get update
sudo apt-get update $ sudo apt-get install wget //安装wget
wget -qO- https://get.docker.com/ | sh //获取最新版本的 Docker 安装包,输入完成之后,就会下载脚本并且安装Docker及依赖包。
docker info //验证安装结果

问题

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

  • 解决:
    1
    2
    3
    4
    sudo su - //切换到root
    service docker start //启动docker service
    docker images //显示所有images
    docker run hello-world //重新运行

恩,是权限问题,当前用户没权限,root用户可以运行

下载需要的镜像

以下脚本会下载gitlab,mysql,redis镜像

1
2
3
docker pull sameersbn/gitlab:latest
docker pull sameersbn/mysql:latest
docker pull sameersbn/redis:latest

启动需要的镜像

启动redis

1
2
3
4
docker run \
--name=gitlab_redis \
-tid \
sameersbn/redis:latest

启动mysql

注意这里写你的用户名和密码

1
2
3
4
5
6
7
8
9
mkdir -p /opt/gitlab/mysql
docker run \
--name=gitlab_mysql \
-tid \
-e 'DB_NAME=gitlabhq_production' \
-e 'DB_USER=gitlab' \
-e 'DB_PASS=password' \
-v /opt/gitlab/mysql:/var/lib/mysql \
sameersbn/mysql:latest

启动gitlab

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
docker run \
--name='gitlab' \
-itd \
--link gitlab_mysql:mysql \
--link gitlab_redis:redisio \
-e 'GITLAB_PORT=80' \
-e 'GITLAB_SSH_PORT=22' \
--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' \
-p 10022:22 -p 10080:80 \
-v /var/run/docker.sock:/run/docker.sock \
-v $(which docker):/bin/docker \
-v /opt/gitlab/data:/home/git/data \
-v /opt/gitlab/log:/var/log/gitlab \
sameersbn/gitlab:latest

这一步骤会耗时几分钟,因为这一步会做一些初始化操作,我们可以通过docker logs gitlab来查看安装过程。
我们指定了10022作为ssh的访问端口,10080作为http的访问端口,

执行完后,稍微过1-2分钟后,打开以下地址应该就可以访问gitlab了
http://localhost:10080
如果是在服务器上搭建,请替换localhost为服务器地址

注意:

当出了问题,可以用一些命令查看

1
2
3
4
5
6
# 列出正在运行的容器
root@bigdata:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aa93b0654f4b sameersbn/gitlab:latest "/sbin/entrypoint...." 43 minutes ago Up 13 minutes 443/tcp, 0.0.0.0:10022->22/tcp, 0.0.0.0:10080->80/tcp gitlab
881c31d50c53 sameersbn/mysql:latest "/sbin/entrypoint...." About an hour ago Up 14 minutes 3306/tcp gitlab_mysql
e5573736680f sameersbn/redis:latest "/sbin/entrypoint.sh" About an hour ago Up 14 minutes 6379/tcp gitlab_redis
  • 列出所有容器的状态
    1
    2
    3
    4
    5
    root@bigdata:~# docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    aa93b0654f4b sameersbn/gitlab:latest "/sbin/entrypoint...." 44 minutes ago Up 14 minutes 443/tcp, 0.0.0.0:10022->22/tcp, 0.0.0.0:10080->80/tcp gitlab
    881c31d50c53 sameersbn/mysql:latest "/sbin/entrypoint...." About an hour ago Up 14 minutes 3306/tcp gitlab_mysql
    e5573736680f sameersbn/redis:latest "/sbin/entrypoint.sh" About an hour ago Up 15 minutes 6379/tcp gitlab_redis

后面可以是容易id,也可以是容器名称

  • docker start CONTAINER ID #启动容器
  • docker stop CONTAINER ID #停止容器
  • docker rm -f CONTAINER ID #删除容器
  • docker logs CONTAINERID #查看容器的运行时日志

进入docker中的服务器

1
docker exec -it 容器名字 bash

举例:
上面部署gitlab,我们还启动了一个mysql容器,我们可以进入这个mysql容器里面看看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
root@bigdata:~# docker exec -it gitlab_mysql bash
root@881c31d50c53:/# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 5.5.54-0ubuntu0.14.04.1 (Ubuntu)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

这样就进入了mysql容器中了.

加入开机启动

加入/etc/rc.local

1
2
3
echo 'docker start gitlab_redis' >> /etc/rc.local
echo 'docker start gitlab_mysql' >> /etc/rc.local
echo 'docker start gitlab' >> /etc/rc.local

备份和恢复gitlab

备份

1
2
3
docker stop gitlab && docker rm gitlab
docker run --name=gitlab -it --rm [OPTIONS] \
sameersbn/gitlab:latest app:rake gitlab:backup:create

恢复

1
2
3
docker stop gitlab && docker rm gitlab
docker run --name=gitlab -it --rm [OPTIONS] \
sameersbn/gitlab:latest app:rake gitlab:backup:restore

补充

当进入了gitlab的web页面后,新建了一个项目.可以用下面的链接去把工程clone下来.
ip换成你的ip地址.因为上面做了端口映射容器的80端口映射到外面是10080端口.

1
git clone http://10.211.55.7:10080/shiwei/learndocker.git
Donate comment here