宿主机环境:git
一、查找镜像github
docker search gitlab
二、拉取镜像docker
docker pull gitlab/gitlab-ce
三、构建容器shell
# 切换目录 mkdir /usr/local/docker cd /usr/local/docker touch docker-compose.yml
docker-compose.yml内容以下:bash
version: "3.7" services: gitlab: image: gitlab/gitlab-ce restart: on-failure container_name: gitlab ports: - '8080:80' - '8443:443' - '222:22' volumes: - /usr/local/docker/gitlab/data:/var/opt/gitlab - /usr/local/docker/gitlab/logs:/var/log/gitlab - /usr/local/docker/gitlab/conf:/etc/gitlab
四、启动容器ssh
docker-compose up -d
这样启动容器以后,不管使用ssh仍是http方式进行clone时,显示的地址中的主机名都是容器产生的随机id,这就致使外部主机没法解析。gitlab
解决方法:测试
vi gitlab/conf/gitlab.rb # 修改external_url和gitlab_ssh_host属性为本身虚拟机的访问地址,而后去掉注释,不要加端口号 external_url 'http://192.168.172.142' gitlab_rails['gitlab_ssh_host'] = '192.168.172.142'
同时若是在上面指定的端口映射不是默认的,好比上面将ssh端口映射到虚拟机的222端口,这时还须要修改:编码
gitlab_rails['gitlab_shell_ssh_port'] = 222
像github同样,要使用ssh克隆代码,先要配置ssh秘钥。url
一、在物理机生成秘钥
ssh-keygen -t rsa -b 4096 -C "your email" cd <用户目录>/.ssh/ # 拷贝 id_rsa.pub
二、拷贝到gitlab
点击头像
> settings
> 左导航栏
> SSH keys
三、建立项目
建立项目,测试ssh
github和gitlab都要用ssh秘钥,而生成的秘钥文件都是id_rsa.pub,为了区分开来,能够这样作:
一、在 .ssh目录下建立
config
,注意文件名和编码,内容以下:
Host github.com Preferredauthentications publickey IdentityFile ~/.ssh/github_rsa
单独指定github的ssh秘钥文件为github_rsa
,gitlab使用默认的id_rsa
文件;
二、生成github的秘钥文件
cd <用户目录>/.ssh/ ssh-keygen -t rsa -b 4096 -C "your email" -f github_rsa
三、公钥拷贝到github
四、将私钥添加到
ssh-agent
打开git bash
ssh-agent bash ssh-add ~/.ssh/github_rsa
而后就OK了。