一、Docker安装(CentOS)
1、准备工作
系统要求
以下为官网原文
To install Docker Engine, you need a maintained version of CentOS 7 or 8. Archived versions aren’t supported or tested.
The
centos-extras
repository must be enabled. This repository is enabled by default, but if you have disabled it, you need to re-enable it.The
overlay2
storage driver is recommended.
Docker 支持 64 位版本 CentOS 7/8,并且要求内核版本不低于 3.10。 CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2
存储层驱动)无法使用,并且部分功能可能不太稳定。
卸载旧版本
旧版本的Docker被称为Docker或Docker -engine。 如果安装了这些组件,运行以下命令进行卸载:
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
复制代码
CentOS8额外设置
由于 CentOS8 防火墙使用了 nftables
,但 Docker 尚未支持 nftables
, 我们可以使用如下设置使用 iptables
:
更改 /etc/firewalld/firewalld.conf
# FirewallBackend=nftables
FirewallBackend=iptables
复制代码
2、使用仓库方式进行安装
设置仓库
在新主机上首次安装Docker引擎之前,需要设置Docker仓库。安装yum-utils包(用到yum-config-manager工具)并设置仓库,鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。
$ sudo yum install -y yum-utils
$ sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 官方源
# $ sudo yum-config-manager \
# --add-repo \
# https://download.docker.com/linux/centos/docker-ce.repo
复制代码
如果需要测试版本的 Docker 请执行以下命令:
$ sudo yum-config-manager --enable docker-ce-test
复制代码
安装Docker引擎
安装最新版本的Docker Engine和容器
$ sudo yum install docker-ce docker-ce-cli containerd.io
复制代码
3、启动Dokcer
$ sudo systemctl enable docker
$ sudo systemctl start docker
复制代码
4、测试Docker安装是否正确
$ docker run --rm hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:cc15c5b292d8525effc0f89cb299f1804f3a725c8d05e158653a563f15e4f685
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
复制代码
5、后置配置
镜像加速
使用阿里云镜像加速服务
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
复制代码
registry-mirrors
参数即镜像加速地址,开通服务获取即可。
添加内核参数
如果在 CentOS 使用 Docker 看到下面的这些警告信息:
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
复制代码
请添加内核配置参数以启用这些功能。
$ sudo tee -a /etc/sysctl.conf <<-EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
复制代码
然后重新加载 sysctl.conf
即可
$ sudo sysctl -p
复制代码
二、配置Docker对外开放接口
1、配置对外接口
- 修改docker配置文件
vim /usr/lib/systemd/system/docker.service
复制代码
找到 ExecStart=/usr/bin/dockerd在后面添加tcp://0.0.0.0:端口号
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:9004 -H fd://
复制代码
或者直接执行
sed -i 's#/usr/bin/dockerd#& -H tcp://0.0.0.0:9004#' /usr/lib/systemd/system/docker.service
复制代码
- 重启docker
systemctl restart docker
复制代码
2、开放端口宿主机访问
- centos开放端口宿主机访问
firewall-cmd --add-port=9004/tcp --permanent
firewall-cmd --reload
复制代码
- 查询端口是否开启
firewall-cmd --query-port=9004/tcp
复制代码
- 除此之外还可以开机自启动,将firewalld起起来即可,并且允许其自启动
systemctl start firewalld
systemctl enable firewalld
复制代码
3、查看docker版本信息
- 浏览器访问:
http://xx.xx.xx.xx:9004/version
复制代码
看到json信息则表示配置成功
三、安装配置Gitlab
1、拉取Gitlab镜像
docker pull gitlab/gitlab-ce
复制代码
2、构建启动容器
- 创建gitlab日志,数据,配置的存放路径,通常会在构建容器的时间,会把配置 (etc) 、 日志 (log) 、数据 (data) 放到容器外面,方便后期数据迁移或者修改配置
sudo mkdir -p /docker/gitlab/config /docker/gitlab/logs /docker/gitlab/data
复制代码
启动容器
sudo docker run --d \
--hostname gitlab \
--publish 8011:443 \
--publish 8012:8012 \
--publish 8013:22 \
--privileged=true \
--name gitlab \
--restart always \
-v /docker/gitlab/config:/etc/gitlab \
-v /docker/gitlab/logs:/var/log/gitlab \
-v /docker/gitlab/data:/var/opt/gitlab \
-v /docker/gitlab/logs/reconfigure:/var/log/gitlab/reconfigure \
gitlab/gitlab-ce:latest
复制代码
添加配置
vim /docker/gitlab/config/gitlab.rb
复制代码
- 添加下面3行
#配置http协议所使用的访问地址,不加端口号默认为80
external_url 'http://xx.xx.xxx.xxx:8012'
#配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = 'xx.xx.xxx.xxx'
#此端口是run时22端口映射的8013端口
gitlab_rails['gitlab_shell_ssh_port'] = 8013
#保存推出
:wq
复制代码
- 看个人需要,一般而已都会限制内存,也可以在docker启动的时候配置,命令为-m 4G
docker update --memory 4096m --memory-swap -1 gitlab
复制代码
- 重启gitlab
docker restart gitlab
复制代码
- 进入gitlab容器
docker exec -it gitlab bash
复制代码
- 重新载入配置文件,并开启
gitlab-ctl reconfigure
gitlab-ctl start
复制代码
3、修改root用户密码
- 进入gitlab控制台
gitlab-rails console -e production
复制代码
- 获得用户数据,修改用户密码
user = User.where(id: 1).first
user.password='2YkDixw6xJiD/68kCsAZBu9W9ZhGdRlT0YykDYiOvOAE=1'
user.password_confirmation='2YkDixw6xJiD/68kCsAZBu9W9ZhGdRlT0YykDYiOvOAE=1'
user.save!
quit
复制代码
- 重启gitlab需要等待一段时间才能访问,否则会出现502,如果出现502,还有可能是内存不够的原因,建议查看docker容器的gitlab日志
docker restart gitlab
复制代码
四、安装配置Jenkins
1、准备工作
安装jdk
- 上传jdk压缩包到自定义目录,这里提供从官网拉下来的jdk1.8的linux版本
链接: pan.baidu.com/s/1DQxkbr4J…
提取码: qxu5
- 解压jdk压缩包到指定目录
tar -zxvf jdk-8u202-linux-x64.tar.gz -C /opt/
复制代码
安装maven
- 上传jdk压缩包到自定义目录,这里提供从官网拉下来的maven-3.8.4版本
链接: pan.baidu.com/s/198GSQQZT…
提取码: 87qb
tar -zxvf apache-maven-3.8.4-bin.tar.gz -C /opt/
复制代码
安装git
这里使用yum安装
yum -y install git
复制代码
配置环境变量
- 修改环境变量配置文件
vim /etc/profile
复制代码
- 在最后一行添加java环境变量和maven环境变量
#java环境配置
export JAVA_HOME=/opt/jdk1.8.0_202
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=./:JAVA_HOME/lib:$JRE_HOME/lib
#maven环境配置
export M2_HOME=/opt/apache-maven-3.8.4
#path
export PATH=/bin:/usr/bin:/sbin:/usr/sbin:$JAVA_HOME/bin:$M2_HOME/bin:$PATH
复制代码
- 立即重载配置
source /etc/profile
复制代码
检查安装是否完成
- java
java -version
复制代码
- maven
mvn -v
复制代码
- git
git --version
复制代码
2、安装jenkins
拉取镜像
docker pull jenkinsci/blueocean
复制代码
运行jenkins容器
docker run -d --name docker-jenkins -p 8008:8080 -p 50000:50000 jenkinsci/blueocean
复制代码
访问jenkins主页
浏览器打开ip:8008
, 正常情况下会出现解锁jenkins
页面
- 查看jenkins初始密码
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
复制代码
将打印出的密码粘贴到管理员密码
输入框中, 点击继续进入配置页面,这里选择安装推荐的插件,可能会有安装失败的插件,重试即可
- 创建用户
插件安装完成后,输入信息创建用户, 点击保存并完成
即可进入jenkins主页
- jenkins主页
3、配置
下面对 gitlab 以及 jenkins 进行配置
在容器内生成 ssh 公钥
- 进入容器
docker exec -it jenkins bash
复制代码
- 生成密钥
ssh-keygen -t rsa -C [email protected]
复制代码
连续回车三下生成密钥
- 查看密钥
ls ~/.ssh
复制代码
可从容器中取出密钥文件
docker cp jenkins:/var/jenkins_home/.ssh /tmp/
复制代码
然后ftp下载文件查看密钥文件内容
gitlab配置公钥
gitlab主页右上角找到Preferences
菜单打开,找到SSH Keys
栏,将从上面获取id_rsa_pub
文件中的公钥配置到SSH keys中
jenkins配置
主要配置介绍
- 配置凭据
- 找到
Manage Credentials
菜单 - 点击
全局凭据
- 点击
添加凭据
进行如下配置:
其中Key为之前在jenkins容器中生成的RSA私钥, id_rsa
文件中的内容
- 系统配置中配置jdk,maven路径
- 全局工具配置,配置jdk,maven,git路径和上面的路径要保持一致(先忽略出现的黄字警告,后面会进行解决)
五、项目配置
1、jenkins新建项目
2、进行如下配置
3、保存项目并构建
查看控制台输出,出现如下图所示输出表示jenkins已经可以从gitlab上拉取代码到服务器了
接下来的一章介绍的是jenkins正式部署项目,并持续集成,敬请期待。