Docker 面試寶典


Docker 是什么?

  • 是實現容器技術的一種工具
  • 是一個開源的應用容器引擎
  • 使用 C/S 架構模式,通過遠程API 來管理
  • 可以打包一個應用及依賴包到一個輕量級、可移植的容器中

 

容器是什么?

  • 對應用軟件和依賴包進行標准打包
  • 應用或服務之間相互隔離,但又共享一個 OS
  • 可以打包運行在不同的系統上

 

為什么會出現容器?

為了解決單機部署應用和虛擬化的局限性而誕生

 

虛擬化是什么?

  • 可以理解成虛擬機技術
  • 一個主機可以部署多個虛擬機,每個虛擬機又可以部署多個應用
  • 對於主機來說,虛擬機就是一個普通文件

 

虛擬化的缺點是什么?

  • 資源占用多:每個虛擬機都是完整的操作系統,需要給它分配大量系統資源
  • 冗余步驟多:一個完整的操作系統,一些系統級別的步驟無法避免,比如用戶登錄
  • 啟動慢:啟動操作系統需要多久,啟動虛擬機就要多久

 

Docker 有什么優勢?

  • 資源占用少:每個容器都共享主機的資源,容器需要多少就用多少
  • 啟動快:一條命令即可將容器啟動,而容器啟動時一般會將服務或應用一並啟動

 

Docker 和 虛擬化的區別?

比較點 容器 VM
隔離 應用程序層的抽象,將代碼和依賴項打包在一起【容器是應用層面的隔離】 將一台服務器轉變為多台服務器的物理硬件的抽象【虛擬化是物理資源層面的隔離】

OS

多個容器可以在同一台計算機上運行,並與其他容器共享OS內核

也允許多個VM在單台計算機上運行,但需要啟動單獨的虛擬機 OS

資源共享

僅有一個物理機的OS,多個容器共享物理機的資源

多個OS(物理機一個OS,每個 VM 一個 OS),均獨享資源
運行數量 一台物理機可以運行數個容器 一台物理機最多可以運行十來個虛擬機
大小 容器鏡像的大小通常為幾十 MB 包含操作系統、二進制文件、庫,至少也要幾個 GB
啟動速度 可以在數秒內完成啟動 和物理機啟動時間一樣慢,可能要幾分鍾
  可以處理更多的應用程序,消耗的資源比 VM 少  
  每個容器在用戶空間中作為隔離的進程運行  

 

Docker 容器有幾種在狀態?

  • starting 運行狀態
  • Exited 退出狀態
  • Paused 暫停狀態
  • healthy 健康狀態
  • unhealthy 非健康狀態

 

什么是倉庫?

  • 存放鏡像文件的地方,比如 DockerHub,可以將自己的鏡像上傳上去
  • 不同鏡像可以有不同的標簽
  • 主機可以從倉庫下載鏡像

 

什么是鏡像?

  • 創建容器的模板
  • 同一個鏡像可以創建多個不同的容器

 

什么是容器?

  • 通過鏡像生成的運行實例
  • 不同容器之間是相互隔離,獨立運行的
  • 通常一個容器就是一個應用或一個服務,也是我們常說的微服務

 

倉庫、鏡像、容器的關系是?

倉庫存放鏡像,主機通過倉庫下載鏡像,通過鏡像創建容器

 

有什么常用的 Docker 命令?

  • docker pull 拉取鏡像
  • docker create 創建容器
  • docker rm 刪除容器
  • docker ps 列出正在運行的容器列表
  • docker run 創建容器並運行指定命令
  • docker start 啟動容器
  • docker stop 停止運行容器
  • docker restart 重啟容器
  • docker rm 刪除容器
  • docker exec 容器執行指定命令
  • docker rmi 刪除鏡像

 

如何把主機的東西拷貝到容器內部?

通過 docker cp 命令即可,還能把容器內部內容拷貝到主機

 

進入容器的方法有哪些?

通過 docker exec 進入容器內部

 

如何讓容器隨着 Docker 服務啟動而自動啟動?

  • 創建容器,加上 --restart=always 參數
  • 創建容器,通過修改容器配置文件的 RestartPolicy 參數值
  • 創建容器,使用 docker update 命令更新容器的 --restart 參數值

 

如何指定容器的端口映射?

  • 創建容器,通過 -p 來指定端口映射
  • 創建容器,通過修改容器的配置文件來指定端口映射

 

如何查看官方鏡像服務的默認端口是什么?

  • 可以通過 docker inspect 查看鏡像信息,然后找到端口映射一欄
  • 也可以先用該鏡像創建一個容器並運行,通過 docker ps 查看運行端口是什么

 

如何修改容器的端口映射?

  • 刪除容器,重新創建容器,並指定端口映射
  • 通過容器配置文件修改端口映射
  • 通過 docker commit 將容器構建為一個全新的鏡像,然后再通過該鏡像創建新的容器,並指定端口映射

 

如何指定容器的目錄映射?

  • 創建容器,通過 -v 來指定目錄映射
  • 創建容器,通過修改容器的配置文件來指定目錄映射

 

如何修改容器的目錄映射?

  • 刪除容器,重新創建容器,並指定目錄映射
  • 通過容器配置文件修改目錄映射
  • 通過 docker commit 將容器構建為一個全新的鏡像,然后再通過該鏡像創建新的容器,並指定目錄映射

 

K8S 是什么?

Kubernetes 是容器集群管理系統,是一個開源的平台,可以實現容器集群的自動化部署、自動擴縮容、維護等功能

  • 快速部署應用
  • 快速擴展應用
  • 無縫對接新的應用功能
  • 節省資源,優化硬件資源的使用

 


免責聲明!

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



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