依賴下載地址:html
rpm -ivh libcgroup-0.40.rc1-23.el6.x86_64.rpm rpm -ivh docker-engine-1.7.1-1.el6.x86_64.rpm
FROM ubuntu ADD jdk-8u171-linux-x64.tar.gz /usr/local/ RUN mv /usr/local/jdk1.8.0_171 /usr/local/java ADD apache-tomcat-8.5.30.tar.gz /usr/local/ RUN mv /usr/local/apache-tomcat-8.5.30 /usr/local/tomcat COPY jenkins.war /usr/local/tomcat/webapps/ ADD node-v8.11.1.tar.gz /root/ RUN apt-get update RUN apt-get install -y python git ssh gcc g++ make RUN /root/node-v8.11.1/configure && make -C /root/node-v8.11.1/ && make install -C /root/node-v8.11.1/ && rm -rf /root/node-v8.11.1/ ENV JAVA_HOME /usr/local/java ENV JRE_HOME $JAVA_HOME/jre ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV PATH $JAVA_HOME/bin:$PATH EXPOSE 8080 3000 22 ENTRYPOINT ["java","-jar","/usr/local/tomcat/webapps/jenkins.war"]
(這裏就不對Dockerfile和語法作解釋了,能夠自行查閱資料)java
原本是要用tomcat啓動的,但容器啓動後tomcat沒啓動,試了不少種方法都不行,最後只能改爲java -jarnode
將Dockerfile與全部的軟件包放在一塊兒而後執行命令python
docker build -t jenkins ./
-t jenkins爲鏡像的TAG,'./'爲Dockerfile與軟件包的路徑,最後看到Successfully說明成功
(Docker基礎鏡像中有jenkins的鏡像,直接執行docker pull jenkins
就能夠了,我爲何要用WAR包安裝,是由於jenkins鏡像的登錄用戶爲jenkins,登錄到容器後沒有權限不少事情都作不了)linux
這時候運行docker images
應該就會有一個叫jenkins的鏡像git
執行命令web
docker run -d -p 8080:8080 -p 50000:50000 -p 3000:3000 -p 50001:22 -v /var/jenkins_home:/root/.jenkins/ --name jenkins_node jenkins
(3000端口是本身設置的nodejs程序端口)docker
run 運行docker鏡像,-d 之後臺守護進程運行 ,-p 將容器端口開放(服務器端口:容器端口) , -v 掛載分區(服務器分區:容器分區) --name 指定容器名稱,最後的jenkins爲鏡像包名
若是出現這種問題,重啓docker服務,在嘗試啓動容器,如問題未能解決就將防火牆端口開放,而後重啓docker服務apache
以Centos7爲例npm
firewall-cmd --zone=public --add-port=50001/tcp --permanent firewall-cmd --reload systemctl restart docker docker start jenkins_node
防火牆對docker的影響很大,在防火牆開啓的狀況下會遇到不少奇怪的錯誤,並且這些錯誤基本上查不到決絕辦法,能查到的只有與你遇到的問題無關的,但這些問題基本上都是與鏈接有關的,好比連不上主機或找不到主機,解析不了網址之類的,若是在防火牆開啓的狀況下遇到這類問題就先檢查防火牆,而後重啓docker服務和容器
拉到最下面找到 "Publish over SSH" , 設置服務器的SSH信息
- 到服務器執行
docker exec -it jenkins_node bash
登錄到容器- 重置用戶密碼
passwd
- 安裝一個編輯器
apt-get install -y vim
- 安裝完以後
vim /etc/ssh/sshd_config
編輯ssh配置文件- 找到
PermitRootLogin prohibit-password
改成PermitRootLogin yes
保存文件- 從新啓動ssh
service ssh restart
- 設置ssh開機自啓動
update-rc.d ssh defaults
- 生成ssh祕鑰
ssh-keygen -t rsa
什麼都不要輸直接回車直到完成就好- 切換到ssh祕鑰目錄
cd ~/.ssh/
會有兩個文件'id_rsa'(祕鑰)和'id_rs a.pub'(公鑰)文件- 將公鑰複製
cp id_rsa.pub authorized_keys
- 複製id_rsa(祕鑰)文件中的內容
到jenkins ‘Publish over SSH’ 設置找到SSH Servers 點擊 "增長 --> 高級"
- Name : ssh server名稱隨意設置
- Hostname : 服務器ip地址
- Username : 容器用戶名
- 選中 Use password authentication, or use a different key
- Passphrase / Password : 容器用戶密碼
- Key : 將剛剛複製的id_rsa(祕鑰)內容粘貼到這裏
- Port : 設置成鏡像運行命令中將22端口映射爲50001的端口
- 點擊Test Configuration出現Success成功
- 若是出現下圖請檢查authorized_keys文件名稱或內容是否正確,和複製的私鑰內容是否正確,docker容器ssh是否運行。
- 若是出現下圖就到宿主機開放50001端口
- 保存
若是出現圖中CAfile錯誤就到容器中執行git config --global http.sslverify false
關閉https證書檢測,而後回到頁面將Repository URL中的地址剪切並從新粘貼
登錄git平臺,找到你的項目,選擇管理,選擇webhook