Docker 安装Gitlab

  • 搜索相关Gitlab镜像,以免错过更好的第三方镜像

    docker search gitlab
    
  • 下载选定的Gitlab镜像,这里我们选择下载量最多的官方镜像,如果未指定版本则默认为最新版本,latest版本

    docker pull gitlab/gitlab-ce
    
  • 运行镜像

    docker run -d -p 80:80 -p 2222:22 -v $PWD/gitlab/config:/etc/gitlab -v $PWD/gitlab/logs:/var/log/gitlab -v $PWD/gitlab/data:/var/opt/gitlab --name gitlab --restart always --privileged=true gitlab/gitlab-ce
    

    容器启动后,会进行大量的初始化,尝试访问宿主机80端口,大约几分钟后会出现一个确认初始化root用户密码的界面,先输入初始化密码,之后回到容器这边,修改$PWD/gitlab/config/gitlab.rb文件,配置克隆地址等

    # 配置`http协议`的访问地址
    external_url 'http://192.168.1.113'
    
    # 配置ssh协议访问地址
    gitlab_rails['gitlab_ssh_host'] = '192.168.1.113'
    # 配置ssh协议访问端口,此端口是启动容器时宿主机22端口映射给容器的2222端口
    gitlab_rails['gitlab_shell_ssh_port'] = 2222
    
  • 端口配置
    但在我们大多数的场景中可能没有80端口可以使用了,因此我们需要将gitlab设置为其他端口如8081

    docker run -d -p 8081:80 -p 2222:22 -v $PWD/gitlab/config:/etc/gitlab -v $PWD/gitlab/logs:/var/log/gitlab -v $PWD/gitlab/data:/var/opt/gitlab --name gitlab --restart always gitlab/gitlab-ce
    

    容器启动后,尝试访问宿主机8081端口,直到出现一个确认初始化root用户密码的界面(确认初始化完毕),之后修改$PWD/gitlab/config/gitlab.rb文件

    # 配置`http协议`的访问地址,端口为宿主机映射端口
    external_url 'http://192.168.1.113:8081'
    
    # 配置ssh协议访问地址
    gitlab_rails['gitlab_ssh_host'] = '192.168.1.113'
    # 配置ssh协议访问端口,此端口是启动容器时宿主机22端口映射给容器的2222端口
    gitlab_rails['gitlab_shell_ssh_port'] = 2222
    

    由于gitlab将默认的端口更改为8081后,我们需要重新生成容器

    docker stop gitlab
    docker rm gitlab
    # 修改容器内的端口为8081
    docker run -d -p 8081:8081 -p 2222:22 -v $PWD/gitlab/config:/etc/gitlab -v $PWD/gitlab/logs:/var/log/gitlab -v $PWD/gitlab/data:/var/opt/gitlab --name gitlab --restart always gitlab/gitlab-ce
    
  • HTTPS支持(同时也相当于做了一个端口转发配置,更改了默认端口)

    docker run -d -p 8443:443 -p 8081:80 -p 2222:22 -v $PWD/gitlab/config:/etc/gitlab -v $PWD/gitlab/logs:/var/log/gitlab -v $PWD/gitlab/data:/var/opt/gitlab --name gitlab --restart always gitlab/gitlab-ce
    

    容器启动后,尝试访问宿主机8081端口,直到出现一个确认初始化root用户密码的界面(确认初始化完毕),之后修改$PWD/gitlab/config/gitlab.rb文件

    # 配置`https协议`的访问地址,端口为宿主机映射端口
    external_url 'https://192.168.1.113:8443'
    
    # 配置ssh协议访问地址
    gitlab_rails['gitlab_ssh_host'] = '192.168.1.113'
    # 配置ssh协议访问端口,此端口是启动容器时宿主机22端口映射给容器的2222端口
    gitlab_rails['gitlab_shell_ssh_port'] = 2222
    
    # gitlab支持https是通过nginx实现的
    nginx['redirect_http_to_https'] = true
    nginx['redirect_http_to_https_port'] = 80
    nginx['listen_port'] = 443
    

    如果使用https模式git客户端需执行git config --global http.sslVerify false,否则克隆时会报错SSL certificate problem: self signed certificate

  • 用户配置(本地下载安装git客户端工具)

    • HTTP协议
      目录中右键,选择Git Bash Here,执行克隆代码

      # gitlab项目中的http协议克隆地址
      git clone https://192.168.1.113:8443/money/test.git
      

    系统会弹出用户名密码的输入框,输入正确的用户名密码后,系统会保存凭据(控制面板 -> 凭据管理器 -> window凭据)以方便后续的pull/push等操作

  • SSH协议
    目录中右键,选择Git Bash Here,生成密钥对,再通过将密钥的公钥与gitlab用户绑定,即可通过生成的密钥对中的存在于本地的私钥与gitlab服务器建立信任的通信,这样同一密钥对可向多个远程代码库建立信任的通信,同时也不需要多余的用户名密码等

    # 生成密钥对,-C代表注释内容,我这里使用的用户名
    ssh-keygen -t rsa -C root
    

    后面直接回车,但需注意密钥对生成的路径,一般情况为(与系统使用的用户相关):C:\Users\Administrator,进入密钥目录,复制公钥id_rsa.pub的内容;接着进入gitlab的web界面的用户 -> 设置 -> SSH Keys,添加复制的公钥内容;最后选择Git Bash Here,执行克隆代码

    git clone ssh://[email protected]:2222/money/test.git
    

    会让你确认是否建立连接,输入yes,在密钥对生成的路径中会多生成一个文件known_hosts,存储无需确认的连接信息

你可能感兴趣的:(Docker 安装Gitlab)