Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。通过 uname -r 命令查看你当前的内核版本

uname -r 
centos7.2版本
3.10.0-514.26.2.el7.x86_64

一、首先安装docker

1、初步安装和启动docker
yum update -y
yum -y install docker
systemctl start docker
2、设置镜像
vi /etc/docker/daemon.json
{
  "registry-mirrors": ["https://aj2rgad5.mirror.aliyuncs.com"]
}
3、开放管理端口映射
vi /lib/systemd/system/docker.service
将第11行的ExecStart=/usr/bin/dockerd,替换为:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H tcp://0.0.0.0:7654
2375是管理端口,7654是备用端口
在~/.bashrc中写入docker管理端口
export DOCKER_HOST=tcp://0.0.0.0:2375
source ~/.bashrc
4、重启docker并查看docker版本
systemctl daemon-reload
systemctl restart docker.service
docker version
5、测试docker是否正常安装和运行
docker run hello-world
6、查看结果
Hello from Docker!
This message shows that your installation appears to be working correctly.
7、启动并加入开机启动
$ sudo systemctl start docker
$ sudo systemctl enable docker
8、安装时报错或因之前安装过旧版本docker
Transaction check error:
file /usr/bin/docker from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
file /usr/bin/docker-containerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
file /usr/bin/docker-containerd-shim from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
file /usr/bin/dockerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
9、卸载旧版本的包,再次安装docker
sudo yum erase docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
sudo yum install docker-ce

二、安装nginx

1、查看CentOS的版本
使用一下命令来查看一下当前系统的版本
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
2、查看CentOS的版本
在 CentOS 系统上安装 Nginx ,你得先去添加一个资源库,像这样:

vim /etc/yum.repos.d/nginx.repo

使用vim命令去打开 /etc/yum.repos.d/nginx.repo,如果nginx.repo不存在,就会去创建一个这样的文件,打开以后按一下小键,进入编辑模式,然后复制粘贴下面这几行代码,完成以后按 esc 键退出,再输入:wq (保存并退出)
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

3、yum 命令去安装 nginx,且需要安装SSL模块

完成上边操作以后,我们就可以使用 yum 命令去安装 nginx了
yum update
yum -y install gcc gcc-c++ make automake autoconf libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel
在这里下载nginxwen'd'ban,下载的文件放在/usr/local解压,cd进入解压后的文件夹,执行以下命令
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre
make -j 128 && make install

4、安装完成

Loaded plugins: fastestmirror, langpacks
nginx                          | 2.9 kB   00:00   
nginx/7/x86_64/primary_db                 | 14 kB  00:01   
Loading mirror speeds from cached hostfile
 * base: mirrors.sina.cn
 * extras: mirrors.btte.net
 * updates: mirrors.sina.cn
Resolving Dependencies
--> Running transaction check
---> Package nginx.x86_64 1:1.10.1-1.el7.ngx will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
 Package    Arch      Version            Repository   Size
================================================================================
Installing:
 nginx     x86_64     1:1.10.1-1.el7.ngx      nginx     640 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 640 k
Installed size: 2.1 M
Is this ok [y/d/N]: y
Downloading packages:
nginx-1.10.1-1.el7.ngx.x86_64.rpm             | 640 kB  00:27   
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 Installing : 1:nginx-1.10.1-1.el7.ngx.x86_64               1/1 
----------------------------------------------------------------------
Thanks for using nginx!
Please find the official documentation for nginx here:
* http://nginx.org/en/docs/
Commercial subscriptions for nginx are available on:
* http://nginx.com/products/
----------------------------------------------------------------------
 Verifying : 1:nginx-1.10.1-1.el7.ngx.x86_64               1/1 
Installed:
 nginx.x86_64 1:1.10.1-1.el7.ngx                        
Complete!

5、测试nginx配置文件

当你执行 nginx -t 得时候,nginx会去测试你得配置文件得语法,并告诉你配置文件是否写得正确,同时也告诉了你配置文件得路径:
nginx -t
打印如下:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
说明配置文件成功!

6、配置nginx

假如你已经申请到了https证书,而且有nginx下的版本,通常是两个文件,一个是.key后缀的文件,为证书的私钥,另一个是.pem后缀的文件,为证书的公钥。
nginx.conf 配置如下:
    
    upstream 主机域名 {
       server 主机IP:port;
    }
    # HTTPS server
    #
    server {
        listen       443 ssl;
        server_name  主机域名;

        ssl_certificate      /usr/local/nginx/cert/20180111.pem;
        ssl_certificate_key  /usr/local/nginx/cert/20180111.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
	    proxy_pass   http://主机域名;
            root   html;
            index  index.html index.htm;
        }
    }

如果要让用户用http协议访问时自动跳转https,则还需加上如下配置:

server {
     listen 80;
     server_name www.server.com;
     rewrite ^(.*)$ https://www.server.com;
 }

就是一个url重写而已,注意要把www.server.com改成你实际的主机名。配置完后,用如下命令测试下配置文件有没有错误。如果没有错误,用如下命令

nginx -t //查看配置是否正确
nginx -s reload //服务重启

重启nginx,然后用浏览器测试下用https协议能否正常访问服务器。 如果不能访问,请确认下证书路径有没有问题

7、开启服务器的防火墙

开通443端口
firewall-cmd --zone=public --add-port=443/tcp --permanent

确认是否开通
firewall-cmd --list-ports //如果可以看到443/tcp字样就说明开通了

重新加载下防火墙配置
firewall-cmd --reload
执行完该步骤,大多数服务器应该可以正常用https协议访问。

8、阿里云服务器

需要该步骤的原因是因为云服务器的安全组规则上没有开通相关的端口。
操作步骤:
云服务器ECS---->安全组---->配置规则---->添加安全组规则

注:以前是宿主机安装nginx,当然也可以用docker版的nginx,不过需要将配置文件和日志进行挂载

三、安装gitlab中文社区版

1、先查看docker版本以及状态

sudo docker version

应该会显示类似下面这样的信息。Docker客户端的版本最好在1.10以上。

Client:
 Version:      1.13.1
 API version:  1.26
 Go version:   go1.7.5
 Git commit:   092cba3727
 Built:        Sun Feb 12 02:40:56 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.13.1
 API version:  1.26 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   092cba3727
 Built:        Sun Feb 12 02:40:56 2017
 OS/Arch:      linux/amd64
 Experimental: false

2、下载gitlab社区中文版镜像

sudo docker pull beginor/gitlab-ce:10.7.3-ce.0

3、启动gitlab

用下面的命令启动一个默认配置的Gitlab。如果我们只在本机测试使用的话,将hostname替换为localhost。如果需要让外部系统也能访问的话使用外网IP地址。

docker run \
--detach \
--publish 8443:443 --publish 8888:80 --publish 2201:22 \
--name gitlab \
--restart unless-stopped \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
beginor/gitlab-ce:10.7.3-ce.0

首次启动可能比较慢,需要等待一分钟左右的时间。我们可以使用sudo docker ps命令查看当前所有Docker容器的状态。当它的状态由starting变为运行时间时,说明成功启动了。我们直接使用上面配置的IP地址(如localhost)在浏览器中访问即可。

初次使用需要我们创建默认管理员密码,随便指定一个就行了。然后我们需要注册一个普通用户。以后的使用方法和Github这样的工具很相似了。

4、配置gitlab

gitlab默认密码
sudo chmod -R o+x /var/opt/gitlab/gitlab-rails
Username: root
Password: 5iveL!fe 
修改gitlab配置文件
vim /etc/gitlab/gitlab.rb

5、修改密码

以docker方式启动的,先执行docker exec -it <容器id>bash进入容器之中。
gitlab-rails console
user = User.where(username: ‘root’).first
user.password = ‘password’
user.save!

具体配置如下: https://www.jianshu.com/p/05e3bb375f64