第一次用docker創建jenkins的時候,不熟,對命令不太了解。摸索了下,創建了一個jenkins容器,用的以下參數。
docker run -d -p 8080:8080 -p 50000:50000 \ -v jenkins:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /etc/localtime:/etc/localtime \ -v /usr/local/maven/apache-maven-3.6.3:/usr/local/maven \ -v /usr/local/gradle/gradle-6.5.1:/usr/local/gradle \ --name jenkins docker.io/jenkins/jenkins
后來沒找到/var/jenkins_home目錄在宿主機的掛載目錄,幾經摸索,發現在路徑下面/var/lib/docker/volumes/jenkins/_data目錄下面。
想把它修改到自定義目錄/usr/local/jenkins目錄下面,首先找到配置文件目錄:
/var/lib/docker/containers/[hash_of_the_container]/config.v2.json
/var/lib/docker/containers/[hash_of_the_container]/hostconfig.json
是支持的json格式,可以格式化一下方便查看,兩個文件依次如下修改:
"/var/jenkins_home": { "Source": "/usr/local/jenkins", "Destination": "/var/jenkins_home", "RW": true, "Name": "", "Driver": "", "Type": "bind", "Propagation": "rprivate", "Spec": { "Type": "bind", "Source": "/usr/local/jenkins", "Target": "/var/jenkins_home" },
"Binds": [ "/usr/local/jenkins:/var/jenkins_home", "/var/run/docker.sock:/var/run/docker.sock", "/etc/localtime:/etc/localtime", "/usr/local/maven/apache-maven-3.6.3:/usr/local/maven", "/usr/local/gradle/gradle-6.5.1:/usr/local/gradle" ],
容器沒停掉以前是替換重啟不成功的,首先docker stop jenkins,然后docker start jenkins,發現報錯。
Error response from daemon: error evaluating symlinks from mount source "/var/lib/docker/volumes/jenkins/_data": lstat /var/lib/docker/volumes/jenkins: no such file or directory
於是停掉docker服務,systemctl stop docker,再替換文件,再systemctl start docker,docker start jenkins,這時候不報錯了。
這時候發現不報錯了,但docker ps仍然沒有啟動的容器,想到原目錄下面是jenkins/_data目錄是1000用戶屬性,於是修改下當前路徑的用戶屬性。
chown -R 1000 /usr/local/jenkins/
可以正常啟動了,以前的配置還在。
注意:先將jenkins/_data目錄內容,拷貝下來放到/usr/lcoal/jenkins目錄下面的。
以后直接這樣創建了,記錄一下。
docker run -d -p 8080:8080 -p 50000:50000 \ -v /usr/local/jenkins:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /etc/localtime:/etc/localtime \ -v /usr/local/maven/apache-maven-3.6.3:/usr/local/maven \ -v /usr/local/gradle/gradle-6.5.1:/usr/local/gradle \ --name jenkins docker.io/jenkins/jenkins