docker - 从我的 Jenkins 容器 docker 安装中提取内容并传递到新容器

标签 docker jenkins windows-10 docker-container

假设我有一个容器在工作!!
这是我的 Dockerfile...

FROM jenkinsci/blueocean
USER root
RUN apk update && apk add wget
RUN wget --no-verbose -O /tmp/apache-maven-3.6.3-bin.tar.gz https://downloads.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
RUN tar xzf /tmp/apache-maven-3.6.3-bin.tar.gz -C /opt/ 
RUN ln -s /opt/apache-maven-3.6.3 /opt/maven 
RUN ln -s /opt/maven/bin/mvn /usr/local/bin 
RUN rm /tmp/apache-maven-3.6.3-bin.tar.gz 
RUN chown jenkins:jenkins /opt/maven;

ENV MAVEN_HOME=/opt/mvn
现在我创建了图像...
docker build -t jenkins/blueocean_ci --no-cache .
现在我运行我的容器...
docker run -p 8080:8080 -p 50000:50000 --name jenkinsblue jenkins/blueocean_ci
我做了很多改变......插件安装和管道......
哦,我忘记了一些事情(无论做什么)
然后我将 jenkins 目录解压到 d:\Documents\JenkinsBCK\ ...
docker cp jenkinsblue:/var/jenkins_home d:\Documents\JenkinsBCK\
我想将我的更改保留到 Windows 上以前的特定文件夹位置 d:\Documents\JenkinsBCK\ ,我会重复使用它。
现在,我使用对该目录的引用(如卷)创建了另一个容器,更改端口...
docker run -v d:\Documents\JenkinsBCK:/var/jenkins_home -p 8081:8080 -p 50001:50000 --name jenkins_cnt jenkins/blueocean_ci
现在,我试图用我的旧东西测试我的新容器......
http://localhost:8081/
您是否再次要求输入密码位于/var/jenkins_home/secrets/initialAdminPassword ?嗯嗯好的没问题...
docker exec jenkins_cnt bash -c "cat /var/jenkins_home/secrets/initialAdminPassword"
我旧配置的插件和管道在哪里?
怎么了?
怎么做?

最佳答案

检查 $JENKINS_HOME 的值变量

docker exec JENKINS_CNT_SOURCE env
PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=b1f58b975483
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_ALL=en_US.UTF-8
JAVA_VERSION=jdk8u292-b10
JAVA_HOME=/opt/java/openjdk
JENKINS_HOME=/var/jenkins_home
JENKINS_SLAVE_AGENT_PORT=50000
REF=/usr/share/jenkins/ref
JENKINS_VERSION=2.277.4
JENKINS_UC=https://updates.jenkins.io
JENKINS_UC_EXPERIMENTAL=https://updates.jenkins.io/experimental
JENKINS_INCREMENTALS_REPO_MIRROR=https://repo.jenkins-ci.org/incrementals
COPY_REFERENCE_FILE_LOG=/var/jenkins_home/copy_reference_file.log
MAVEN_HOME=/opt/mvn
HOME=/var/jenkins_home  
检查 xml 文件
docker exec JENKINS_CNT_SOURCE bash -c "ls -al /var/jenkins_home/*.xml"
-rw-r--r-- 1 jenkins jenkins 1600 May  5 00:09 /var/jenkins_home/config.xml
-rw-r--r-- 1 jenkins jenkins  156 May  5 00:09 /var/jenkins_home/hudson.model.UpdateCenter.xml
-rw-r--r-- 1 jenkins jenkins  370 May  4 21:07 /var/jenkins_home/hudson.plugins.git.GitTool.xml
-rw-r--r-- 1 jenkins jenkins  179 May  4 21:18 /var/jenkins_home/jenkins.model.JenkinsLocationConfiguration.xml
-rw-r--r-- 1 jenkins jenkins  171 May  4 21:07 /var/jenkins_home/jenkins.telemetry.Correlator.xml
-rw-r--r-- 1 jenkins jenkins  907 May  5 00:09 /var/jenkins_home/nodeMonitors.xml
从源容器中提取文件
docker cp JENKINS_CNT_SOURCE:/var/jenkins_home/config.xml C:\BCKJenkins\
docker cp JENKINS_CNT_SOURCE:/var/jenkins_home/hudson.model.UpdateCenter.xml C:\BCKJenkins\
docker cp JENKINS_CNT_SOURCE:/var/jenkins_home/hudson.plugins.git.GitTool.xml C:\BCKJenkins\
docker cp JENKINS_CNT_SOURCE:/var/jenkins_home/jenkins.model.JenkinsLocationConfiguration.xml C:\BCKJenkins\
docker cp JENKINS_CNT_SOURCE:/var/jenkins_home/jenkins.telemetry.Correlator.xml C:\BCKJenkins\
docker cp JENKINS_CNT_SOURCE:/var/jenkins_home/nodeMonitors.xml C:\BCKJenkins\

docker cp JENKINS_CNT_SOURCE:/var/jenkins_home/jobs C:\BCKJenkins\
docker cp JENKINS_CNT_SOURCE:/var/jenkins_home/nodes C:\BCKJenkins\
docker cp JENKINS_CNT_SOURCE:/var/jenkins_home/plugins C:\BCKJenkins\
docker cp JENKINS_CNT_SOURCE:/var/jenkins_home/secrets C:\BCKJenkins\
docker cp JENKINS_CNT_SOURCE:/var/jenkins_home/users C:\BCKJenkins\
如果需要,请更改端口 ( 8081 )
编辑您的文件 C:\BCKJenkins\jenkins.model.JenkinsLocationConfiguration.xml
<?xml version='1.1' encoding='UTF-8'?>
<jenkins.model.JenkinsLocationConfiguration>
  <adminAddress>address not configured yet &lt;nobody@nowhere&gt;</adminAddress>
  <jenkinsUrl>http://localhost:8080/</jenkinsUrl>
</jenkins.model.JenkinsLocationConfiguration>
将文件插入目标容器
docker cp C:\BCKJenkins\config.xml JENKINS_CNT_TARGET:/var/jenkins_home/
docker cp C:\BCKJenkins\hudson.model.UpdateCenter.xml JENKINS_CNT_TARGET:/var/jenkins_home/
docker cp C:\BCKJenkins\hudson.plugins.git.GitTool.xml JENKINS_CNT_TARGET:/var/jenkins_home/
docker cp C:\BCKJenkins\jenkins.model.JenkinsLocationConfiguration.xml JENKINS_CNT_TARGET:/var/jenkins_home/
docker cp C:\BCKJenkins\jenkins.telemetry.Correlator.xml JENKINS_CNT_TARGET:/var/jenkins_home/
docker cp C:\BCKJenkins\nodeMonitors.xml JENKINS_CNT_TARGET:/var/jenkins_home/

docker cp C:\BCKJenkins\jobs JENKINS_CNT_TARGET:/var/jenkins_home/
docker cp C:\BCKJenkins\nodes JENKINS_CNT_TARGET:/var/jenkins_home/
docker cp C:\BCKJenkins\plugins JENKINS_CNT_TARGET:/var/jenkins_home/
docker cp C:\BCKJenkins\secrets JENKINS_CNT_TARGET:/var/jenkins_home/
docker cp C:\BCKJenkins\users JENKINS_CNT_TARGET:/var/jenkins_home/
递归更改所有权
docker exec --user=root JENKINS_CNT_TARGET bash -c "chown -R jenkins:jenkins $JENKINS_HOME"
或者
docker exec -it --user=root JENKINS_CNT_TARGET bash
bash-5.0# chown -R jenkins:jenkins $JENKINS_HOME
重启目标容器
docker restart JENKINS_CNT_TARGET
检查端口冲突
为了避免与旧容器发生端口冲突,请访问Jenkins
Dashboard -> Manage Jenkins -> Configure System => Jenkins URL (update to new port).

关于docker - 从我的 Jenkins 容器 docker 安装中提取内容并传递到新容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67844319/

相关文章:

java - DateFormat UnitTest 在 Jenkins 中失败,但在本地失败

postgresql - 如何在 Windows 10 上设置 Postgres 路径变量

windows - 批处理脚本 : What's the difference between %0 and %~f0?

amazon-web-services - AWS Codebuild没有传递环境变量?

docker - 如何限制k8s中交换内存的使用?

maven - 如何在 Maven 构建中使用 Inno Setup?

xaml - 通用 App ListView Item Horizo​​ntalAlignment

docker - 在 Linux 上挂载大量文件的 Docker 卷缓慢

Docker:设备 cgroup 未安装(Ubuntu 16.04)

jenkins - 客户端错误 : HTTP 302 Found, Jenkins 连接到 Gitlab