標籤:
1. 鏡像管理1.1. 列出鏡像
Sudo docker images
1.2. 查看鏡像
Sudo docker images xxxx
1.3. 拉取鏡像
Sudo docker pull ubuntu
1.4. 尋找鏡像
Sudo docker search mysql
1.5. 刪除鏡像
sudo docker rmi xxxxx (force)
1.6. 構建鏡像1.6.1. Docker commit
不推薦,建議使用docker build+ docker file
1.6.2. Docker Build + Dockerfile
建立static_web目錄
建立Dockerfile設定檔:
Build:
1.6.3. 從git倉庫構建鏡像
1) git建立dockerfile
輸入檔案內容:
# vesion: 0.0.1
FROM ubuntu:14.04
MAINTAINER Jay Zhan "[email protected]"
RUN apt-get install -y nginx
RUN echo ‘Hi, I am in you container‘ > /usr/share/nginx/html/index.html
EXPOSE 8090
2) 擷取github中dockerfile檔案的raw連結
https://raw.githubusercontent.com/duruo850/docker/master/test.dockerfile
簡寫
https://rawgit.com/duruo850/docker/master/test.dockerfile
3) 使用該連結build
sudo docker build -t="jay/web_from_git" \
https://rawgit.com/duruo850/docker/master/test.dockerfile
4) 查看鏡像
5) 緩衝鏡像
Docker的每一次構建都會緩衝一個本地的鏡像,所以從哪一步出錯,就進入前鏡像輸入該命令即可知道什麼問題;
如果構建過程都是一樣的,將採用同一個鏡像
如果不想使用緩衝,比如apt-get update命令,將不會重新整理apt包緩衝,這時候需要不使用緩衝
sudo docker build –no-cache -t="jay/web_from_git" .
6) 從鏡像啟動容器
sudo docker run -i -t -p 10080:80 --name static_web2 jay/static_web nginx -g "daemon off;"
使用宿主機的10080連接埠映射虛擬機器的80連接埠
查看宿主機的10080連接埠效果:
和我們nginx的index.html的輸出內容一致
7) 將鏡像推送到docker hub
報錯:unauthorized: access to the requested resource is not authorized
解決:需要使用docker login先登陸
只能上傳到docker hub賬戶對應的倉庫(docker hub 賬戶/xxxxxx),不可以上傳到root倉庫(xxxxx),
去docker hub賬戶查看倉庫:
1.6.4. 自動構建
原始碼託管於github
Github代碼有變化時,dockerhub自動擷取Dockerfile,自動構建docker容器
Github
Github代碼的根目錄需要提供Dockerfile設定檔
DockerHub
1.6.5. Dockerfile指令
CMD指令指定一個容器啟動時要啟動並執行命令。和RUN命令有些類似,只是RUN命令是構建是要啟動並執行命令。RUN命令可以覆蓋CMD命令
建立dockerfile:
構建鏡像:
啟動鏡像:
RUN命令覆蓋:
Ls命令覆蓋了/bin/bash命令
ENTRYPOINT和CMD命令唯一區別就是不會被RUN命令覆蓋
RUN的命令列的參數會被當做參數再次傳遞給ENTRYPOINT命令
RUN可以使用—entrypoint標誌覆蓋該命令
建立鏡像構建新容器時,在容器內部設定一個工作目錄,ENTRYPOINT和/或者CMD命令都會在此目錄下執行
RUN可以使用-W標誌覆蓋該命令
在鏡像構建過程中設定環境變數
環境變數會持久儲存到鏡像構建的任何容器中
RUN可以使用-e標誌來傳遞環境變數,這些變數將只會在運行時有效
用來指定該鏡像的運行使用者
RUN可以使用-u標誌來覆蓋該變數
如果不指定使用者組,預設使用者組為root
用來向基於鏡像構建的容器添加卷,資料共用功能
用來將構建環境下的檔案和目錄複寫到鏡像中,
可以添加構建環境的任何檔案
會將一些歸檔檔案(gzip,tar,xz,bzip2)等解開,然後再放到目標目錄
如果目錄位置不存在的話,Docker將會為我們建立這個全路徑,
ADD命令使得構建緩衝變得無效
與ADD命令類似,不過COPY不會像ADD那樣去提取和解開歸檔檔案
只能複製構建目錄下的檔案,和Dockerfile處於同一個目錄
如果目錄位置不存在的話,Docker將會為我們建立這個全路徑,
為鏡像添加觸發器,當一個鏡像被當做其他鏡像的基礎鏡像時,該鏡像的觸發器將會執行
為了防止遞迴調用,這些命令不能用在ONBUILD中:FROM, ONBUILD, MAINTAINER等
paas架構之docker——鏡像管理