一、安装docker
1,先卸载掉旧版本
$ sudo apt-get remove docker docker-engine docker.io containerd runc
2,更新apt包
$ sudo apt-get update
3,安装软件包以允许apt通过https使用存储库
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
4,添加官方GPG秘钥
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
5,设置稳定存储库
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
6,更新apt包索引
$ sudo apt-get update
7,推荐直接安装最新版本的docker
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
8,测试运行hello world镜像
$ sudo docker run hello-world
9、其他Docker操作
卸载docker引擎
$ sudo apt-get purge docker-ce
docker虽然卸载,但是镜像还会残留,卸载镜像命令
$ sudo rm -rf /var/lib/docker
docker的常用命令
启动docker
systemctl start docker
停止docker:
systemctl stop docker
重启docker:
systemctl restart docker
开机启动:
systemctl enable docker
查看docker概要信息
docker info
查看docker帮助文档
docker --help
列出容器
docker ps
二、docker部署Gitlab
1,创建容器外挂目录
创建三个目录分别存放这些数据,便于GitLab的维护和迁移。即时是GitLab被我们玩坏了,只要这三个文件还存在,就可以很简单的重建
sudo mkdir -p /gitlab/data
sudo mkdir -p /gitlab/logs
sudo mkdir -p /gitlab/config
2,启动gitlab容器
sudo docker run --detach \
--publish 8443:443 --publish 8000:80 --publish 2222:22 \
--name gitlab \
--restart always \
--volume /gitlab/config:/etc/gitlab \
--volume /gitlab/logs:/var/log/gitlab \
--volume /gitlab/data:/var/opt/gitlab \
-log-driver=none \
beginor/gitlab-ce:11.1.4-ce.0
参数说明
- –detach 设置容器后台运行
- –publish 暴露 https、http和ssh端口,关于端口下文会细说
- –name 容器名称
- –restart always 每次启动容器就重启GitLab
- –volume 设置GitLab数据挂载点
第一次启动容器会很慢,需要三分钟左右。可以随时通过docker ps 查看启动进度。当STATUS由starting变为health时,就说明启动成功了。
另外,其中的8000:80就是docker内部80对外部8000的映射,外部访问时就用8000端口,内部实际映射为80。
3,配置GitLab
现在就可以通过地址:http://IP:8000访问GitLab,但是为了正常使用,我们还需要配置GitLab。
我们需要修改三个参数:
external_url
ssh 端口
nginx监听端口
GitLab的配置文件在我们外挂的磁盘下/gitlab/config/gitlab.rb
修改external_url
sudo vim /gitlab/config/gitlab.rb
# 可以通过`/`搜索需要修改的参数
external_url 'http://IP:8000' # IP填写GitLab部署的服务器的IP
修改ssh端口
如果不修改ssh的端口,clone和提交代码时一直需要输入密码。
因为通过ssh链接gitlab时默认访问的是22端口,但是使用docker部署,22端口在宿主机一直被占用,所以映射为2222端口,需要修改gitlab配置文件
### GitLab Shell settings for GitLab
gitlab_rails['gitlab_shell_ssh_port'] = 2222
# gitlab_rails['gitlab_shell_git_timeout'] = 800
修改nginx监听的端口
nginx['listen_port'] = 80
这点比较重要,否则有可能造成ssh链接异常
现在配置已经完成,重启容器即可使用
docker restart gitlab
访问
GitLab的访问地址是:http://IP:8000/。第一次访问会让用户修改密码,修改成功后就可以通过账号(root)和该密码登录GitLab。
当然为了正常使用GitLab,添加SSH公钥是必须的。GitLab的使用方式和GitHub基本一致。