在之前创建的 repository server 上安装下面的服务。
1)搭建 CoreDNS 服务
CoreDNS服务用于开发环境中服务器主机名的解析。开发环境中的服务器通过网关提供的DHCP服务进行MAC-IP的绑定,再利用CoreDNS服务,进行IP和主机名的映射。
先从 Docer Hub 上拉取 CoreDNS 镜像。
代码语言:javascript复制docker pull coredns/coredns:1.8.3
停止上默认启动的 DNS 服务。
在下载 coredns 镜像之前先不要停止 DNS 服务,否则解析不到 docker 镜像仓库服务器。
代码语言:javascript复制sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
在目录 /home/devops/dockerSrvStorage/coredns 下创建 2 个文件 Corefile hostsfile,内容如下:
192.168.0.1 是家里无线路由器的 IP 地址。我这里用的是 TL-WDR7650 千兆易展无线路由。
代码语言:javascript复制# ls
Corefile hostsfile
# cat Corefile
.:53 {
hosts /etc/coredns/hostsfile {
fallthrough
}
forward . 192.168.0.1:53
log
}
把之前创建的 Guest 虚拟机 IP 都加进来。
代码语言:javascript复制# cat hostsfile
devops@repositoryServer:~/dockerSrvStorage/coredns$ cat hostsfile
192.168.0.114 repositoryServer dnsServer gitlab jenkins gitlab.telbox.cn jenkins.telbox.cn
192.168.0.112 devopServer0
192.168.0.113 devopServer1
192.168.0.115 devopServer2
192.168.0.106 k8s-master-0
192.168.0.107 k8s-node-0
192.168.0.109 k8s-node-1
192.168.0.108 k8s-node-2
192.168.0.114 basehost0
192.168.0.111 ubuntu20Server
运行 CoreDNS 镜像
代码语言:javascript复制docker run -it -d --net=host
--name=coredns --restart=always
-v /home/devops/dockerSrvStorage/coredns:/etc/coredns/
coredns/coredns:1.8.3
-conf /etc/coredns/Corefile
备注: –net=host 要指定,如果不指定,在同宿主机的容器中无法查询 DNS。如果指定了该项,则无须指定-p 选项。默认使用宿主机的端口。
Reference:
BIND, Dnsmasq 等常见 DNS Server(却不包含 CoreDNS): https://computingforgeeks.com/bind-vs-dnsmasq-vs-powerdns-vs-unbound/ 安装 Core DNS Docker: https://blog.csdn.net/weixin_36938307/article/details/105390004
2)GitLab
各种 docker 服务一般都需要持久化映射,以方便配置、数据的保存。本地使用 /home/devops/dockerSrvStorage 作为各种应用存储的根目录。 其中参数 –hostname gitlab.telbox.cn 定义了用户访问 gitlab 服务的主机域名。
代码语言:javascript复制mkdir -p /home/devops/dockerSrvStorage/gitlab
sudo docker pull gitlab/gitlab-ce:13.9.2-ce.0
sudo docker run --detach
--hostname gitlab.telbox.cn
--publish 9181:443 --publish 9180:80 --publish 9182:22
--name gitlab
--restart always
--volume /home/devops/dockerSrvStorage/gitlab/config:/etc/gitlab
--volume /home/devops/dockerSrvStorage/gitlab/logs:/var/log/gitlab
--volume /home/devops/dockerSrvStorage/gitlab/data:/var/opt/gitlab
gitlab/gitlab-ce:13.9.2-ce.0
如有需要,可进入 GitLab 容器进行配置。
代码语言:javascript复制sudo docker exec gitlab gitlab-ctl reconfigure
第一次访问安装好的 GitLab 服务http://gitlab.telbox.cn:9180/需要设置root用户的口令。
Reference: https://www.jianshu.com/p/080a962c35b6 https://zhuanlan.zhihu.com/p/63786567
3)Jenkins
代码语言:javascript复制mkdir -p /home/devops/dockerSrvStorage/jenkins
sudo docker run -p 9183:8080 -p 9184:50000
--name jenkins -d
-v /home/devops/dockerSrvStorage/jenkins:/var/jenkins_home
jenkins/jenkins:lts
启动后,进入 docker 查看初始密码。首次访问 jenkins.telbox.cn:9183 时会用到这个密码。
代码语言:javascript复制sudo docker exec -it jenkins bash
jenkins@e061aa64ed7b:/$ cat /var/jenkins_home/secrets/initialAdminPassword
访问 jenkins.telbox.cn:9183 输入初始密码,选择安装建议的插件。 插件安装完毕后,要求输入 Jenkins URL,这里输入 jenkins.telbox.cn:9183
The Jenkins URL is used to provide the root URL for absolute links to various Jenkins resources. That means this value is required for proper operation of many Jenkins features including email notifications, PR status updates, and the BUILD_URL environment variable provided to build steps. The proposed default value shown is not saved yet and is generated from the current request, if possible. The best practice is to set this value to the URL that users are expected to use. This will avoid confusion when sharing or viewing links.
如果需要,可以给 Jenkins 配置日志:
代码语言:javascript复制mkdir -p /home/devops/dockerSrvStorage/jenkins/data
cat > /home/devops/dockerSrvStorage/jenkins/data/log.properties <<EOF
handlers=java.util.logging.ConsoleHandler
jenkins.level=FINEST
java.util.logging.ConsoleHandler.level=FINEST
EOF
docker run --name myjenkins -p 8080:8080 -p 50000:50000 --env JAVA_OPTS="-Djava.util.logging.config.file=/var/jenkins_home/log.properties" -v `pwd`/data:/var/jenkins_home jenkins
如果 Jenkins 插件安装比较慢,可以使用国内插件镜像源,参考https://blog.csdn.net/oYinHeZhiGuang/article/details/104867525。
Reference: https://github.com/jenkinsci/docker/blob/master/README.md https://www.cnblogs.com/xiaoqi/p/docker-jenkins-cicd.html