学习了Docker的入门篇和进阶篇,简单搞一个CI/CD的实战!

1. 安装Docker

#1. 卸载旧版本
$ yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
#2. 需要的安装包
$ yum install -y yum-utils
#3. 设置镜像的仓库(阿里云的,十分的快!推荐)
$ yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#4. centos 8更新yum软件包索引
$ yum makecache  或者  dnf makecache
#4. 安装docker docker-ce 社区版(官方推荐,一般使用的也是ce) 而ee是企业版
$ yum install docker-ce docker-ce-cli containerd.io
#5. 启动docker
$ systemctl start docker
#6. 使用docker version查看是否按照成功(如下图)
$ docker version

docker gitlab 设置 gitlab ci docker in docker_docker

2. 安装并配置GitLab

2.1 Docker安装gitlab

1. 查看端口是否占用
netstat -tunlp | grep 80 | grep 22 | grep 443

2. 拉取镜像并运行
sudo docker run -d \
  --hostname 129.204.*.** \
  -p 4430:443 -p 800:80 -p 220:22 \
  --name gitlab \
  --restart always \
  -v /usr/local/docker/gitlab/config:/etc/gitlab \
  -v /usr/local/docker/gitlab/logs:/var/log/gitlab \
  -v /usr/local/docker/gitlab/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ce:latest

3. 重置登录密码
查看gitlab容器:docker ps
进入gitlab容器内部:docker exec -it gitlab /bin/bash
打开控制台(耐心等待一会):gitlab-rails console -e production
找到用户:user = User.where(id: 1).first
重置密码:user.password = '12345678'
确认密码:user.password_confirmation = '12345678'
保存:user.save!
退出控制台:exit
退出容器:ctrl+p+q(Mac:control+p+q)

访问:http://129.204.*.**:800/ 使用 root  == 12345678 登录成功!

2.2 配置GitLab

2.2.1 配置中文显示(配置完别忘记保存奥!保存后刷新生效)

docker gitlab 设置 gitlab ci docker in docker_docker_02

 2.2.2 创建组

docker gitlab 设置 gitlab ci docker in docker_gitlab_03

docker gitlab 设置 gitlab ci docker in docker_docker gitlab 设置_04

docker gitlab 设置 gitlab ci docker in docker_jenkins_05


 2.2.3 创建项目

docker gitlab 设置 gitlab ci docker in docker_jenkins_06

docker gitlab 设置 gitlab ci docker in docker_jenkins_07

观察空仓库给出的指令,可以发现一个问题:
http协议的地址不是按照我们启动时设定的800,为什么?使用该http协议的地址进行浏览器访问报404,怎么解决?
原因:容器启动时,官方默认是80:80,但我们更改了端口映射800:80,所以需要配置一下。
解决:配置ssh协议地址和http协议地址

4. 配置ssh协议地址和http协议地址
    4.1 更改gitlab.rb的ssh协议配置
      # 进入容器
      docker exec -it gitlab /bin/bash
      # 编辑
      vim /etc/gitlab/gitlab.rb
      # 配置ssh协议所使用的访问地址和端口;端口是run时22端口映射的220端口
      gitlab_rails['gitlab_ssh_host'] = '129.204.7.139'
      gitlab_rails['gitlab_shell_ssh_port'] = 220
      # 保存退出
      wq
      # 配置生效
      gitlab-ctl reconfigure

    4.2 配置http协议所使用的访问地址(跟4.1,此时还在容器内部)
      # 编辑
      vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
      # 配置ssh协议所使用的访问地址和端口;端口是run时22端口映射的220端口
      ## GitLab settings
      gitlab:
        ## Web server settings (note: host is the FQDN, do not include http://)
        host: 129.204.7.139
        port: 800 # 更改成自己的端口
        https: false
      # 保存退出
      wq
      # 重启生效
      gitlab-ctl restart

此刻,刷新 http://129.204.*.**:800/,http协议和ssh协议的ip后面都加上了端口号,浏览器访问http协议可正常访问gitlab代码仓库。
完成代码的关联后就可以愉快的使用私服Gitlab仓库了!

3. Docker 安装Jenkins

3.1 Docker安装Jenkins

sudo docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -u root \
  -v /usr/local/docker/jenkins_home:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker \
  jenkins/jenkins:latest-jdk8

坐等启动成功,http://129.204.*.**:8080/

docker gitlab 设置 gitlab ci docker in docker_jenkins_08

3.2 查看解锁密码

第一种方法(服务器):
cat /usr/local/docker/jenkins_home/secrets/initialAdminPassword

第二种方法(容器内):
docker exec -it jenkins /bin/bash
cat /var/jenkins_home/secrets/initialAdminPassword

3.3 安装插件

建议选择Install suggested plugins,安装过程大概半个多小时。

docker gitlab 设置 gitlab ci docker in docker_jenkins_09

docker gitlab 设置 gitlab ci docker in docker_jenkins_10

3.4 设置管理员用户

docker gitlab 设置 gitlab ci docker in docker_gitlab_11

3.5 配置完成

docker gitlab 设置 gitlab ci docker in docker_docker gitlab 设置_12