本文主要讲述了自己jenkins的安装,构建,持续集成,持续部署,Docker Desktop的使用中碰到的一些问题和解决方法
早上十点开始准备这件事,直到现在下午两点四十才完成,期间经历了很多成长
一开始用的是网上弄来的资料里的tar包.解压之后很多插件无法下载.忘了截图了.大概的意思就是我当前的jenkins版本过低
接着删除了现有的jenkins容器和镜像,直接docker pull jenkins拉取最新的镜像.当容器成功运行后.输完生成的密码,An error occurred during installation: No such plugin: cloudbees-folder.直接报这个插件找不到.
然后来csdn上寻求经验,有大神的帖子是需要 docker pull jenkins/jenkins.拉取是jenkins/jenkins的最新镜像.下载插件的时候,又是报了很多当前版本不满足的提示,搞到这里人有些抓狂了.好在我耐心不错
最新的镜像都不行,去哔站看看教程.发现有老师在jenkins上面下载的war包.我也去下载了一个,上传到服务器上去,java -jar jenkins.war.当前java版本不支持.需要jdk11才行.想着java8更加通用点,自己写代码用的也是java8.放弃了更新.
然后又回到了docker官网去搜镜像.搜索jenkins/jenkins.在下面找到了很多版本.后面有带jdk11.jdk17的字眼,应该也是对jdk有要求.往后面翻.看到了2.404-alpine.试一试
docker pull jenkins/jenkins:2.404-alpine
docker run \
--name jenkins \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins-home:/var/jenkins_home \
--privileged=true \
-d \
jenkins/jenkins:2.404-alpine
这是进入挂载的数据卷
cd /var/lib/docker/volumes/jenkins-home/_data
分别执行下面三段命令,修改原有的地址,需要在上面的目录下执行
sed -i 's#https://updates.jenkins.io/update-center.json#https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json#g' /var/lib/docker/volumes/jenkins-home/_data/hudson.model.UpdateCenter.xml
sed -i 's#http://www.google.com#https://www.baidu.com#g' updates/default.json
sed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' updates/default.json
这里是重启容器
docker restart jenkins
此时在页面就可以访问了,需要密码,密码在这个文件下
/var/lib/docker/volumes/jenkins-home/_data`secrets/initialAdminPassword
或者通过下面的命令查看运行时日志也能看到
docker logs jenkins
后面的都是一路绿色.接下来的持续集成到也会在这里慢慢更新
接着上面的来,说说docker.关于docker安装的一些常见应用.我有一篇帖子记录了.感兴趣的可以看看
这一段就了一下docker的镜像仓库吧
阿里云的镜像仓库地址 https://cr.console.aliyun.com/cn-hangzhou/instances
复制一下这个地址.每个人的都不一样,无需花钱.
vi /etc/docker/daemon.json
修改成这个样子,下面的一个是把docker自己的私服仓库添加到可信的,一会也会说道
systemctl restart docker
重启一下docker
先登录上阿里云镜像仓库,其实都有详细说明.下面说docker自己的私服了
docker自己的私服
docker run --name registry --restart=always -p 5000:5000 -v registry-data:/var/lib/registry registry
因为前面已经添加了授信的,也重启了.所有可以直接用了
如图,我这里有个nginx镜像.把镜像上传到私服去
打包
docker tag nginx:latest 127.0.0.1:5000/nginx:1.0
上传
docker push 127.0.0.1:5000/nginx:1.0
拉取
docker pull 127.0.0.1:5000/nginx:1.0
镜像仓库的删除我还要接着去学习.感觉有点难搞
jenkins的镜像构建
总的经过了15次的构建才能成功,一路的问题解决.给新人成长了不少
主要就是我的idea里面的pom文件配置.配置如下
<build>
<finalName>app</finalName>
<plugins>
<!-- 打jar包时如果不配置该插件,打出来的jar包没有清单文件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<configuration>
<!--阿里云仓库地址,anxing223命名空间,我在这里也翻了很大的坑,主要是命名空间-->
<imageName>registry.cn-shanghai.aliyuncs.com/anxing223/${project.artifactId}:${project.version}</imageName>
<baseImage>java:8-alpine </baseImage>
<entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<serverId>ali-docker</serverId>
<registryUrl>registry.cn-shanghai.aliyuncs.com</registryUrl>
<!--自己的虚拟机地址-->
<dockerHost>http://127.0.0.1:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
很小的一个项目,没有什么东西.上传到gitee上面去了.和jenkins做持续集成的.现在做jenkins的一些配置
需要把maven上传到服务上
请注意.maven的settings文件里也需要做相应的配置
<servers>
<!-- 我在这里翻了很大的坑.跟着别人填写邮箱.推镜像的时候推不上去 -->
<server>
<id>ali-docker</id>
<!-- 阿里云用户名,有的人用户名就是邮箱 -->
<username>用户名</username>
<!-- 阿里云的密码 -->
<password> 12345678 </password>
<configuration>
<!-- 阿里云镜像加速的用户名邮箱 -->
<email>123123123123@163.com</email>
</configuration>
</server>
</servers>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
直接划到最下面.配完后保存
填写项目地址.这里传到了gitee上,因为是公开的,所以不需要配置密码.现在的gitee默认是私有.所以记得要配置密码之类的,密码就点下面的添加
这里的就是maven插件,清理,打包啥的.功能idea里的那些
clean package -DskipTests docker:build -DpushImage
我到这里构建了一次,还是翻车了.错误提示如下
[ERROR] Failed to execute goal com.spotify:docker-maven-plugin:1.2.0:build (default-cli) on project docker_demo: Exception caught: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: com.spotify.docker.client.shaded.org.apache.http.conn.HttpHostConnectException: Connect to 124.220.158.127:2375 [/124.220.158.127] failed: Connection refused (Connection refused) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[JENKINS] Archiving /var/jenkins_home/workspace/docker_demo/pom.xml to com.itheima.sh/docker_demo/1.0/docker_demo-1.0.pom
[JENKINS] Archiving /var/jenkins_home/workspace/docker_demo/target/app.jar to com.itheima.sh/docker_demo/1.0/docker_demo-1.0.jar
channel stopped
Finished: FAILURE
大概就是说docker守护进程的问题,上面pom文件里不是配置了一个2375的端口吗.问题出在了这里
我通过这个命令查看发现并没有2375的字眼.所有该端口并没有使用
sudo systemctl status docker
通过该命令修改文件
sudo nano /lib/systemd/system/docker.service
或者使用vi编辑
sudo vi /lib/systemd/system/docker.service
在文件中找到这一行,前面的一段覆盖成下面这个样子,主要就是添加端口暴露,Ctrl+O保存,Ctrl+x退出
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375
重新加载文件
sudo systemctl daemon-reload
重新启动docker
sudo systemctl restart docker.service
到此再去重新构建jenkins.就成功了
太不容易了.到这里只是构建成功,还没有部署.接下来会学习Rancher进行部署,持续更新中
自动构建(持续集成)
这里用的代码托管平台的gitee.需要在jenkins中安装插件,我这里已经安装好了
生成好的令牌记得存一下.只展示一次,在jenkins中需要使用到
旁边有个测试按钮.可以测一下是否能通
修改任务的配置
这里需要生成密码给git使用.然后点击保存
gitee配置
这个地址需要复制一下.配置在gitee的webhooks中
密码就是刚刚jenkins上生成的那个,然后点击添加
添加完成后可以测试一下
持续集成到这里就弄完拉
持续部署
持续部署这边用的是Rancher的第一个版本.
docker pull rancher/server
docker run -d --name=myrancher -p 8088:8080 rancher/server
我这里是jenkins部署在一台机器上.,rancher部署在一台机器上.用的都是轻量级云服务器.最低配的.一台起这两个服务必崩
这个页面我什么也没设置,但是需要复制这个.在节点主机上运行,以后需要部署服务的时候,可以选择在注册的主机上部署了
节点弄完了之后点击关闭,然后注册上来的主机如图
配置阿里云镜像地址
刚好这几天在学docker.从未有过部署经验的小白.得到了公司项目部署的机会.今天初步准备了一下.明天得去部署了.今天又接触到了一款很厉害的软件 Docker Desktop.有需要的兄弟可以去官网看看,功能很强大,可以直接把你本地的代码,或者git上的代码打包成镜像运行.这里就分享一下我安装和使用中踩到的坑
我电脑的系统是win10家庭版.在官网上下载完毕后,正常的安装.启动的时候会有个弹框提示,然后没一会就闪退了.我没有截图,查了查网上的指导很多.我按照弹框提示的连接点进去后.安装了一些环境.但是还是闪退.
解决
输入了这个命令后重启电脑就解决了.
netsh winsock reset
环境变量,安装好docker desktop,也需要去配置环境变量.在path里添加下面的路径,大部分人的路径应该都是一样的.可以自己核对一下
C:\Program Files\Docker\Docker\resources\bin
然后感觉英文看着很不舒服.想换成中文.但是搞了半天也没搞成功.不知道网上说的那些设置在哪.我的是最新版本
后面准备远程连接我的阿里云的镜像仓库.
docker login --username=xxxx registry.cn-hangzhou.aliyuncs.com
我在cmd窗口里用完这条命令.然后提示我输入密码.但是却报错
Post "https://hub.docker.com/v2/users/login?refresh_token=true":
dialing hub.docker.com:443 with direct connection: connecting to 199.59.148.209:443:
dial tcp 199.59.148.209:443: connectex: A connection attempt
failed because the connected party did not properly respond after a period
of time, or established connection failed because connected host has failed to respond.
大概意思就是这个吧
你收到的错误信息表明在连接到Docker Hub服务器时遇到了问题,
IP地址为199.59.148.209,端口为443(HTTPS)。
错误具体指出连接尝试失败,原因可能是服务器在一段时间后没有正确响应,
或者已建立的连接因为连接的主机未能响应而失败。
打开防火墙
然后就可以成功登录到远程仓库了.