Docker 類面試題(常見問題)

2022-08-30 00:09:29 字數 3062 閱讀 9220

docker 常見問題彙總

映象相關

可以使用sudo docker rmi $(sudo docker images -q -f danging=true)命令

使用sudo docker run image env

於docker相關的本地資源存放在/var/lib/docker/目錄下,其中container目錄存放容器資訊,graph目錄存放映象資訊,aufs目錄下存放具體的映象底層檔案。

整體遠側上,盡量保持映象功能的明確和內容的精簡,要點包括: 

# 盡量選取滿足需求但較小的基礎系統映象,建議選擇debian:wheezy映象,僅有86mb大小 

# 清理編譯生成檔案、安裝包的快取等臨時檔案 

# 安裝各個軟體時候要指定準確的版本號,並避免引入不需要的依賴 

# 從安全的角度考慮,應用盡量使用系統的庫和依賴 

# 使用dockerfile建立映象時候要新增.dockerignore檔案或使用乾淨的工作目錄

容器相關

容器退出後會處於終止(exited)狀態,此時可以通過 docker ps -a 檢視,其中資料不會丟失,還可以通過docker start 來啟動,只有刪除容器才會清除資料。

使用docker kill $(sudo docker ps -q)

使用docker rm $(sudo docker ps -a -q)

按ctrl+p,後按ctrl+q,如果按ctrl+c會使容器內的應用程序終止,進而會使容器終止。

使用docker logs,後面跟容器的名稱或者id資訊

建立映象時dockerfile要指定正確的expose的埠,容器啟動時指定publishallport=true

一般不推薦在同乙個容器內執行多個應用程序,如果有類似需求,可以通過額外的程序管理機制,比如supervisord來管理所執行的程序

在使用docker create命令建立容器或使用docker run 建立並執行容器的時候,可以使用-c|–cpu-shares[=0]引數來調整同期使用cpu的權重,使用-m|–memory引數來調整容器使用記憶體的大小。

倉庫相關

首先,倉庫是存放一組關聯映象的集合,比如同乙個應用的不同版本的映象,註冊伺服器是存放實際的映象的地方,註冊索引則負責維護使用者的賬號,許可權,搜尋,標籤等管理。註冊伺服器利用註冊索引來實現認證等管理。

…」?docker 自1.3.0版本往後以來,加強了對映象安全性的驗證,需要手動新增對非官方倉庫的信任。 

docker_opts=」–insecure-registry dl.dockerpool.com:5000」 

重啟docker服務

配置相關

ubuntu系統下docker的配置檔案是/etc/default/docker,centos系統配置檔案存放在/etc/sysconfig/docker

-2、如何更改docker的預設儲存設定?

docker的預設存放位置是/var/lib/docker,如果希望將docker的本地檔案儲存到其他分割槽,可以使用linux軟連線的方式來做。

docker與虛擬化

lxc利用linux上相關技術實現容器,docker則在如下的幾個方面進行了改進:

移植性:通過抽象容器配置,容器可以實現乙個平台移植到另乙個平台; 

映象系統:基於aufs的映象系統為容器的分發帶來了很多的便利,同時共同的映象層只需要儲存乙份,實現高效率的儲存; 

版本管理:類似於git的版本管理理念,使用者可以更方面的建立、管理映象檔案; 

倉庫系統:倉庫系統大大降低了映象的分發和管理的成本; 

周邊工具:各種現有的工具(配置管理、雲平台)對docker的支援,以及基於docker的pass、ci等系統,讓docker的應用更加方便和多樣化。

兩者的定位完全不同 

vagrant類似於boot2docker(一款執行docker的最小核心),是一套虛擬機器的管理環境,vagrant可以在多種系統上和虛擬機器軟體中執行,可以在windows。mac等非linux平台上為docker支援,自身具有較好的包裝性和移植性。 

原生docker自身只能執行在linux平台上,但啟動和執行的效能都比虛擬機器要快,往往更適合快速開發和部署應用的場景。

docker不是虛擬機器,而是程序隔離,對於資源的消耗很少,單一開發環境下vagrant是虛擬機器上的封裝,虛擬機器本身會消耗資源。

other faq

可以停止docker服務,將整個docker儲存檔案複製到另外一台宿主機上,然後調整另外一台宿主機的配置即可

# 檢視容器程序id,比如1234sudodocker inspect --format='}'$container_id1234# 到proc目錄下,把對應的網路名字空間檔案鏈結到/var/run/netns,然後通過正常的系統命令檢視操作容器的名字空間。

1、docker 和虛擬機器有啥不同? 

docker 是輕量級的沙盒,在其中執行的只是應用,虛擬機器裡面還有額外的系統。

2、docker 安全麼? 

docker 利用了 linux 核心中很多安全特性來保證不同容器之間的隔離,並且通過簽名機制來對映象進行驗證。大量生產環境的部署證明,docker 雖然隔離性無法與虛擬機器相比,但仍然具有極高的安全性。

3、如何清理後台停止的容器? 

可以使用 sudo docker rm $sudo( docker ps -a -q) 命令。

4、如何檢視映象支援的環境變數? 

可以使用 docker run image env 命令。

檢查啟動命令是否有可執行許可權,進入容器手工執行指令碼進行排查。

6、本地的映象檔案都存放在**? 

與 docker 相關的本地資源都存放在/var/lib/docker/目錄下,其中container目錄存放容器資訊,graph目錄存放映象資訊,aufs目錄下存放具體的內容檔案。

7、如何退出乙個映象的bash,而不終止它? 

按 ctrl-p ctrl-q。

8、退出容器時候自動刪除? 

使用 –rm 選項,例如 sudo docker run –rm -it ubuntu

9、怎麼快速檢視本地的映象和容器? 

可以通過docker images來快速檢視本地映象;通過docker ps -a快速檢視本地容器。

XGBOOST常見問題以及面試題

說到xgboost需要首先說一說gbdt,它是一種基於boosting增強策略的加法模型,訓練時候採用前向分布演算法進行貪婪學習,每次學習都是一顆cart樹,來擬合之前t 1棵樹 結果與訓練樣本真實值的殘差。xgboost是對gbdt進行來一系列的優化,比如損失函式進行了二階展開,目標函式加入正則項...

面試題 2面常見問題

面試官提出問題,謝謝,1.自我介紹 面試官您好,我是來自 大學 專業的 是2015年6月份的本科應屆生。近期剛剛結束了在北京 公司的 方向的培訓,無論是大學中所學到的知識還是培訓中所得到的專案經驗,都是想真正的應用到自己職業生涯中。現在大家最關注的詞語莫過於 大資料 雲計算 不論是企業級還是個人上網...

資料庫 面試題 常見問題(一)

到真正是那麼回事的it公司去面試,會就會,不會就答不會。一 大檔案 1 blob binary large object 適合於存放程式 影音等非結構化檔案。2 clob character large object 適用於儲存文字型資料,例如文章 新聞 記錄 日誌等。二 oracle函式和儲存過程...