paas架構之docker——鏡像管理

來源:互聯網
上載者:User

標籤:

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命令

  CMD指令指定一個容器啟動時要啟動並執行命令。和RUN命令有些類似,只是RUN命令是構建是要啟動並執行命令。RUN命令可以覆蓋CMD命令

 

  建立dockerfile:

   

  構建鏡像:

   

  啟動鏡像:

   

  RUN命令覆蓋:

  Ls命令覆蓋了/bin/bash命令

  • ENTRYPOINT命令

  ENTRYPOINT和CMD命令唯一區別就是不會被RUN命令覆蓋

  RUN的命令列的參數會被當做參數再次傳遞給ENTRYPOINT命令

  RUN可以使用—entrypoint標誌覆蓋該命令

  • WORKDIR命令

  建立鏡像構建新容器時,在容器內部設定一個工作目錄,ENTRYPOINT和/或者CMD命令都會在此目錄下執行

  RUN可以使用-W標誌覆蓋該命令

  • ENV命令

  在鏡像構建過程中設定環境變數

  環境變數會持久儲存到鏡像構建的任何容器中

  RUN可以使用-e標誌來傳遞環境變數,這些變數將只會在運行時有效

  • USER命令

  用來指定該鏡像的運行使用者

  RUN可以使用-u標誌來覆蓋該變數

  如果不指定使用者組,預設使用者組為root

  • VOLUME命令

  用來向基於鏡像構建的容器添加卷,資料共用功能

  • ADD命令

  用來將構建環境下的檔案和目錄複寫到鏡像中,

  可以添加構建環境的任何檔案

  會將一些歸檔檔案(gzip,tar,xz,bzip2)等解開,然後再放到目標目錄

  如果目錄位置不存在的話,Docker將會為我們建立這個全路徑,

  ADD命令使得構建緩衝變得無效

  • COPY命令

  與ADD命令類似,不過COPY不會像ADD那樣去提取和解開歸檔檔案

  只能複製構建目錄下的檔案,和Dockerfile處於同一個目錄

  如果目錄位置不存在的話,Docker將會為我們建立這個全路徑,

  • ONBUILD命令

  為鏡像添加觸發器,當一個鏡像被當做其他鏡像的基礎鏡像時,該鏡像的觸發器將會執行

 

  為了防止遞迴調用,這些命令不能用在ONBUILD中:FROM, ONBUILD, MAINTAINER等

paas架構之docker——鏡像管理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.