1.docker的原理
Docker就是虛擬化的一種輕量級替代技術(shù)。Docker的容器技術(shù)不依賴任何語言、框架或系統(tǒng),可以將APP編程一種標(biāo)準(zhǔn)化、可移植的、自管理的軟件,并脫離服務(wù)器硬件在任何主流系統(tǒng)中開發(fā)、調(diào)試和運(yùn)行。
簡單的說就是,在Linux系統(tǒng)上迅速創(chuàng)建一個容器(類似虛擬機(jī))并在容器上部署和運(yùn)行應(yīng)用程序,并通過配置文件可以輕松實現(xiàn)應(yīng)用程序的自動化安裝、部署和升級,非場方便。因為使用了容器,所以可以很方便的把生產(chǎn)環(huán)境和開發(fā)環(huán)境分開,互不影響,這是docker最普通的一個玩法。
2.dockerfile的書寫主要有add,volume,file,from,env,cmd,entrypoint,workspace等命令
3.docker 鏡像你們是如何制作的,制作鏡像的原則是什么
鏡像制作技巧:
1)盡量合并Dockerfile命令,以便減少鏡像層數(shù),進(jìn)而減少commit/run/rm次數(shù),加快構(gòu)建;
2)調(diào)整命令前后順序,以便提高復(fù)用度及cache命中率,加速構(gòu)建;(比如像RUN apt-get -y update這類大多鏡像都需要用到命令應(yīng)該放在上面,以便跨鏡像復(fù)用。然而像WORKDIR、CMD、ENV、ADD這些很可能導(dǎo)致cache miss的命令應(yīng)該放在底部)
鏡像制作原則:
1)盡量生成一個base,便于版本的迭代和作為公用鏡像;
2)清晰的注釋,提高可讀性,便于自己及他人理解;
8.Dockerfile 你們常用的命令有哪幾個,列舉下作用是什么
CMD(設(shè)置容器啟動時要運(yùn)行的命令只有在你執(zhí)行 docker run 或者 docker start 命令是才會運(yùn)行,其他情況下不運(yùn)行)
EXPOSE(設(shè)置暴露端口號) ENV(設(shè)置環(huán)境變量) ADD(復(fù)制命令,把本地的文件復(fù)制到鏡像中)
COPY(與ADD指令類似但是COPY的src部分只能是本地文件,文件路徑是Dockerfile的相對路徑。如果COPY的是壓縮包不會幫你解壓。) VOLUME(設(shè)置一個卷,保存容器中產(chǎn)生的數(shù)據(jù)) WORKDIR(指定容器的工作目錄)
4.Docker常用命令
啟容器,停容器,創(chuàng)建容器,使用docker run、docker start docker create等命令
docker ps 查看容器,然后就是docker存儲的管理, -v我們可以將宿主機(jī)的目錄掛載到容器中,
容器存儲的文件就相當(dāng)于存儲到了宿主機(jī)的磁盤中。
4.如何使用Docker構(gòu)建與環(huán)境無關(guān)的系統(tǒng)
只讀文件系統(tǒng)
環(huán)境變量注入
存儲卷
10.Dockerfile中的命令COPY和ADD命令有什么區(qū)別
COPY指令和ADD指令的唯一區(qū)別在于是否支持從遠(yuǎn)程URL獲取資源。COPY指令只能從執(zhí)行docker build所在的主機(jī)上讀取資源并復(fù)制到鏡像中。而ADD指令還支持通過URL從遠(yuǎn)程服務(wù)器讀取資源并復(fù)制到鏡像中。
11.什么是Docker Hub
Docker Hub被用于源代碼管理集成,也用于構(gòu)建和測試工具來加速部署周期,部署周期從天減少到以分鐘計算,Docker宣稱已經(jīng)允許用戶加速應(yīng)用的傳輸
12.Docker Image和Layer有什么區(qū)別
Docker鏡像是一層一層組成的,每層代表鏡像Dockerfile的一行命令。除了最后一層,其他的層都是只讀的
當(dāng)你運(yùn)行鏡像的時候,會有一個稱為container layer的可讀寫層,如上圖所示。
這意味著,你運(yùn)行此鏡像的多個實例,也就是多個容器時,把所有變動都寫到Container layer這一層,而不影響鏡像里面的文件層
13.生產(chǎn)中如何監(jiān)控Docker
- 部署cadvisor容器,用來收集host上的容器信息,該容器部署在需要收集容器信息的每一個主機(jī)上部署;
docker run -v /:/rootfs:ro -v /var/run:/var/run:rw -v /sys:/sys:ro -v /var/lib/docker:/var/lib/docker:ro -v /dev/disk:/dev/disk:ro -p 8080:8080 --detach=true --name cadvisor google/cadvisor
2.部署grafana容器,用于將收集的主機(jī)容器數(shù)據(jù)顯示到瀏覽器
docker run -d -p 3000:3000 --name grafana --net=host grafana/grafana
3.部署prometheus server ,選定一臺服務(wù)器
docker run -d -p 9090:9090 -v /root/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /root/prometheus/alert.rules:/etc/prometheus/alert.rules -v /root/prometheus/conf.d:/etc/prometheus/conf.d --name prometheus --net=host prom/prometheus
更改static_configs:
4.部署node-exporter
docker run -d -p 9100:9100 -v /proc:/host/proc -v /sys:/host/sys -v /:/rootfs --name node-exporter --net=host prom/node-exporter --path.procfs /host/proc --path.sysfs /host/sys --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"
5.部署告警(釘釘告警)
1.如何查看容器的統(tǒng)計信息? B
(B) Docker stats容器id
2.docker容器重啟命令是: C
(C) docker restart容器ID
3.Docker是一個開源的應(yīng)用容器引擎,所以Docker是容器的一種類型 A
(A)正確
(B)錯誤
請判斷查看容器的進(jìn)程命令為Docker top容器id是否正確 A **
(A)正確
(B)錯誤
一個apache鏡像對外服務(wù)端口不可以修改 B
(A)是
(B)否
docker需要查詢?nèi)罩緫?yīng)該使用什么命令? C
(C) docker logs
docker把主機(jī)的/tmp/abc.txt文件復(fù)制到容器2d0abd3328cf里的/tmp,以下哪個命令正確 B*
docker cp /tmp/abc.txt 2d0abd3328cf:/tmp
查看容器屬性的方法 A
A docker info
docker環(huán)境下,下面通過哪個命令可以查看docker的CONTAINER ID ?D
(D) docker ps -a
docker如何批量清理臨時鏡像文件? B *
B sudo docker rmi $(sudo docker images -q -f danging=true)
如何備份一個docker 鏡像? B
(A) docker backup
(B docker save
C docker export
(D docker write
容器具有數(shù)據(jù)持久化特性,無論進(jìn)入容器進(jìn)行什么樣的更改,退出容器后再重新啟動容器,里面數(shù)據(jù)不會丟失 A
A對
B錯
啟動nginx容器(隨機(jī)端口映射),并掛載本地文件目錄到容器html的命令是? A
(A) docker run -d -P -name nginx2 -V /home/nginx:/usr/share/nginx/html nginx
docker pull命令用于鏡像下載 A
A正確
B)錯誤
容器退出后,通過docker ps命令查看不到,數(shù)據(jù)會丟失 B
(A) 正確
B錯誤
如何執(zhí)行一個docker 鏡像?B
(A docker exec
B docker run
C docker do
D docker go
docker本地的鏡像文件都存放在哪里 A
A /varlib/docker/目錄下
Docker能在非Linux平臺(Windows+MacOS) 上運(yùn)行 B
A)正確
B錯誤
Docker Hub:是用于分享、管理Docker容器的Docker SaaS平臺 A
A正確
B)錯誤
在使用docker create命令創(chuàng)建容器或使用docker run創(chuàng)建并運(yùn)行容器的時候??梢允褂?m)-memory參數(shù)來調(diào)整容器使用內(nèi)存的大小。A
A正確
(B錯誤
在使用docker create命令創(chuàng)建容器或使用docker run創(chuàng)建并運(yùn)行容器的時候,不可以使用-c|cpu-shares[=0]參數(shù)來調(diào)整同期使用CPU的權(quán)重,錯誤
如何查看容器abc的詳細(xì)信息? D
D Docker inspect abc
Redhat操作系統(tǒng)中,不可以運(yùn)行ubuntu鏡像 B
(A) 是
B)否
docker如何停止所有正在運(yùn)行的容器? D
(D docker kill $ (sudo docker ps -a -q)
docker環(huán)境下,如何無需進(jìn)入docker從docker中拷貝文件到本地?A
A) docker cp 容器id:/root.bashrc /tmp/
B ftp
C scp :/root.bashrc /tmp
(D) docker scp容器id:/oot.bashrc /tmp/
Docker命令非常豐富,以下哪個子命令查看容器的運(yùn)行狀態(tài) B
B docker ps
進(jìn)入容器執(zhí)行方法 A
(A) docker exec
使用什么命令能把一個鏡像下載到本地 B
B) docker pull
鏡像不允許用戶自己修改 B
A)是
B 否
docker如何臨時退出一個正在交互的容器的終端,而不終止它? A
A 按Ctrl+p, 后按Ctrl+q,如果按Crl+c會使容器內(nèi)的應(yīng)用進(jìn)程終止,進(jìn)而會使容器終止。
很多種容器編排工具,最流行的目前是kubernets,即k8s A
A是
B否
容器與虛擬化的描述錯誤的是 D
(A 容器比虛擬機(jī)少了OS
(B) 容器開銷更小
C 容器啟動速度更快,毫秒級
image-20200121222411785
D 虛擬機(jī)比容器鏡像更小
docker容器運(yùn)行時,可以指定CPU親和性, 內(nèi)存大小 A
A是
B)否
容器退出后,使用docker ps命令無法查看到,說明容器被自動刪除了? B
A對
B)錯
如何搜索docker鏡像nginx? C
(A) Docker pull centos
B Docker search nginex
C Docker search nginx
D Docker pull cento
Docker能在32位的系統(tǒng)里運(yùn)行。B
A)正確
錯誤
很多應(yīng)用容器都是默認(rèn)后臺運(yùn)行的,怎么查看它們的輸出和日志信息? C
A) docker log
(B) docker logarithms
C docker logs
D docker logarithm
有關(guān)docker下列說法正確的是 ACD *
A 當(dāng)我們在本地主機(jī)上使用一個不存在的鏡像時 Docker就會自動下載這個鏡像。如果我們想預(yù)先下載這個鏡像,我們可以使用docker pull命令來下載它。#docker pull ubuntu:13.10,同樣設(shè)置鏡像標(biāo)簽#docker tag 860c279d2fec runooblcentos:dev。
B docker stats動態(tài)查看docker源消耗情況,包括:內(nèi)存、網(wǎng)絡(luò)I/O但是不包括CPU。
C docker通過exec可以創(chuàng)建兩種任務(wù)(后臺型任務(wù)和交互型任務(wù))交互型任務(wù): docker exec - it "容器ID" /bin/bash后臺型任務(wù):docker exec _d "容器ID" touch 123.
D 批量操作容器, docker ps -q只列出docker id
如何啟動本機(jī)Docker服務(wù) A
A $ sudo systemctl start docker
net選項后面可以跟哪些參數(shù)? ABC *
A None
B host
C bridge
docker的存儲驅(qū)動程序有哪些 ABCDE *
A AUES
B Btrfs
C Device mapper
D OverlayFS|E
E ZFS
docker命令以下哪些為高危操作 A *
A docker rm容器id
B docker inspect容器ID
C docker mv容器ID
D docker rm -f鏡像ID
Docker的核心組件有哪些? ACD
A 鏡像
C 容器
D 倉庫
docker網(wǎng)絡(luò)模式包括 ABCD
A host模式
B container模式
C none模式
D bridge模式
Docker的主要用途有() ABC *
A 提供一次性的環(huán)境
B 提供彈性的云服務(wù)
C 組建微服務(wù)架構(gòu)
有關(guān)docker正確的是 ABCD
A docker info 可以查看到集群內(nèi)容器的數(shù)量
B docker ps容器ID (參數(shù)-a:顯示所有容器,包括未運(yùn)行的; -n: 列出最近創(chuàng)建的n個容器)
C docker pause暫停容器中所有的進(jìn)程
D docker run創(chuàng)建一個新的容器并且啟動它
構(gòu)建Docker鏡像應(yīng)該遵循哪些原則? ABCDE
A盡量選取滿足需求但較小的基礎(chǔ)系統(tǒng)鏡像, 建議選擇debian:wheezy鏡像, 僅有43MB大小
B請理編譯生成文件、 安裝包的緩存等臨時文件
C安裝各個軟件時候要指定準(zhǔn)確的版本號, 并避免引入不需要的依賴
D從安全的角度考慮, 應(yīng)用盡量使用系統(tǒng)的庫和依賴
E使用Dockerfile創(chuàng)建鏡像時候要添加.dockerignore文件或使用干凈的工作目錄
docker容器與主機(jī)之間的數(shù)據(jù)拷貝命令是? CD *
A docker pc /www 96f7f14e99ab:/www/
B docker cp /www 96f7f14e99ab:/www/
C docker cp 96f7f14e99ab:/www /wwwl
D docker cp 967f14e99b:/www /tmp/
以下哪些命令能構(gòu)建一個鏡像? ABD
A docker create
B docker commit
(C docker add
D docker build
docker進(jìn)入容器的方法有哪些? CD
C 使用 docker attach命令
D 使用exec命令
作者:三德書生
鏈接:http://www.itdecent.cn/p/4774cd39ac8a
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。