CI tool chain with Docker ( 1 ) — Install Docker
6 min readJun 21, 2017
環境
- ububtu server 14.04 LTS
簡介
主要以docker方式進行安裝以下的服務
- dockerUI
- gitlab
- jenkins
安裝Docker
主要參考Docker官方網站的教學,因Server版本不同略有差異,我們使用Ububtu14.04的安裝方式
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
編輯 /etc/apt/sources.list.d/docker.list
若 /etc/apt/sources.list.d/docker.list 不存在,就自己建立個新的。打開這份 docker.list
,清空所有內容,然後加入以下這行:
deb https://apt.dockerproject.org/repo ubuntu-trusty main$ sudo apt-get update
# Purge the old repo if it exists
$ sudo apt-get purge lxc-docker
$ apt-cache policy docker-engine
$ sudo apt-get install linux-image-extra-$(uname -r)
$ sudo apt-get install docker-engine
$ sudo service docker start
啟用Docker Engine REST API(若是安裝Ububtu 版本不同啟用方式會不同 ex.Ububtu LTS 16.04)
$ sudo vim /etc/init/docker.conf
找到如下區塊,把當中的DOCKER_OPTS=
改成DOCKER_OPTS='-H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock'
:
script
# modify these in /etc/default/$UPSTART_JOB (/etc/default/docker)
DOCKERD=/usr/bin/dockerd
DOCKER_OPTS='-H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock'
if [ -f /etc/default/$UPSTART_JOB ]; then
. /etc/default/$UPSTART_JOB
fi
exec "$DOCKERD" $DOCKER_OPTS --raw-logs
end script
然後重開Docker
$ sudo service docker restart
安裝Docker GUI監控工具
$ sudo docker run -d -p 9090:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock --restart always uifd/ui-for-docker
用Apache 保護Docker GUI 監控工具 (若無安全性疑慮可以跳過此步驟)
Step1. 安裝Apache2 以及 proxy module
$ sudo apt-get update
$ sudo apt-get install apache2
$ sudo apt-get install -y build-essential
$ sudo apt-get install -y libapache2-mod-proxy-html libxml2-dev
$ sudo apt-get install apache2-utils
Step2. 啟用 proxy module
$ sudo a2enmod
# 系統接著會詢問你要啟用什麼module, 請輸入下面這串:
proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html
Step3. 設定未來只要看到 http://[host-ip]/docker-ui/ 的網址,自動反向代理到 http://localhost:9090/ 上面的Docker GUI
$ sudo vim /etc/apache2/sites-enabled/000-default.conf
在 <VirtualHost *:80>
的區塊內,加入以下:
ProxyPreserveHost On
ProxyPass /docker-ui/ http://localhost:9090/
ProxyPassReverse /docker-ui/ http://localhost:9090/
Step4. 用密碼保護GUI介面
建立密碼檔
$ sudo mkdir /etc/htpasswd
$ sudo htpasswd -c /etc/htpasswd/.htpasswd [你設定的帳號]
# 此時會問密碼要設為什麼? 回答 [你設定的密碼]
再次編輯Apache2 設定檔,這次我們是要加入密碼設定
$ sudo vim /etc/apache2/sites-enabled/000-default.conf
在<VirtualHost *:80>
的區塊 之後 加入以下區塊:
<Location /docker-ui>
AuthType Basic
AuthName "Authentication Required"
AuthUserFile "/etc/htpasswd/.htpasswd"
Require valid-user
Order allow,deny
Allow from all
</Location>
Step5. 重新啟動 Apache2
$ sudo /etc/init.d/apache2 restart
Step7. 測試
由於我們已經在路由器設定過外網:80 port 會指向 master 節點的80 port (192.168.1.100:80) 也就是剛剛安裝好的Apache2 服務,因此,如果我們在 外部的瀏覽器輸入(http://[host-ip/domain ]/docker-ui/),就會被詢問密碼,密碼通過之後,就會看到Docker GUI 管理介面了