一、更新docker 容器中的jenkins版本
更新容器中的war包,并重启
##########一。下载最新版本的war包
[root@localhost software]# wget http://mirrors.jenkins.io/war/latest/jenkins.war
--2020-08-26 10:07:04-- http://mirrors.jenkins.io/war/latest/jenkins.war
正在解析主机 mirrors.jenkins.io (mirrors.jenkins.io)... 52.202.51.185
正在连接 mirrors.jenkins.io (mirrors.jenkins.io)|52.202.51.185|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Found
位置:http://ftp-chi.osuosl.org/pub/jenkins/war/2.254/jenkins.war [跟随至新的 URL]
--2020-08-26 10:07:05-- http://ftp-chi.osuosl.org/pub/jenkins/war/2.254/jenkins.war
正在解析主机 ftp-chi.osuosl.org (ftp-chi.osuosl.org)... 64.50.236.52, 2600:3402:200:227::2
正在连接 ftp-chi.osuosl.org (ftp-chi.osuosl.org)|64.50.236.52|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:67074367 (64M) [application/x-java-archive]
正在保存至: “jenkins.war”
100%[==========================================================================================================================================================>] 67,074,367 407KB/s 用时 6m 46s
2020-08-26 10:13:51 (161 KB/s) - 已保存 “jenkins.war” [67074367/67074367])
############二。使用root账号进入容器
[root@localhost software]# docker exec -it -u root jenkins /bin/bash
############三。查找jenkins的war
root@36b57c5354c7:/$ whereis jenkins
root: /usr/local/bin/jenkins.sh /usr/share/jenkins
root@36b57c5354c7:/# cd /usr/share/jenkins/
root@36b57c5354c7:/usr/share/jenkins# ls
jenkins.war ref
###########四。备份原来的war包
root@36b57c5354c7:/usr/share/jenkins# mv jenkins.war jenkins_bak.war
root@36b57c5354c7:/usr/share/jenkins# ls
jenkins_bak.war ref
###########五。回到宿主机,将下载下来的war复制到jenkins_home的挂载目录
##########强调三遍:是回到宿主机...
[root@localhost jenkins_home]# cp /root/software/jenkins.war .
[root@localhost jenkins_home]# ls
config.xml identity.key.enc jenkins.CLI.xml jenkins.install.UpgradeWizard.state logs plugins secrets users
copy_reference_file.log init.groovy.d jenkins.install.InstallUtil.installingPlugins jenkins.war nodeMonitors.xml secret.key updates war
hudson.model.UpdateCenter.xml jenkins.install.InstallUtil.lastExecVersion jobs nodes secret.key.not-so-secret userContent
[root@localhost jenkins_home]#
###########六。回到容器,将挂载的目录中的war包,复制到原来容器中war的目录
root@36b57c5354c7:/usr/share/jenkins# cp /var/jenkins_home/jenkins.war .
root@36b57c5354c7:/usr/share/jenkins# ls
jenkins.war jenkins_bak.war ref
root@36b57c5354c7:/usr/share/jenkins# exit
exit
[root@localhost software]# docker restart jenkins
jenkins
[root@localhost software]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
36b57c5354c7 jenkins "/bin/tini -- /usr/l…" 18 hours ago Up 30 seconds 0.0.0.0:8080->8080/tcp, 50000/tcp jenkins
[root@localhost software]#
二、docker出现Permission denied的原因及处理方法:
#########第一步就是错误的原因,这样登陆,使用的账号是jenkins用户,而实际使用 -u root 参数进入容器后,使用的用户是root(第一部分的内容是加了-u 参数的)
[root@localhost software]# docker exec -it jenkins /bin/bash
jenkins@36b57c5354c7:/$ whereis jenkins
jenkins: /usr/local/bin/jenkins.sh /usr/share/jenkins
jenkins@36b57c5354c7:/$ cd /usr/share/jenkins
jenkins@36b57c5354c7:/usr/share/jenkins$ ls
jenkins.war ref
jenkins@36b57c5354c7:/usr/share/jenkins$ cp jenkins.war jenkins260.war
cp: cannot create regular file 'jenkins260.war': Permission denied
jenkins@36b57c5354c7:/usr/share/jenkins$ ll
bash: ll: command not found
jenkins@36b57c5354c7:/usr/share/jenkins$ ls -l
total 68968
-rw-r--r--. 1 root root 70620203 Jul 17 2018 jenkins.war
drwxr-xr-x. 1 jenkins root 27 Jul 17 2018 ref
jenkins@36b57c5354c7:/usr/share/jenkins$ chmod 777 jenkins.war
chmod: changing permissions of 'jenkins.war': Operation not permitted
jenkins@36b57c5354c7:/usr/share/jenkins$ sudo chmod 777 jenkins.war
bash: sudo: command not found
jenkins@36b57c5354c7:/usr/share/jenkins$ cp jenkins.war jenkinsbak.war
cp: cannot create regular file 'jenkinsbak.war': Permission denied
jenkins@36b57c5354c7:/usr/share/jenkins$ ls
原因:进入容器时,没有添加-u 参数
没有权限的命令行:docker exec -it jenkins /bin/bash
不汇报权限问题的命令:docker exec -it -u root jenkins /bin/bash