運維篇: docker 如何製作映象?
1 將容器 變成 映象
2 buildfile 建立新映象。
常見的一些問題?
把一個容器 變成一個映象。
docker commit <容器id> [版本號]
當我們在製作自己的映象的時候,會在container中安裝一些工具,修改配置,
如果不做commit儲存起來, 那麼 container停止之後再啟動,這些更改就消失了。。
!!
docker create –name myjava3 -it java /bin/bash 建立容器
docker start myjava3 啟動映象
docker ps 檢視當前的docker 進城。
docker exec -it contierid /bin/bash # 進入這個容器
ls : 檢視容器當前目錄
mkdir 在容器中建立目錄
docker commit id myjava
docker images 檢視當前映象。
commint:
好處:方便快捷。
缺點: 不規範 無法自動化
buildfile 模式
是最標準的做法 也是一個打包的技術
提供了一個工具
一個 java 映象啊的 builedfile檔案
from (從哪個映象開始)maintainer (誰維護的)
env ( 增加一些 環境變數 傳輸環境變數)
run (在容器內執行 linux 命令安裝一些包)
~~
docker build -t leader/java -
將前面的檔案 build 出來
在當前目錄下查詢這個檔案
在容器編譯過程中 所有的指令都是在容器內部執行的,
和 宿主機無關。
run curl http://baidu.com
會發現無法連線。
是因為在docker容器中沒有設定代理
加上這個環境變數後就可以訪問外部網站web了。
複雜案例實戰
以 ubto 新增 java tomcat ssh server 負責映象的做法
FROM ubuntu
MAINTAINER “[email protected]”
RUN echo “deb http://archive.ubuntu.com/ubuntn precise main universe”
/etc/apt/sources.list
Run apit-get update
RUN apt-get install -y openssl-server
Run mkdir -p /var/run/sshd
Run echo “root:123456” | chpasswd
Run apt-get install python-software-properties
RUN add=apt-repository ppa:webupd8teadm/java
run apt-agt update
RUN apt-get install -y vim wget curl oracle-java7-installer tomcat 7
容器上需要開放 SSH埠
EXPOSE 22
容器上需要開放 tomcat 8080埠
EXPOSE = 8080
ENTRYPOINT service tomcat7 start && /usr/bin/sbin/sshd -D
設定 tomcat7 啟動初始化 ssh放後臺執行
用 supervisor
可以吧多個系統服務啟動起來。
在這個配置檔案中 可以寫多個啟動命令
也可以將 這個supervisor啟動放到前臺 可以直接管理後面的指令,
也可以自動重啟 也相當於一個監管者。
docker 友好的程式架構:
docker image —》 配置隔離 zookeeper
docker container 從 zk 獲取資訊