While named volumes are the standard, Docker also allows you to use Bind Mounts for persisting data. Bind mounts directly link a specific directory on the host machine to a location inside a container.
[root@devopsvm01 ~]# mkdir -p /Jenkins_Home/Jenkins_Vol
[root@devopsvm01 ~]# cd /Jenkins_Home/Jenkins_Vol
[root@devopsvm01 Jenkins_Vol]# ls -lrt
total 0
[root@devopsvm01 Jenkins_Vol]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@devopsvm01 Jenkins_Vol]#
Spin up a new Jenkin container using the bind mount.
[root@devopsvm01 Jenkins_Vol]# docker run --name Jenkins-Bind -v /Jenkins_Home/Jenkins_Vol:/var/jenkins_home -p 8099:8080 -p 50050:50000 jenkins/jenkins:2.528.2-lts-jdk21
INSTALL WARNING: User: missing rw permissions on JENKINS_HOME: /var/jenkins_home
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
[root@devopsvm01 Jenkins_Vol]#
You're getting this error because Jenkins inside the container is running as user jenkins, and that user does NOT have write permission to your host folder: /Jenkins_Home/Jenkins_Vol
Here it complains , Jenkins cannot write into: /var/jenkins_home
which is mapped to your host folder.
Official Jenkins images run with: uid: 1000 and gid: 1000
So change the ownership of host folder.
[root@devopsvm01 Jenkins_Vol]# sudo chown -R 1000:1000 /Jenkins_Home/Jenkins_Vol
[root@devopsvm01 Jenkins_Vol]#
[root@devopsvm01 Jenkins_Vol]# docker run --name Jenkins-Bind -v /Jenkins_Home/Jenkins_Vol:/var/jenkins_home -p 8099:8080 -p 50050:50000 jenkins/jenkins:2.528.2-lts-jdk21
Running from: /usr/share/jenkins/jenkins.war
webroot: /var/jenkins_home/war
2025-11-03 12:05:45.791+0000 [id=1] INFO winstone.Logger#logInternal: Beginning extraction from war file
2025-11-03 12:05:48.690+0000 [id=1] WARNING o.e.j.ee9.nested.ContextHandler#setContextPath: Empty contextPath
2025-11-03 12:05:49.092+0000 [id=1] INFO org.eclipse.jetty.server.Server#doStart: jetty-12.0.25; built: 2025-08-11T23:52:37.219Z; git: a862b76d8372e24205765182d9ae1d1d333ce2ea; jvm 21.0.9+10-LTS
2025-11-03 12:05:51.638+0000 [id=1] INFO o.e.j.e.w.StandardDescriptorProcessor#visitServlet: NO JSP Support for /, did not find org.eclipse.jetty.ee9.jsp.JettyJspServlet
2025-11-03 12:05:51.932+0000 [id=1] INFO o.e.j.s.DefaultSessionIdManager#doStart: Session workerName=node0
2025-11-03 12:05:54.148+0000 [id=1] INFO hudson.WebAppMain#contextInitialized: Jenkins home directory: /var/jenkins_home found at: EnvVars.masterEnvVars.get("JENKINS_HOME")
2025-11-03 12:05:54.692+0000 [id=1] INFO o.e.j.s.handler.ContextHandler#doStart: Started oeje9n.ContextHandler$CoreContextHandler@3c782d8e{Jenkins v2.528.2,/,b=file:///var/jenkins_home/war/,a=AVAILABLE,h=oeje9n.ContextHandler$CoreContextHandler$CoreToNestedHandler@572e6fd9{STARTED}}
2025-11-03 12:05:54.773+0000 [id=1] INFO o.e.j.server.AbstractConnector#doStart: Started ServerConnector@7150a6d4{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
2025-11-03 12:05:54.849+0000 [id=1] INFO org.eclipse.jetty.server.Server#doStart: Started oejs.Server@3668d4{STARTING}[12.0.25,sto=0] @12218ms
2025-11-03 12:05:54.866+0000 [id=25] INFO winstone.Logger#logInternal: Winstone Servlet Engine running: controlPort=disabled
2025-11-03 12:05:55.372+0000 [id=24] INFO jenkins.model.Jenkins#<init>: Starting version 2.528.2
2025-11-03 12:05:55.836+0000 [id=31] INFO jenkins.InitReactorRunner$1#onAttained: Started initialization
2025-11-03 12:05:55.932+0000 [id=32] INFO jenkins.InitReactorRunner$1#onAttained: Listed all plugins
2025-11-03 12:06:00.327+0000 [id=32] INFO jenkins.InitReactorRunner$1#onAttained: Prepared all plugins
2025-11-03 12:06:00.352+0000 [id=32] INFO jenkins.InitReactorRunner$1#onAttained: Started all plugins
2025-11-03 12:06:00.365+0000 [id=31] INFO jenkins.InitReactorRunner$1#onAttained: Augmented all extensions
2025-11-03 12:06:02.005+0000 [id=31] INFO jenkins.InitReactorRunner$1#onAttained: System config loaded
2025-11-03 12:06:02.007+0000 [id=32] INFO jenkins.InitReactorRunner$1#onAttained: System config adapted
2025-11-03 12:06:02.018+0000 [id=32] INFO jenkins.InitReactorRunner$1#onAttained: Loaded all jobs
2025-11-03 12:06:02.029+0000 [id=32] INFO jenkins.InitReactorRunner$1#onAttained: Configuration for all jobs updated
2025-11-03 12:06:04.172+0000 [id=46] INFO hudson.util.Retrier#start: Attempt #1 to do the action check updates server
2025-11-03 12:06:05.266+0000 [id=31] INFO jenkins.install.SetupWizard#init:
[LF]>
[LF]> *************************************************************
[LF]> *************************************************************
[LF]> *************************************************************
[LF]>
[LF]> Jenkins initial setup is required. An admin user has been created and a password generated.
[LF]> Please use the following password to proceed to installation:
[LF]>
[LF]> c1c83809d05541de8fc845983b9b0546
[LF]>
[LF]> This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
[LF]>
[LF]> *************************************************************
[LF]> *************************************************************
[LF]> *************************************************************
2025-11-03 12:06:27.597+0000 [id=32] INFO jenkins.InitReactorRunner$1#onAttained: Completed initialization
2025-11-03 12:06:27.670+0000 [id=24] INFO hudson.lifecycle.Lifecycle#onReady: Jenkins is fully up and running
2025-11-03 12:06:29.999+0000 [id=46] INFO h.m.DownloadService$Downloadable#load: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller
2025-11-03 12:06:30.004+0000 [id=46] INFO hudson.util.Retrier#start: Performed the action check updates server successfully at the attempt #1
[root@devopsvm01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
df857df3c116 jenkins/jenkins:2.528.2-lts-jdk21 "/usr/bin/tini -- /u…" 6 minutes ago Up 6 minutes 0.0.0.0:8099->8080/tcp, [::]:8099->8080/tcp, 0.0.0.0:50050->50000/tcp, [::]:50050->50000/tcp Jenkins-Bind
[root@devopsvm01 ~]#
[root@devopsvm01 Jenkins_Vol]# pwd
/Jenkins_Home/Jenkins_Vol
[root@devopsvm01 Jenkins_Vol]# ls -lhrt
total 28K
-rw-r--r--. 1 maheshpayyan maheshpayyan 108 Nov 3 17:35 copy_reference_file.log
drwxr-xr-x. 10 maheshpayyan maheshpayyan 4.0K Nov 3 17:35 war
-rw-r--r--. 1 maheshpayyan maheshpayyan 64 Nov 3 17:35 secret.key
-rw-r--r--. 1 maheshpayyan maheshpayyan 0 Nov 3 17:35 secret.key.not-so-secret
drwxr-xr-x. 2 maheshpayyan maheshpayyan 6 Nov 3 17:35 plugins
drwxr-xr-x. 2 maheshpayyan maheshpayyan 6 Nov 3 17:35 jobs
-rw-r--r--. 1 maheshpayyan maheshpayyan 156 Nov 3 17:36 hudson.model.UpdateCenter.xml
-rw-r--r--. 1 maheshpayyan maheshpayyan 171 Nov 3 17:36 jenkins.telemetry.Correlator.xml
-rw-r--r--. 1 maheshpayyan maheshpayyan 1.1K Nov 3 17:36 nodeMonitors.xml
drwxr-xr-x. 2 maheshpayyan maheshpayyan 24 Nov 3 17:36 userContent
drwxr-xr-x. 3 maheshpayyan maheshpayyan 84 Nov 3 17:36 users
drwx------. 2 maheshpayyan maheshpayyan 125 Nov 3 17:36 secrets
-rw-r--r--. 1 maheshpayyan maheshpayyan 1.7K Nov 3 17:36 config.xml
drwxr-xr-x. 2 maheshpayyan maheshpayyan 67 Nov 3 17:36 updates
[root@devopsvm01 Jenkins_Vol]#
[root@devopsvm01 Jenkins_Vol]# docker ps --format "{{.Names}}\t{{.Mounts}}"
Jenkins-Bind /Jenkins_Home/…
[root@devopsvm01 Jenkins_Vol]#
Remove container and verify data is persistent.
[root@devopsvm01 Jenkins_Vol]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
df857df3c116 jenkins/jenkins:2.528.2-lts-jdk21 "/usr/bin/tini -- /u…" 14 minutes ago Up 14 minutes 0.0.0.0:8099->8080/tcp, [::]:8099->8080/tcp, 0.0.0.0:50050->50000/tcp, [::]:50050->50000/tcp Jenkins-Bind
[root@devopsvm01 Jenkins_Vol]#
[root@devopsvm01 Jenkins_Vol]# docker stop df857df3c116
df857df3c116
[root@devopsvm01 Jenkins_Vol]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@devopsvm01 Jenkins_Vol]#
[root@devopsvm01 Jenkins_Vol]# docker rm df857df3c116
df857df3c116
[root@devopsvm01 Jenkins_Vol]# ls -lhrt
total 32K
-rw-r--r--. 1 maheshpayyan maheshpayyan 108 Nov 3 17:35 copy_reference_file.log
drwxr-xr-x. 10 maheshpayyan maheshpayyan 4.0K Nov 3 17:35 war
-rw-r--r--. 1 maheshpayyan maheshpayyan 64 Nov 3 17:35 secret.key
-rw-r--r--. 1 maheshpayyan maheshpayyan 0 Nov 3 17:35 secret.key.not-so-secret
drwxr-xr-x. 2 maheshpayyan maheshpayyan 6 Nov 3 17:35 plugins
drwxr-xr-x. 2 maheshpayyan maheshpayyan 6 Nov 3 17:35 jobs
-rw-r--r--. 1 maheshpayyan maheshpayyan 156 Nov 3 17:36 hudson.model.UpdateCenter.xml
-rw-r--r--. 1 maheshpayyan maheshpayyan 171 Nov 3 17:36 jenkins.telemetry.Correlator.xml
-rw-r--r--. 1 maheshpayyan maheshpayyan 1.1K Nov 3 17:36 nodeMonitors.xml
drwxr-xr-x. 2 maheshpayyan maheshpayyan 24 Nov 3 17:36 userContent
drwxr-xr-x. 3 maheshpayyan maheshpayyan 84 Nov 3 17:36 users
drwx------. 2 maheshpayyan maheshpayyan 125 Nov 3 17:36 secrets
-rw-r--r--. 1 maheshpayyan maheshpayyan 1.7K Nov 3 17:36 config.xml
drwxr-xr-x. 2 maheshpayyan maheshpayyan 67 Nov 3 17:36 updates
-rw-r--r--. 1 maheshpayyan maheshpayyan 258 Nov 3 17:50 queue.xml
[root@devopsvm01 Jenkins_Vol]#
No comments:
Post a Comment