您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關Linux中安裝部署Docker管理工具Drone的操作方法,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
Drone 是一個構建在Docker之上的開源持續集成平臺(CI)。Drone 提供了一組預建的Docker映像,支持12+種語言和幾乎所有主要的數據庫。這意味著你不必花時間來安裝軟件和配置您的構建環境。當然,如果你需要一個高度定制的環境Drone提供了足夠的靈活性來使用自定義Docker映像。
Drone 完全采用Go語言開發。具有快速,高效的特點。
與其他的CI服務相比有什么不同?
1.Drone是開源的
2.Drone是構建在Docker之上
3.Drone 輕松托管在自己的基礎架構之上
4.Drone 提供一個 CLI 來運行本地構建,在Docker容器中
5.Drone 默認與 GitHub 集成,很快將支持Bitbucket patch
1. 安裝 Docker
首先,我們要安裝 docker,因為這是 Drone 的工作流的最關鍵的元素。Drone 合理的利用了 docker 來構建和測試應用。容器技術提高了應用部署的效率。要安裝 docker ,我們需要在不同的 linux 發行版本運行下面對應的命令,我們這里會說明 Ubuntu 14.04 和 CentOS 7 兩個版本。
Ubuntu
要在 Ubuntu 上安裝 Docker ,我們只需要運行下面的命令。
代碼如下:
# apt-get update
# apt-get install docker.io
安裝之后我們需要使用service 命令重啟 docker 引擎。
代碼如下:
# service docker restart
然后我們讓 docker 在系統啟動時自動啟動。
代碼如下:
# update-rc.d docker defaults
Adding system startup for /etc/init.d/docker ...
/etc/rc0.d/K20docker -> ../init.d/docker
/etc/rc1.d/K20docker -> ../init.d/docker
/etc/rc6.d/K20docker -> ../init.d/docker
/etc/rc2.d/S20docker -> ../init.d/docker
/etc/rc3.d/S20docker -> ../init.d/docker
/etc/rc4.d/S20docker -> ../init.d/docker
/etc/rc5.d/S20docker -> ../init.d/docker
CentOS
第一,我們要更新機器上已經安裝的軟件包。我們可以使用下面的命令。
代碼如下:
# sudo yum update
要在 centos 上安裝 docker,我們可以簡單的運行下面的命令。
代碼如下:
# curl -sSL https://get.docker.com/ | sh
安裝好 docker 引擎之后我么只需要簡單使用下面的systemd 命令啟動 docker,因為 centos 7 的默認初始化系統是 systemd。
代碼如下:
# systemctl start docker
然后我們要讓 docker 在系統啟動時自動啟動。
代碼如下:
# systemctl enable docker
代碼如下:
ln -s '/usr/lib/systemd/system/docker.service' '/etc/systemd/system/multi-user.target.wants/docker.service'
2. 安裝 SQlite 驅動
Drone 默認使用 SQlite3 數據庫服務器來保存數據和信息。它會在 /var/lib/drone/ 自動創建名為 drone.sqlite 的數據庫來處理數據庫模式的創建和遷移。要安裝 SQlite3 我們要完成以下幾步。
Ubuntu 14.04
因為 SQlite3 存在于 Ubuntu 14.04 的默認軟件庫,我們只需要簡單的使用 apt 命令安裝它。
代碼如下:
# apt-get install libsqlite3-dev
CentOS 7
要在 Centos 7 上安裝需要使用下面的 yum 命令。
代碼如下:
# yum install sqlite-devel
3. 安裝 Drone
最后,我們安裝好依賴的軟件,我們現在更進一步的接近安裝 Drone。在這一步里我們只簡單的從官方鏈接下載對應的二進制軟件包,然后使用默認軟件包管理器安裝 Drone。
Ubuntu
我們將使用 wget 從官方的 Debian 文件下載鏈接下載 drone 的 debian 軟件包。下面就是下載命令。
代碼如下:
# wget downloads.drone.io/master/drone.deb
Resolving downloads.drone.io (downloads.drone.io)... 54.231.48.98
Connecting to downloads.drone.io (downloads.drone.io)|54.231.48.98|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7722384 (7.4M) [application/x-debian-package]
Saving to: 'drone.deb'
100%[======================================>] 7,722,384 1.38MB/s in 17s
2015-11-06 14:09:28 (456 KB/s) - 'drone.deb' saved [7722384/7722384]
下載好之后,我們將使用 dpkg 軟件包管理器安裝它。
代碼如下:
# dpkg -i drone.deb
Selecting previously unselected package drone.
(Reading database ... 28077 files and directories currently installed.)
Preparing to unpack drone.deb ...
Unpacking drone (0.3.0-alpha-1442513246) ...
Setting up drone (0.3.0-alpha-1442513246) ...
Your system ubuntu 14: using upstart to control Drone
drone start/running, process 9512
CentOS
在 CentOS 機器上我們要使用 wget 命令從下載鏈接下載 RPM 包。
代碼如下:
# wget downloads.drone.io/master/drone.rpm
--2015-11-06 11:06:45-- http://downloads.drone.io/master/drone.rpm
Resolving downloads.drone.io (downloads.drone.io)... 54.231.114.18
Connecting to downloads.drone.io (downloads.drone.io)|54.231.114.18|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7763311 (7.4M) [application/x-redhat-package-manager]
Saving to: ‘drone.rpm’
100%[======================================>] 7,763,311 1.18MB/s in 20s
2015-11-06 11:07:06 (374 KB/s) - ‘drone.rpm’ saved [7763311/7763311]
然后我們使用 yum 安裝 rpm 包。
代碼如下:
# yum localinstall drone.rpm
4. 配置端口
安裝完成之后,我們要先進行配置才能工作起來。drone 的配置文件在/etc/drone/drone.toml 。默認情況下 drone 的 web 接口使用的是80,而這也是 http 默認的端口,如果我們修改它,請按下面所示的修改配置文件里 server 塊對應的值。
代碼如下:
[server]
port=":80"
5. 集成 Github
為了運行 Drone 我們必須設置最少一個和 GitHub、GitHub 企業版,Gitlab,Gogs,Bitbucket 關聯的集成點。在本文里我們只集成了 github,但是如果我們要集成其他的服務,我們可以在配置文件做修改。為了集成 github 我們需要在github 的設置里創建一個新的應用:https://github.com/settings/developers 。
要創建一個應用,我們需要在 New Application 頁面點擊 Register,然后如下所示填表。
我們應該保證在應用的配置項里設置了授權回調鏈接,鏈接看起來類似 http://drone.linoxide.com/api/auth/github.com。然后我們點擊注冊應用。所有都做好之后我們會看到我們需要在我們的 Drone 配置文件里配置的客戶端 ID 和客戶端密鑰。
在這些都完成之后我們需要使用文本編輯器編輯 drone 配置文件,比如使用下面的命令。
代碼如下:
# nano /etc/drone/drone.toml
然后我們會在 drone 的配置文件里面找到[github] 部分,緊接著的是下面所示的配置內容
代碼如下:
[github]
client="3dd44b969709c518603c"
secret="4ee261abdb431bdc5e96b19cc3c498403853632a"
# orgs=[]
# open=false
6. 配置 SMTP 服務器
如果我們想讓 drone 使用 email 發送通知,那么我們需要在 SMTP 配置里面設置我們的 SMTP 服務器。如果我們已經有了一個 SMTP 服務,那就只需要簡單的使用它的配置文件就行了,但是因為我們沒有一個 SMTP 服務器,我們需要安裝一個 MTA 比如 Postfix,然后在 drone 配置文件里配置好 SMTP。
Ubuntu
在 ubuntu 里使用下面的 apt 命令安裝 postfix。
代碼如下:
# apt-get install postfix
CentOS
在 CentOS 里使用下面的 yum 命令安裝 postfix。
代碼如下:
# yum install postfix
安裝好之后,我們需要編輯我們的 postfix 配置文件。
代碼如下:
# nano /etc/postfix/main.cf
然后我們要把 myhostname 的值替換為我們自己的 FQDN,比如 drone.linoxide.com。
代碼如下:
myhostname = drone.linoxide.com
現在開始配置 drone 配置文件里的 SMTP 部分。
代碼如下:
# nano /etc/drone/drone.toml
找到[smtp] 部分補充上下面的內容。
代碼如下:
[smtp]
host = "drone.linoxide.com"
port = "587"
from = "root@drone.linoxide.com"
user = "root"
pass = "password"
注意:這里的 user 和 pass 參數強烈推薦一定要改成某個具體用戶的配置。
7. 配置 Worker
如我們所知的 drone 利用了 docker 完成構建、測試任務,我們需要把 docker 配置為 drone 的 worker。要完成這些需要修改 drone 配置文件里的[worker] 部分。
代碼如下:
# nano /etc/drone/drone.toml
然后取消底下幾行的注釋并且補充上下面的內容。
代碼如下:
[worker]
nodes=[
"unix:///var/run/docker.sock",
"unix:///var/run/docker.sock"
]
這里我們只設置了兩個節點,這意味著上面的配置文件只能同時執行2 個構建操作。要提高并發性可以增大節點的值。
代碼如下:
[worker]
nodes=[
"unix:///var/run/docker.sock",
"unix:///var/run/docker.sock",
"unix:///var/run/docker.sock",
"unix:///var/run/docker.sock"
]
使用上面的配置文件 drone 被配置為使用本地的 docker 守護程序可以同時構建4個任務。
8. 重啟 Drone
最后,當所有的安裝和配置都準備好之后,我們現在要在本地的 linux 機器上啟動 drone 服務器。
Ubuntu
因為 ubuntu 14.04 使用了 sysvinit 作為默認的初始化系統,所以只需要簡單執行下面的 service 命令就可以啟動 drone 了。
代碼如下:
# service drone restart
要讓 drone 在系統啟動時也自動運行,需要運行下面的命令。
代碼如下:
# update-rc.d drone defaults
CentOS
因為 CentOS 7使用 systemd 作為初始化系統,所以只需要運行下面的 systemd 命令就可以重啟 drone。
代碼如下:
# systemctl restart drone
要讓 drone 自動運行只需要運行下面的命令。
代碼如下:
# systemctl enable drone
9. 添加防火墻例外規則
眾所周知 drone 默認使用了80 端口而我們又沒有修改它,所以我們需要配置防火墻程序允許80 端口(http)開放并允許其他機器可以通過網絡連接。
Ubuntu 14.04
iptables 是最流行的防火墻程序,并且 ubuntu 默認安裝了它。我們需要修改 iptable 以暴露端口80,這樣我們才能讓 drone 的 web 界面在網絡上被大家訪問。
代碼如下:
# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# /etc/init.d/iptables save
CentOS 7
因為 CentOS 7 默認安裝了 systemd,它使用 firewalld 作為防火墻程序。為了在 firewalld 上打開80端口(http 服務),我們需要執行下面的命令。
代碼如下:
# firewall-cmd --permanent --add-service=http
success
# firewall-cmd --reload
success
10. 訪問 web 界面
現在我們將在我們最喜歡的瀏覽器上通過 web 界面打開 drone。要完成這些我們要把瀏覽器指向運行 drone 的服務器。因為 drone 默認使用80 端口而我們有沒有修改過,所以我們只需要在瀏覽器里根據我們的配置輸入http://ip-address/ 或 http://drone.linoxide.com 就行了。在我們正確的完成了上述操作后,我們就可以看到登錄界面了。
因為在上面的步驟里配置了 Github,我們現在只需要簡單的選擇 github 然后進入應用授權步驟,這些完成后我們就可以進入工作臺了。
這里它會同步我們在 github 上的代碼庫,然后詢問我們要在 drone 上構建那個代碼庫。
這一步完成后,它會詢問我們在代碼庫里添加.drone.yml 文件的新名稱,并且在這個文件里定義構建的過程和配置項,比如使用那個 docker 鏡像,執行那些命令和腳本來編譯,等等。
我們按照下面的內容來配置我們的.drone.yml。
代碼如下:
image: python
script:
- python helloworld.py
- echo "Build has been completed."
這一步完成后我們就可以使用 drone 應用里的 YAML 格式的配置文件來構建我們的應用了。所有對代碼庫的提交和改變此時都會同步到這個倉庫。一旦提交完成了,drone 就會自動開始構建。
所有操作都完成后,我們就能在終端看到構建的結果了。
看完上述內容,你們對Linux中安裝部署Docker管理工具Drone的操作方法有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。