Ubuntu中安裝jenkins+docker,實現項目部署


本人對於linux系統是個小白,恰逢公司新框架需要docker+jenkins部署項目,所以通過同事口述+一頓亂查,終於實現在虛擬機上搭建的ubuntu系統中 實現jenkins +docker 自動部署拉取項目。

趕緊做個記錄!

准備條件:

1、虛擬機內安裝ubuntu隨后再做記錄,雖說同事已經演示過,但是自己還是得記錄下。

2、jenkins 需要環境:由於本人直接將jenkins安裝於宿主機中(還可以將jenkins安裝於docker中---這個隨后再研究,一步一步來),所以需要JDK+Tomcat環境做支撐

   ubuntu 中JDK8+Tomcat8環境的安裝另做記錄;

3、本文只記錄Jenkins和dockers的安裝。

安裝docker:

借鑒同事現成方法:

 

sudo apt-get updat

說明:更新系統軟件(為啥?不知道)

 

sudo apt-get install apt-transport-https ca-certificates

說明:安裝ssl證書--因為要訪問https協議的網站

 

curl -sSL https://get.daocloud.io/docker | sh

說明:下載並安裝docker,安裝完成后自動啟動了

 

安裝jenkins

網上查了很久也試過好幾個方法有的不是很靠譜也很麻煩,現在把本人親測的一個靠譜的方法做記錄,其它方法等有空了再做研究

包含在默認Ubuntu軟件包中的Jenkins版本往往落后於項目本身的最新版本。 為了利用最新的修復和功能,我們將使用項目維護的軟件包來安裝Jenkins。

首先,我們將存儲庫密鑰添加到系統。

wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -

添加密鑰后,系統將返回OK 。 接下來,我們將Debian包存儲庫地址附加到服務器的sources.list :

echo deb http://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list

當這兩個都到位時,我們將運行update ,以便apt-get將使用新的存儲庫:

sudo apt-get update

最后,我們將安裝Jenkins及其依賴項,包括Java:

sudo apt-get install jenkins

指定早期版本可以安裝

sudo apt-get install jenkins=2.138.1

如果太慢的話 可以去官網下載后 再安裝

啟動jenkis

sudo /etc/init.d/jenkins [start|restart|stop]

瀏覽jenkins

打開我們的瀏覽器輸入jenkins的服務器地址,在這里我的是192.168.44.135
http://192.168.44.135:8080
但是呢有時候這個端口就會被萬惡的tomcat占用我們不得不修改jenkins的端口(此時如果你打開的是jenkins此步驟可以省略)


1、修改jenkins端口

$ sudo vi /etc/default/jenkins
記錄vi編輯器的操作步驟1、 o --開始編輯輸入   ESC --推出編輯:wq --保存並推出 :q! --強制退出,不保存
#修改如下內容
HTTP_PORT=8085
#重啟jenkins服務
$ sudo /etc/init.d/jenkins restart

首次進入jenkins如要輸入密碼,密碼位置:/var/lib/jenkins/secrets/initialAdminPassword,查看命令

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

插件安裝

點擊“Install suggested plugins”,即安裝推薦的插件:

開始安裝插件,安裝插件比較慢,要多等一會兒

創建管理員賬戶

創建任務


由於我不需要什么后台的編譯只需要編譯流水線,填寫docker指令,因此就沒有配置jdk maven什么的。因此只創建了一個流水線項目

保存之后,點擊立即構建,會發現死活都編譯不過去,各種失敗!接下來我們逐個擊破它!

第一個問題:沒有權限的問題(截圖沒有保留隨后添加)

我的當前登陸用戶是dh

在Ubuntu下,當執行apt-get install方式安裝Jenkins的時候,會自動創建jenkins用戶,這是一個沒有用戶目錄的賬號。
可想而知jenkins用戶肯定是沒有什么權限的,所以我們要想辦法讓jenkins用dh賬戶運行

將dh用戶添加到jenkins用戶組中,讓dh用戶擁有管理jenkins的權限

$ sudo gpasswd -a dh jenkins


現在root可以管理jenkins了,我們需要配置jenkins的配置文件讓jenkins用dh身份運行,配置文件在/etc/default/jenkins

#打開文件 
vi /etc/default/jenkins

#修改用戶--只修改這一個地方
JENKINS_USER=dh
JENKINS_GROUP=dh

ok,重啟jenkins

$ sudo /etc/init.d/jenkins restart

第二個問題

 

由於jenkins的工作目錄在/var/lib/jenkins我們查看下它的所屬用戶和所屬組

這里顯然是不對的,由於我們把jenkins的默認運行用戶改成了dh,接着改

$ sudo chown -R dh:dh /var/lib/jenkins


再重啟jenkins

$ sudo /etc/init.d/jenkins restart

ok,沒毛病了,這回跑通了

第三個問題:docker守護進程攔截不能直接執行docker命令

 我的解決方案   在配置文件中  加上sudo 執行docker指令

網上還有把當前的用戶添加到docker用戶組中(這個方法我沒有試過)附上查到的方法:

問題描述

安裝完docker后,執行docker相關命令,出現

”Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/images/json: dial unix /var/run/docker.sock: connect: permission denied“
原因

摘自docker mannual上的一段話

Manage Docker as a non-root user

The docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can only access it using sudo. The docker daemon always runs as the root user.

If you don’t want to use sudo when you use the docker command, create a Unix group called docker and add users to it. When the docker daemon starts, it makes the ownership of the Unix socket read/writable by the docker group.

 

大概的意思就是:docker進程使用Unix Socket而不是TCP端口。而默認情況下,Unix socket屬於root用戶,需要root權限才能訪問。

解決方法1

使用sudo獲取管理員權限,運行docker命令

解決方法2

docker守護進程啟動的時候,會默認賦予名字為docker的用戶組讀寫Unix socket的權限,因此只要創建docker用戶組,並將當前用戶加入到docker用戶組中,那么當前用戶就有權限訪問Unix socket了,進而也就可以執行docker相關命令

sudo groupadd docker     #添加docker用戶組
sudo gpasswd -a $USER docker     #將登陸用戶加入到docker用戶組中
newgrp docker     #更新用戶組
docker ps    #測試docker命令是否可以使用sudo正常使用

 

 第四個問題:執行sudo命令得輸入當前用戶的密碼,以切換至root用戶

問題描述

上述處理完成后 執行發現

sudo: no tty present and no askpass program specified

解決方法:

給jenkins添加不用密碼使用sudo的權限。

sudo vi /etc/sudoers

有時候發現上述 編輯不能保存:則可以執行如下命令

sudo visudo

   保存文件(注意保存的時候修改文件名,文件名后綴不要加上默認的.tmp,即可覆蓋原文件) 

 Ctrl+O

  退出編輯 
 Ctrl+X

在sudoers文件中加一行:

jenkins ALL=(ALL) NOPASSWD:ALL

執行完上述操作后發現還是不行!!!!!為毛線呢?   原來我的用戶是dh   雖然jenkins安裝時自創了個用戶叫jenkins但是之前我已經改成dh來管理jenkins了所以需要添加

dh ALL=(ALL) NOPASSWD:ALL

到此可以終於可以構建了!!!!!!!


 




另外,記錄個小事,登陸阿里雲倉庫的時候 用-u 和-p 不然阿里雲提示沒有權限

記錄結束。

下次記錄JDK+TOMCAT的親測可安裝版!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM