Docker基礎,docker基礎鏡像

來源:互聯網
上載者:User

Docker基礎,docker基礎鏡像
 Docker是什麼

Docker是一個改進的容器技術。具體的“改進”體現在,Docker為容器引入了鏡像,使得容器可以從預先定義好的模版(images)建立出來,並且這個模版還是分層的。

Docker經常被提起的特點:
  • 輕量,體現在記憶體佔用小,高密度
  • 快速,毫秒啟動
  • 隔離,沙箱技術更像虛擬機器
Docker技術的基礎:
  • namespace,容器隔離的基礎,保證A容器看不到B容器. 6個名空間:User,Mnt,Network,UTS,IPC,Pid
  • cgroups,容器資源統計和隔離。主要用到的cgroups子系統:cpu,blkio,device,freezer,memory
  • unionfs,典型:aufs/overlayfs,分層鏡像實現的基礎
Docker組件:
  • docker Client用戶端————>向docker伺服器處理序發起請求,如:建立、停止、銷毀容器等操作
  • docker Server伺服器處理序—–>處理所有docker的請求,管理所有容器
  • docker Registry鏡像倉庫——>鏡像存放的中央倉庫,可看作是存放二進位的scm
Docker安裝

Docker的安裝非常簡單,支援目前所有主流作業系統,從Mac到Windows到各種Linux發行版
具體參考: docker安裝

Docker常見命令預留位置相關操作
  • docker create # 建立一個容器但是不啟動它
  • docker run # 建立並啟動一個容器
  • docker stop # 停止容器運行,發送訊號SIGTERM
  • docker start # 啟動一個停止狀態的容器
  • docker restart # 重啟一個容器
  • docker rm # 刪除一個容器
  • docker kill # 發送訊號給容器,預設SIGKILL
  • docker attach # 串連(進入)到一個正在啟動並執行容器
  • docker wait # 阻塞到一個容器,直到容器停止運行
擷取容器相關資訊
  • docker ps # 顯示狀態為運行(Up)的容器
  • docker ps -a # 顯示所有容器,包括運行中(Up)的和退出的(Exited)
  • docker inspect # 深入容器內部擷取容器所有資訊
  • docker logs # 查看容器的日誌(stdout/stderr)
  • docker events # 得到docker伺服器的即時的事件
  • docker port # 顯示容器的連接埠映射
  • docker top # 顯示容器的進程資訊
  • docker diff # 顯示容器檔案系統的前後變化
匯出容器
  • docker cp # 從容器裡向外拷貝檔案或目錄
  • docker export # 將容器整個檔案系統匯出為一個tar包,不帶layers、tag等資訊
執行
  • docker exec # 在容器裡執行一個命令,可以執行bash進入互動式
鏡像操作
  • docker images # 顯示本地所有的鏡像列表
  • docker import # 從一個tar包建立一個鏡像,往往和export結合使用
  • docker build # 使用Dockerfile建立鏡像(推薦)
  • docker commit # 從容器建立鏡像
  • docker rmi # 刪除一個鏡像
  • docker load # 從一個tar包建立一個鏡像,和save配合使用
  • docker save # 將一個鏡像儲存為一個tar包,帶layers和tag資訊
  • docker history # 顯示產生一個鏡像的曆史命令
  • docker tag # 為鏡像起一個別名
鏡像倉庫(registry)操作
  • docker login # 登入到一個registry
  • docker search # 從registry倉庫搜尋鏡像
  • docker pull # 從倉庫下載鏡像到本地
  • docker push # 將一個鏡像push到registry倉庫中
擷取Container IP地址(Container狀態必須是Up)
docker inspect id | grep IPAddress | cut -d '"' -f 4
擷取連接埠映射
docker inspect -f '{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' id
擷取環境變數
docker exec container_id env
殺掉所有正在啟動並執行容器
docker kill $(docker ps -q)
刪除老的(一周前建立)容器
docker ps -a | grep 'weeks ago' | awk '{print $1}' | xargs docker rm
刪除已經停止的容器
docker rm `docker ps -a -q`
刪除所有鏡像,小心
docker rmi $(docker images -q)
Dockerfile

Dockerfile是docker構建鏡像的基礎,也是docker區別於其他容器的重要特徵,正是有了Dockerfile,docker的自動化和可移植性才成為可能。

不論是開發還是營運,學會編寫Dockerfile幾乎是必備的,這有助於你理解整個容器的運行。

FROM , 從一個基礎鏡像構建新的鏡像
FROM ubuntu 
MAINTAINER , 維護者資訊
MAINTAINER William <wlj@nicescale.com>
ENV , 設定環境變數
ENV TEST 1
RUN , 非互動式運行shell命令
RUN apt-get -y update RUN apt-get -y install nginx
ADD , 將外部檔案拷貝到鏡像裡,src可以為url
ADD http://nicescale.com/  /data/nicescale.tgz
WORKDIR /path/to/workdir, 設定工作目錄
WORKDIR /var/www
USER , 設定使用者ID
USER nginx
VULUME <#dir>, 設定volume
VOLUME [‘/data’]
EXPOSE , 暴露哪些連接埠
EXPOSE 80 443 
ENTRYPOINT [‘executable’, ‘param1’,’param2’]執行命令
ENTRYPOINT ["/usr/sbin/nginx"]
CMD [“param1”,”param2”]
CMD ["start"]

docker建立、啟動container時執行的命令,如果設定了ENTRYPOINT,則CMD將作為參數

Dockerfile最佳實務
  • 盡量將一些常用不變的指令放到前面
  • CMD和ENTRYPOINT盡量使用json數組方式
通過Dockerfile構建image
docker build csphere/nginx:1.7 .
鏡像倉庫Registry

鏡像從Dockerfile build產生後,需要將鏡像推送(push)到鏡像倉庫。企業內部都需要構建一個私人docker registry,這個registry可以看作二進位的scm,CI/CD也需要圍繞registry進行。

部署registry
mkdir /registrydocker run  -p 80:5000  -e STORAGE_PATH=/registry  -v /registry:/registry  registry:2.0
推送鏡像儲存到倉庫

假設192.168.1.2是registry倉庫的地址:

docker tag  csphere/nginx:1.7 192.168.1.2/csphere/nginx:1.7docker push 192.168.1.2/csphere/nginx:1.7

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.