docker的使用

隨着docker/K8S技術的日漸成熟, 越來越多的公司將自己的服務放進docker裏面來運行, 以此來做到資源隔離和部署的簡化。

docker與虛擬機的區別

從下圖可以看出, docker與VM相比, 結構要簡單, 更加輕量一些, docker的dockerd程序是操作系統的一個進程, 每個docker內部也不是有自己的操作系統, 這些都是公用主機的資源, 因此docker比虛擬機要輕很多, 與之相應的,它的隔離性比虛擬機要差一些。
在這裏插入圖片描述

docker的基本原理

docker是通過namespace來隔離每個的docker, 使得用戶感覺在獨立使用一套自己的環境。待續。。。

docker鏡像

要創建docker, 必須先創建鏡像, 這裏包含了docker索要包含的程序以及相關的依賴, 如何初始化並且啓動應用程序。

  • 獲得基礎鏡像
    通常可以先到官方的鏡像上面下載一個基礎鏡像, 作爲我們自己的鏡像的基礎,如果有的話更好,沒有的話, 可以通過docker search命令查找摸個關鍵字相關的現有鏡像, 然後下載到本地, 通過docker history命令來查看某個鏡像的分層情況, 選擇某個commitID作爲新鏡像的基礎。
    docker  search centos
    docker pull centos
    docker history centos
    
  • 生成Dockerfile文件
    在獲得了基礎鏡像之後, 我們有需要產生一個Dockerfile文件, 來制定我們的鏡像裏面需要的操作, 常見的有如下幾個:
    命令 說明
    ADD 將本地文件添加到鏡像裏面去, 注意有些類型的壓縮文件是會自動解壓縮的, 比如, tar.gz, 而有些如.zip不會
    RUN 後面跟shell命令, 注意這是在docker裏面
    CMD 只能有一條, 多個區最後一條
    ENTRYPOINT docker啓動時, 執行的第一條命令, 可以是可執行程序, 加參數
    EXPOSE 對外暴露的端口號
  • 生成鏡像
    生成鏡像可以用如下命令:
    docker build -t "xxx:1.0.0" .
    
  • 特殊情況處理
    正常情況下, 一個docker應該包含一個應用程序, 並且由它作爲docker內的1號進程, 這樣docker的生命週期與其內部運行的程序相互綁定, 通過外部工具, 比如K8S的監控, 可以實現自動failover的功能。
    但是有時候, 我們的應用程序由於某些原因, 需要多個程序運行在一個docker內, 這時候就需要先啓動一個init進程, 由它來block住docker不會退出, 其他的要運行的程序採用開機啓動的方式

docker的運行與管理

常見的docker命令:

  • 啓動docker
docker run -it -d --privilege IMAGE_XXX -v  host_path:docker_path -p 8080:8080
  • 監控docker狀態
    docker ps;
    docker inspect dockerId
    
  • 刪除docker
     docker rm -f dockerid
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章