docker面試題和解答(一)


  1. 什么Docker
    Docker是一個容器化平台,它以容器的形式將您的應用程序及其所有依賴項打包在一起,以確保您的應用程序在任何環境中無縫運行。

  2. Docker與虛擬機有何不同
    Docker不是虛擬化方法。它依賴於實際實現基於容器的虛擬化或操作系統級虛擬化的其他工具。為此,Docker最初使用LXC驅動程序,然后移動到libcontainer現在重命名為runc。Docker主要專注於在應用程序容器內自動部署應用程序。應用程序容器旨在打包和運行單個服務,而系統容器則設計為運行多個進程,如虛擬機。因此,Docker被視為容器化系統上的容器管理或應用程序部署工具。
    A 容器不需要引導操作系統內核,因此可以在不到一秒的時間內創建容器。此功能使基於容器的虛擬化比其他虛擬化方法更加獨特和可取。
    B 由於基於容器的虛擬化為主機增加了很少或沒有開銷,因此基於容器的虛擬化具有接近本機的性能。
    C 對於基於容器的虛擬化,與其他虛擬化不同,不需要其他軟件。
    D 主機上的所有容器共享主機的調度程序,從而節省了額外資源的需求。
    E 與虛擬機映像相比,容器狀態(Docker或LXC映像)的大小很小,因此容器映像很容易分發。
    F 容器中的資源管理是通過cgroup實現的。Cgroups不允許容器消耗比分配給它們更多的資源。雖然主機的所有資源都在虛擬機中可見,但無法使用。這可以通過在容器和主機上同時運行top或htop來實現。所有環境的輸出看起來都很相似。

  3. 什么是Docker鏡像
    Docker鏡像是Docker容器的源代碼,Docker鏡像用於創建容器。使用build命令創建鏡像。

  4. 什么是Docker容器
    Docker容器包括應用程序及其所有依賴項,作為操作系統的獨立進程運行。

  5. Docker容器有幾種狀態
    四種狀態:運行、已暫停、重新啟動、已退出。

  6. Dockerfile中最常見的指令是什么
    FROM:指定基礎鏡像
    LABEL:功能是為鏡像指定標簽
    RUN:運行指定的命令
    CMD:容器啟動時要運行的命令

  7. Dockerfile中的命令COPY和ADD命令有什么區別
    COPY與ADD的區別COPY的SRC只能是本地文件,其他用法一致

  8. docker常用命令
    docker pull 拉取或者更新指定鏡像
    docker push 將鏡像推送至遠程倉庫
    docker rm 刪除容器
    docker rmi 刪除鏡像
    docker images 列出所有鏡像
    docker ps 列出所有容器

  9. 容器與主機之間的數據拷貝命令
    docker cp 命令用於容器與主機之間的數據拷貝
    主機到容器:
    docker cp /www 96f7f14e99ab:/www/
    容器到主機:
    docker cp 96f7f14e99ab:/www /tmp/

  10. 啟動nginx容器(隨機端口映射),並掛載本地文件目錄到容器html的命令
    docker run -d -P --name nginx2 -v /home/nginx:/usr/share/nginx/html nginx

  11. 解釋一下dockerfile的ONBUILD指令
    當鏡像用作另一個鏡像構建的基礎時,ONBUILD指令向鏡像添加將在稍后執行的觸發指令。如果要構建將用作構建其他鏡像的基礎的鏡像(例如,可以使用特定於用戶的配置自定義的應用程序構建環境或守護程序),這將非常有用。

  12. 什么是Docker Swarm
    Docker Swarm是Docker的本機群集。它將Docker主機池轉變為單個虛擬Docker主機。Docker Swarm提供標准的Docker API,任何已經與Docker守護進程通信的工具都可以使用Swarm透明地擴展到多個主機。

  13. 如何在生產中監控Docker
    Docker提供docker stats和docker事件等工具來監控生產中的Docker。我們可以使用這些命令獲取重要統計數據的報告。
    Docker統計數據:當我們使用容器ID調用docker stats時,我們獲得容器的CPU,內存使用情況等。它類似於Linux中的top命令。
    Docker事件:Docker事件是一個命令,用於查看Docker守護程序中正在進行的活動流。
    一些常見的Docker事件是:attach,commit,die,detach,rename,destroy等。我們還可以使用各種選項來限制或過濾我們感興趣的事件

  14. Docker如何在非Linux系統中運行容器
    通過添加到Linux內核版本2.6.24的名稱空間功能,可以實現容器的概念。容器將其ID添加到每個進程,並向每個系統調用添加新的訪問控制檢查。它由clone()系統調用訪問,該調用允許創建先前全局命名空間的單獨實例。
    如果由於Linux內核中可用的功能而可以使用容器,那么顯而易見的問題是非Linux系統如何運行容器。Docker for Mac和Windows都使用Linux VM來運行容器。Docker Toolbox用於在Virtual Box VM中運行容器。但是,最新的Docker在Windows中使用Hyper-V,在Mac中使用Hypervisor.framework。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM