2015年6月9日 星期二

dockerfile

1.FROM
格式為FROM<image>或FROM<image>:<tag>
第一條指令必須為FROM指令。並且,如果在同一個Dockerfile中建立多個image時,可以使用多個FROM指令(每個image一次)

2.MAINTAINER
格式為MAINTAINER<name>,指定維護者資訊。

3.RUN
格式為RUN<command>或RUN["executable", "paraml", "param2"]。
前者是在shell終端中執行命令,即/bin/sh -c;後者則是使用exec執行。指定使用其他shell終端可以透過第二種方式操作,例如RUN["/bin/bash", "-c", "echo hello"]。
每條RUN指令會在目前映像檔狀態下執行指定命令,並commit成新的映像檔。當命令過長時可以使用\來換行。

4.CMD
支援三種格式

  • CMD ["executable","param1","param2"] 使用 exec 執行,推薦使用;
  • CMD command param1 param2 在 /bin/sh 中執行,使用在給需要互動的指令;
  • CMD ["param1","param2"] 提供給 ENTRYPOINT 的預設參數;
如果使用者啟動容器時候指定了運行的命令,則會覆蓋掉 CMD 指定的命令。

指定啟動容器時執行的命令,每個 Dockerfile 只能有一條 CMD 命令。如果指定了多條命令,只有最後一條會被執行。

5.EXPOS
格式為 EXPOSE <port> [<port>...]。
設定 Docker 伺服器容器對外的埠號,供外界使用。在啟動容器時需要透過 -P,Docker 會自動分配一個埠號轉發到指定的埠號。

6.ENV
格式為 ENV <key> <value>。 指定一個環境變數,會被後續 RUN 指令使用,並在容器運行時保持。
ENV PG_MAJOR 9.3
ENV PG_VERSION 9.3.4
RUN curl -SL http://example.com/postgres-$PG_VERSION.tar.xz | tar -xJC /usr/src/postgress && …

ENV PATH /usr/local/postgres-$PG_MAJOR/bin:$PATH

7.ADD
格式為 ADD <src> <dest>。

該命令將複製指定的 <src> 到容器中的 <dest>。 其中 <src> 可以是 Dockerfile 所在目錄的相對路徑;也可以是一個 URL;還可以是一個 tar 檔案(其複製後會自動解壓縮)。

8.COPY
格式為 COPY <src> <dest>。
複製本地端的 <src>(為 Dockerfile 所在目錄的相對路徑)到容器中的 <dest>。
當使用本地目錄為根目錄時,推薦使用 COPY。

9.ENTRYPOINT
兩種格式:
ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2(shell中執行)。
指定容器啟動後執行的命令,並且不會被 docker run 提供的參數覆蓋。

每個 Dockerfile 中只能有一個 ENTRYPOINT,當指定多個時,只有最後一個會生效。

10.VOLUME
格式為 VOLUME ["/data"]。
建立一個可以從本地端或其他容器掛載的掛載點,一般用來存放資料庫和需要保存的資料等。

11.USER
格式為 USER daemon。
指定運行容器時的使用者名稱或 UID,後續的 RUN 也會使用指定使用者。
當服務不需要管理員權限時,可以透過該命令指定運行使用者。並且可以在之前建立所需要的使用者,例如:RUN groupadd -r postgres && useradd -r -g postgres postgres。要臨時取得管理員權限可以使用 gosu,而不推薦 sudo。


12.WORKDIR
格式為 WORKDIR /path/to/workdir。
為後續的 RUN、CMD、ENTRYPOINT 指令指定工作目錄。
可以使用多個 WORKDIR 指令,後續命令如果參數是相對路徑,則會基於之前命令指定的路徑。例如

WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd

則最終路徑為 /a/b/c。

13.ONBUILD
格式為 ONBUILD [INSTRUCTION]。
指定當建立的映像檔作為其它新建立映像檔的基底映像檔時,所執行的操作指令。
例如,Dockerfile 使用以下的內容建立了映像檔 image-A。

[...]
ONBUILD ADD . /app/src
ONBUILD RUN /usr/local/bin/python-build --dir /app/src
[...]
如果基於 image-A 建立新的映像檔時,新的 Dockerfile 中使用 FROM image-A指定基底映像檔時,會自動執行 ONBUILD 指令內容,等於在後面新增了兩條指令。

FROM image-A

#Automatically run the following
ADD . /app/src
RUN /usr/local/bin/python-build --dir /app/src

使用 ONBUILD 指令的映像檔,推薦在標籤中註明,例如 ruby:1.9-onbuild。


相關網址:

  1. http://philipzheng.gitbooks.io/docker_practice/content/dockerfile/README.html

docker指令

//建置container
$ docker run -d -p
[-p] port
[-name] container name
[--link] {--link name:alias}將container 連結。
name:要連結的container name
alias: 連結container所識別的別名
[-v] [本機路徑]:[放置container路徑]掛載檔案
[-it] 設定不讓外部連結
[-d] or [-id] 啟動背景執行container,離開container時將停止執行
[-td] 啟動背景執行container,離開container時,仍然繼續背景執行

//啟用master-slave模式
//建立master container
$ docker run -d -e REPLICATION_MASTER=true -P --name mysql mysql
//建立slave container
$ docker run -d -e REPLICATION_SLAVE=true -P --link mysql:mysql mysql

//建置docker image
$ docker build -t [container] .

//search container 星評十次以上
$ docker search -s 10 [ubuntu]

//標記tag
$ docker tag [目前擁有的container name] [tag container name]

//查看container版本編號
$ docker run -ti [container name] /bib/bash

//檢視環境變數
$ docker exec [container name] env

//自訂container name
$ docker run -f -P --name [name] image


//變更container name
$ docker inspect -f "[name]" {container id}

//取得詳細資訊
$ docker inspect [image id]

//刪除image
$ docker rmi [repository or image id]

//刪除所有image of container,後再刪除image
$ docker rm
-f, --force=false 強制停止並刪除一個正在執行中的container
-l, --link=false 刪除container的連結,但保留container
-v, --volumes=false 刪除container掛載的volume

//查看本機存在所有container
$ docker ps -a

//映像檔產生的容器來建立
$ docker commit -m "Added a new file" -a "Docker newbee" [image id]
-a, --author=""作者資訊
-m, --message=""加入commit資訊
-p, --pause=true commit時暫停容器運作

//匯入壓縮檔
$ sudo cat ubuntu-14.04-x86_64-minimal.tar.gz | docker import - ubuntu:14.04
or
$ sudo docker import http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz ubuntu:14.04

//載入image
$ docker load --input ubuntu_14.04.tar
or
$ docker load < ubuntu_14.04.tar

//上傳image
$ docker tag [image id] repository:tag
$ docker push [user]/[repository]:tag

//建立container
$ docker create -it ubuntu:latest

//停止container
$ docker stop [image id]

//重啟container
$ docker restart [image id]

//進入container
$ docker run -idt ubuntu
$ docker attach [NAMES]
or
$ docker exec -ti [image id] /bin/bash
or
$ docker exec -ti [image id] bash

//匯出container
$ docker export [image id] > [ubuntu.tar]

//匯入container
$ cat ubuntu.tar | sudo docker import - test/ubuntu:14.04

//登入


//刪除所有container
$ sudo docker ps -a -q | xargs -n 1 -I {} sudo docker rm {}

# Delete all containers
$ docker rm $(docker ps -a -q)
# Delete all images
$ docker rmi $(docker images -q)
// Delete grep container
$ docker rm $(docker ps -a | awk '{ print $1,$2 }' | grep 192.168.12.7:5000/golang-test1:v3 | awk '{print $1 }')

==============================================
docker 短指令安裝
下載 .bashrc_docker,並將內容放到 .bashrc 中。
$ wget -P https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker
$ echo "[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker" >> ~/.bashrc; source ~/.bashrc


參考網站:

  1. https://neiltw.gitbooks.io/book/content/chapter1.html
  2. https://philipzheng.gitbooks.io/docker_practice/content/appendix_command/index.html
  3. http://puremonkey2010.blogspot.tw/2015/05/docker-practice-container.html
  4. 中文介紹https://joshhu.gitbooks.io/dockercommands/content/Containers/IntoContainers.html


//安裝ssh方式
page 96



2015年1月24日 星期六

sass

編譯指令
sass --watch [file_name].scss:[file_name].css


相關網址:

  1. http://sass-lang.com/

2015年1月19日 星期一

mysql相關資訊

#select特殊符號 escape

ex:$str = str_replace(['%', '_'], ['\%', '\_'], $str);



#intersection(交集)

可得到有“engine”屬性的值有Cloud & Compution的資料

ex:select * from book where tag=‘Cloud’ intersection tag=‘Computiong'



#調笑SQL查詢效能

資料庫引擎

javascript指令

#把物件或陣列轉成json格式資料
json.stringify()

#把json格式的資料轉成可利用的物件或陣列
json.parser()


#console.time() & console.timeEnd() 可評估特定區域程式碼效能

#js常用功能(proccess、util、)

aws(雲端伺服器) - 服務說明

AWS免費
#EC2:750[機器:小時]
#ELB:750[機器:小時]
#EBS:10GB容量、100萬次的讀寫、1GB快照、1萬次讀取快照、1千次儲存快照
#S3:5GB容量、2萬次讀取、2千次儲存
#網路傳輸:上傳和下載各15GB,總共30GB(搭配cloudWatch網路傳輸量要收費)
#SimpleDB:25個機器小時(200萬次讀取)、1GB儲存量、但是Domain如果6個月為存取,將自動被移除
#SQS:10萬次請求
#SNS:10萬次請求、10萬次http通知、1千次email通知
#CloudWatch:10次警報
#SES:從EC2或是Beanstalk使用SES寄電子郵件,每天2千封
#EC2與S3傳輸不收費

功能
運算(EC2、Elastic MapReduce、AutoScaling、Elastic Beanstalk)
儲存(S3、EBS)
資料庫(SimpleDB、RDS)
網路(CloudFront、ELB、EIP、VPC)
資訊(SQS、SNS、SES)
監控(Amazon CloudWatch)
付費(EPS、DevPay)

-----
RDS收費(低至高)

  1. Small
  2. Large
  3. Extra Large
  4. High-Memory Extra Large
  5. High-Memory Double EXtra Large
  6. High-Memory Quadruple Extra Large


存取控制清單ACL(Access Control List)
LBS(Location-based service)
簡單儲存服務S3(Simple Storage Service)
關聯式資料庫服務RDS(Relational Database Service)
CloudFront屬於(CDN)服務
低備份儲存RRS(Reduced Redundancy Storage)
彈性運算雲EC2(Elastic Computing Cloud)
資料庫安全群組與EC2安全群組一樣
叢集運算虛擬機(cluster compute instance)
社群服務(SNS)
彈性負載平衡ELB(Elastic Load Balancing)
訊息導向中介體MOM(Message oriented middleware)
企業服務匯流排(ESB)
服務導向架構(SOA)
簡單序列服務SQS(Simple Queue Service)
簡單通知服務SNS(Simple Notification Service)
EIP(Elastic IP Addresses)
內容傳遞網路CDN(Content Delivery Network)
EMR(Elastic MapReduce)


AWS解決延展性問題的相關服務
延展性的樣式 相關AWS服務
叢集 EC2、auto scaling
負載平衡 ELB(Elastic Load Balancing)、EIP(Elastic IP Address)
資料分割 S3、CloudFront、SimpleDB
分散式運算 EMR(Elastic MapReduce)
放鬆一致性的限制 SimpleDB、RDS(Relational Database Service)
非同步及批次作業 SQS、SNS

EBS-backed & S3-backed比較表
特性 EBS-backed S3-backed
開機時間 少於1分鐘 少於5分鐘
root device最大限制 1TB 10GB
AMI存放處 EBS S3
資料存續性 EC3虛擬機器失效時,資料仍在EBS volume上。EC2虛擬機器關機時,EBS volume可以選擇繼續留存 EC2虛擬機器失效或關機時,資料不存在。但除了root device以外,可以mount EBS volumes
升級性 虛擬機器處於stop狀態時,可更改虛擬機器類型,kernel,RAM disk 所有屬性不可改
收費 EC2時數,EBS volume儲存費用、EBS snapshot儲存AMI費用 EC2時數、S3儲存AMI的費用
stop狀態 可處於stop狀態、不算EC2時數。存在EBS volume上的資料會保存,但是要注意instance storage上的資料會消失 不能處於stop狀態,不是開就是關

其他服務
延展性的樣式 相關AWS服務
Amazon Beanstalk
Amazon Simple Email Service 簡單郵件服務
AWS CloudFormation
Amazon Flexible Payments Service 彈性付費服務(FPS)
Amazon DevPay 開發者付費服務
Amazon Fulfillment Web Service 墊子商務實現服務(FWS)
Amazon Mechanical Turk 人力外包
AWS import/Export 可直接寄硬碟給AWS將資料抓取下來
AWS Premium Support商業支援
Amazon Route 53 Amazon推出DNS服務可參考http://aws.amazon.com/route53

服務說明
#EBS

  1. EBS建立快照(snapahot),增加備份副本
  2. EBS就像SAN(storage area network)


#S3 & CloudFront
S3 永久儲存
CloudFront 暫時性

#建立RDS副本
點選DB Instance

#ELB
可搭配Apache、CloudWatch可以讓我們更方便往高延展性、高可用性方向前進

#自動延展(auto scaling)
auto scaling不收費,搭配CloudWatch收費

#簡單序列服務SQS
屬於分散式序列

#簡單通知服務SNS
補足SQS不足

#EIP
實現重新導向

#CloudFront
可讀S3「公開」、「私有」URL

#CloudWatch
監視系統狀態


注意
#Key
Access Key ID(不需保密)、Secret Access Key(需保密)

#linux ssh連線
key : test.pem
ex: ssh -i test.pem root@127.0.0.1

#http負載平衡資訊



相關網址
http://aws.amazon.com/free(價格)
http://blog.changyy.org/2009/12/amazon-ec2-windows-server-2003-rdp.html

http://blog.developer.tw/post/740-aws-ec2-free-instance