宿主機環境: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了。