跳到主要內容

發表文章

使用Cloud Registry - gcr.io來儲存您的docker image

Google提供每一個Cloud專案一個專屬的gcr.io registry作為docker image的存放地,透過gcr.io可以無限存放您的image,並且有提供簡單的查詢介面供使用者檢視所儲存的image與相關tag… 近一步使用將可透過與其他服務的串連,達到更多樣化的應用~ 從使用流程了解gcr.io在使用前,我們先來檢視gcr.io的使用流程
Step 1 - 幫你的image製作tag
docker tag [your-image] gcr.io/[your-project-id]/[your-image-name]
Step 2 - Push image到gcr.io
gcloud docker - push gcr.io/[your-project-id]/[your-image-name]
下面實際使用一個Dockerfile來作為範例,存放到gcr.io上...
首先,透過node.js的express套件來建立專案... [參考: https://expressjs.com/en/starter/installing.html]
$ mkdir myproject && cd myproject && express -e web
 warning: option `--ejs' has been renamed to `--view=ejs'
  create : web
  create : web/package.json
  create : web/app.js
  create : web/public
最近的文章

Using docker slave with Jenkins

Jenkins是一套常用的CICD管理工具,在Container的世界中,要透過Container來操作Jenkins將讓Jenkins變得更方便... 下面是以docker模式啟動常駐型的jenkins slave的方式...

首先,我們先透過Jenkins的管理介面來建立新永久節點,這邊要選擇”Permanent Agent”部分




接著設定該常駐節點的細部設定,包含執行程式數量與目錄等...



設定完後(test-slave),該節點暫時會在無法服務的狀態,我們直接在該slave的名稱上點選進入節點的設定畫面...



再詳細設定畫面中,我們可以看到該slave的secret資訊與agent的名稱,這部分可以用來當作之後我們啟動slave的參數...



有了agent的名稱與參數,我們可以透過下面指令啟動slave,然後提供jenkins使用...

docker run jenkinsci/jnlp-slave -url http://jenkins-server:port

ex:
docker run -d jenkinsci/jnlp-slave \
-url http://104.199.165.255:8080 \
1fe32ff0841d49cf324748d50e08257e79f9cbdf3c3f673ffa780e4f6ddf2a32 \
test-slave

參考:https://github.com/jenkinsci/docker-jnlp-slave

查詢使用某個image的instances

在Docker中,要查詢所有process很簡單,docker ps就會返回所有執行中的列表,也可以加上-a參數來show所有不管關閉或開啟的機器列表... 而如果希望找到由某個image開起來的instances,可以透過filter + ancestor來做到...docker ps -f ancestor=[image_name] 範例: docker ps -f ancestor=registry:2 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 54689a3084a4 registry:2 "/bin/registry /etc/d" 6 weeks ago Up 13 hours 0.0.0.0:80->5000/tcp registry 0bcb6beac991 registry:2 "/bin/registry /etc/d" 7 weeks ago Up 13 hours 0.0.0.0:5000->5000/tcp mwciotdemo_registry_1 搭配filter也可以透過label的方式來查詢... 幫啟動的instance加上label... # docker run -d -l mynginx nginx Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx 357ea8c3d80b: Pull complete 0fc04568277e: Pull complete 0bed9719ddcb: Pull complete Digest: sha256:d33834dd25d330da75dccd8add3ae2c9d7b12302b421b02cecb6cb7b34a1b6 Status…

網路監測工具

之前用過vnstat... 不過,看起來好多可以用的唷~ 有興趣可以參考:

http://www.binarytides.com/linux-commands-monitor-network/

使用CloudFlare來加上SSL

如果您在建置docker registry的過程中,常因為沒有HTTPS而要去設定client端的docker啟動方式,那這招一定要學一下! 下面使用apache htpasswd的認證方式,然後透過80 port不加上ssl key,由CloudFlare來提供SSL憑證,這樣Client端就不會在操作的時候報錯, Setting CloudFlare Enable Flexible SSL 在Crypto > SSL頁面,我們可以設定SSL成為Flexible,這樣的設定可以直接針對80 port的非SSL頁面加上SSL的功能,操作畫面如下: Enable CDN 接下來需要設定Record並啟動CDN的功能,也就是把Status的雲點一下,他會呈現流量過雲的圖示,這樣就可以直接Enable CDN,接下來ping這個domain name的話,IP就會先繞到CloudFlare。 Create the htpasswd file 接下來的動作跟前面介紹差不多,首先先準備您的密碼檔... 指令如下: docker run --entrypoint htpasswd registry:2 -Bbn [username] [password] >> /data/registry-auth/htpasswd Run registry 接下來可以透過docker啟動你的registry... 下面的compose file的volumes部分將會直接載入上面所產生的htpasswd檔案,作為認證資料庫... 另外,registry-data是未來存放image的實際位置,透過這個設定可以讓下次重新啟動的image不會遺失資料... docker-compose.yml: registry: restart: always image: registry:2 ports: - 80:5000 environment: - "REGISTRY_AUTH=htpasswd" - "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" - "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd&q…

Docker Image空間上的巧思

Docker Image空間上的巧思 Docker image在儲存時候也是以layer的方式儲存,因此在每個RUN都可以完整的保存中間的紀錄,但是往往也造成其他問題... 例如image空間非常巨大... From一個大的Image通常只會更大,小不下來... 例如: From centos RUN wget http://xxxx.xxxx/xxx.data #假設這裡有5G RUN rm xxx.data #本來以為會把5G刪掉 在上面的build file中,通常image build起來還會是5G... 下面是網路上找到可以Flatten Image的方式,透過簡單的export/import就可以讓之間的空間巧妙的縮減下來唷: docker export | docker import - some-image-name:latest 如果要完整地把Image在建置時候就最小化,可以修改dockerfile: From centos RUN wget http://xxxx.xxxx/xxx.data &&\ rm xxx.data 在一個RUN下面只會有一次的commit,就會有效的縮小image的空間唷~

lsync - 簡單操作的Linux同步服務

lsync - 簡單操作的Linux同步服務lsync是一個可以基於rsync傳輸的同步服務,他的好處是可以透過一個簡單的設定檔,即可完成自動化同步作業,讓管理上非常簡單。這邊簡單的以AWS與Google Cloud的兩台雲端主機進行同步作業:Remote: 54.172.25.83 (AWS US-East/N.Virginia)Local: 130.211.248.60 (GCE asia-east1-c)安裝lsyncDebian系列:apt-get update apt-get install git -y apt-get install cmake -y apt-get install build-essential-y apt-get install lua5.2 apt-get install liblua5.2-dev-y git clone https://github.com/axkibe/lsyncd.git cd lsyncd cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lsyncd-2.1.5 make && make installCentOS系列需要自行下載rpm安裝,可以參考附錄的文件:執行範例範例設定檔,在這邊是使用rsync的方式作為傳輸方法~settings { logfile ="/usr/local/lsyncd-2.1.5/var/lsyncd.log", statusFile ="/usr/local/lsyncd-2.1.5/var/lsyncd.status", inotifyMode = "CloseWrite", maxProcesses = 8, } sync { default.rsync, source = "/var/www/html", target = "ec2-user@54.172.25.83:/home/ec2-user/backup", maxDelays = 5, delay = 30, rsync = { bin…