本文主要讲述了自己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

jenkins file 使用dockercloud jenkins docker plugin_jenkins


复制一下这个地址.每个人的都不一样,无需花钱.

vi /etc/docker/daemon.json

jenkins file 使用dockercloud jenkins docker plugin_maven_02


修改成这个样子,下面的一个是把docker自己的私服仓库添加到可信的,一会也会说道

jenkins file 使用dockercloud jenkins docker plugin_docker_03

jenkins file 使用dockercloud jenkins docker plugin_jenkins_04

systemctl restart docker

重启一下docker

先登录上阿里云镜像仓库,其实都有详细说明.下面说docker自己的私服了

jenkins file 使用dockercloud jenkins docker plugin_java_05

docker自己的私服

docker run --name  registry --restart=always -p 5000:5000 -v registry-data:/var/lib/registry registry

因为前面已经添加了授信的,也重启了.所有可以直接用了

jenkins file 使用dockercloud jenkins docker plugin_docker_06

如图,我这里有个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的一些配置

jenkins file 使用dockercloud jenkins docker plugin_java_07


需要把maven上传到服务上

jenkins file 使用dockercloud jenkins docker plugin_java_08


请注意.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>

直接划到最下面.配完后保存

jenkins file 使用dockercloud jenkins docker plugin_docker_09


jenkins file 使用dockercloud jenkins docker plugin_jenkins_10


填写项目地址.这里传到了gitee上,因为是公开的,所以不需要配置密码.现在的gitee默认是私有.所以记得要配置密码之类的,密码就点下面的添加

jenkins file 使用dockercloud jenkins docker plugin_docker_11


这里的就是maven插件,清理,打包啥的.功能idea里的那些

clean package -DskipTests docker:build -DpushImage

jenkins file 使用dockercloud jenkins docker plugin_java_12


我到这里构建了一次,还是翻车了.错误提示如下

[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.就成功了

jenkins file 使用dockercloud jenkins docker plugin_maven_13


太不容易了.到这里只是构建成功,还没有部署.接下来会学习Rancher进行部署,持续更新中

自动构建(持续集成)

这里用的代码托管平台的gitee.需要在jenkins中安装插件,我这里已经安装好了

jenkins file 使用dockercloud jenkins docker plugin_java_14


jenkins file 使用dockercloud jenkins docker plugin_maven_15


jenkins file 使用dockercloud jenkins docker plugin_jenkins_16


生成好的令牌记得存一下.只展示一次,在jenkins中需要使用到

jenkins file 使用dockercloud jenkins docker plugin_maven_17


jenkins file 使用dockercloud jenkins docker plugin_java_18

jenkins file 使用dockercloud jenkins docker plugin_docker_19


jenkins file 使用dockercloud jenkins docker plugin_docker_20


旁边有个测试按钮.可以测一下是否能通

修改任务的配置

jenkins file 使用dockercloud jenkins docker plugin_jenkins_21

jenkins file 使用dockercloud jenkins docker plugin_java_22


这里需要生成密码给git使用.然后点击保存

gitee配置

jenkins file 使用dockercloud jenkins docker plugin_java_23


jenkins file 使用dockercloud jenkins docker plugin_java_24


这个地址需要复制一下.配置在gitee的webhooks中

jenkins file 使用dockercloud jenkins docker plugin_maven_25


密码就是刚刚jenkins上生成的那个,然后点击添加

jenkins file 使用dockercloud jenkins docker plugin_docker_26


添加完成后可以测试一下

jenkins file 使用dockercloud jenkins docker plugin_java_27


持续集成到这里就弄完拉

持续部署

持续部署这边用的是Rancher的第一个版本.

docker pull rancher/server
docker run -d --name=myrancher -p 8088:8080 rancher/server

jenkins file 使用dockercloud jenkins docker plugin_maven_28


jenkins file 使用dockercloud jenkins docker plugin_jenkins_29


jenkins file 使用dockercloud jenkins docker plugin_java_30


jenkins file 使用dockercloud jenkins docker plugin_java_31

jenkins file 使用dockercloud jenkins docker plugin_java_32


我这里是jenkins部署在一台机器上.,rancher部署在一台机器上.用的都是轻量级云服务器.最低配的.一台起这两个服务必崩

jenkins file 使用dockercloud jenkins docker plugin_java_33


jenkins file 使用dockercloud jenkins docker plugin_maven_34


这个页面我什么也没设置,但是需要复制这个.在节点主机上运行,以后需要部署服务的时候,可以选择在注册的主机上部署了

jenkins file 使用dockercloud jenkins docker plugin_docker_35


节点弄完了之后点击关闭,然后注册上来的主机如图

jenkins file 使用dockercloud jenkins docker plugin_maven_36


配置阿里云镜像地址

jenkins file 使用dockercloud jenkins docker plugin_docker_37

jenkins file 使用dockercloud jenkins docker plugin_jenkins_38


jenkins file 使用dockercloud jenkins docker plugin_maven_39


jenkins file 使用dockercloud jenkins docker plugin_maven_40

jenkins file 使用dockercloud jenkins docker plugin_jenkins_41

刚好这几天在学docker.从未有过部署经验的小白.得到了公司项目部署的机会.今天初步准备了一下.明天得去部署了.今天又接触到了一款很厉害的软件 Docker Desktop.有需要的兄弟可以去官网看看,功能很强大,可以直接把你本地的代码,或者git上的代码打包成镜像运行.这里就分享一下我安装和使用中踩到的坑

我电脑的系统是win10家庭版.在官网上下载完毕后,正常的安装.启动的时候会有个弹框提示,然后没一会就闪退了.我没有截图,查了查网上的指导很多.我按照弹框提示的连接点进去后.安装了一些环境.但是还是闪退.

解决

jenkins file 使用dockercloud jenkins docker plugin_docker_42


输入了这个命令后重启电脑就解决了.

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)。
错误具体指出连接尝试失败,原因可能是服务器在一段时间后没有正确响应,
或者已建立的连接因为连接的主机未能响应而失败。

打开防火墙

jenkins file 使用dockercloud jenkins docker plugin_maven_43

jenkins file 使用dockercloud jenkins docker plugin_maven_44


然后就可以成功登录到远程仓库了.