1.docker的原理
Docker就是虛擬化的一種輕量級(jí)替代技術(shù)酥宴。Docker的容器技術(shù)不依賴任何語言纲辽、框架或系統(tǒng)斜纪,可以將APP編程一種標(biāo)準(zhǔn)化、可移植的文兑、自管理的軟件,并脫離服務(wù)器硬件在任何主流系統(tǒng)中開發(fā)腺劣、調(diào)試和運(yùn)行绿贞。
簡單的說就是,在Linux系統(tǒng)上迅速創(chuàng)建一個(gè)容器(類似虛擬機(jī))并在容器上部署和運(yùn)行應(yīng)用程序橘原,并通過配置文件可以輕松實(shí)現(xiàn)應(yīng)用程序的自動(dòng)化安裝籍铁、部署和升級(jí),非場方便趾断。因?yàn)槭褂昧巳萜骶苊钥梢院芊奖愕陌焉a(chǎn)環(huán)境和開發(fā)環(huán)境分開,互不影響芋酌,這是docker最普通的一個(gè)玩法增显。
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)盡量生成一個(gè)base,便于版本的迭代和作為公用鏡像李命;
2)清晰的注釋登淘,提高可讀性,便于自己及他人理解封字;
8.Dockerfile 你們常用的命令有哪幾個(gè),列舉下作用是什么
CMD(設(shè)置容器啟動(dòng)時(shí)要運(yùn)行的命令只有在你執(zhí)行 docker run 或者 docker start 命令是才會(huì)運(yùn)行黔州,其他情況下不運(yùn)行)
EXPOSE(設(shè)置暴露端口號(hào)) ENV(設(shè)置環(huán)境變量) ADD(復(fù)制命令,把本地的文件復(fù)制到鏡像中)
COPY(與ADD指令類似但是COPY的src部分只能是本地文件阔籽,文件路徑是Dockerfile的相對(duì)路徑流妻。如果COPY的是壓縮包不會(huì)幫你解壓。) VOLUME(設(shè)置一個(gè)卷笆制,保存容器中產(chǎn)生的數(shù)據(jù)) WORKDIR(指定容器的工作目錄)
4.Docker常用命令
啟容器绅这,停容器,創(chuàng)建容器在辆,使用docker run证薇、docker start docker create等命令
docker ps 查看容器,然后就是docker存儲(chǔ)的管理匆篓, -v我們可以將宿主機(jī)的目錄掛載到容器中浑度,
容器存儲(chǔ)的文件就相當(dāng)于存儲(chǔ)到了宿主機(jī)的磁盤中。
4.如何使用Docker構(gòu)建與環(huán)境無關(guān)的系統(tǒng)
只讀文件系統(tǒng)
環(huán)境變量注入
存儲(chǔ)卷
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)建和測(cè)試工具來加速部署周期伏钠,部署周期從天減少到以分鐘計(jì)算,Docker宣稱已經(jīng)允許用戶加速應(yīng)用的傳輸
12.Docker Image和Layer有什么區(qū)別
Docker鏡像是一層一層組成的谨设,每層代表鏡像Dockerfile的一行命令熟掂。除了最后一層,其他的層都是只讀的
當(dāng)你運(yùn)行鏡像的時(shí)候扎拣,會(huì)有一個(gè)稱為container layer的可讀寫層赴肚,如上圖所示。
這意味著二蓝,你運(yùn)行此鏡像的多個(gè)實(shí)例誉券,也就是多個(gè)容器時(shí),把所有變動(dòng)都寫到Container layer這一層刊愚,而不影響鏡像里面的文件層
13.生產(chǎn)中如何監(jiān)控Docker
- 部署cadvisor容器踊跟,用來收集host上的容器信息,該容器部署在需要收集容器信息的每一個(gè)主機(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 ,選定一臺(tái)服務(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)計(jì)信息? B
(B) Docker stats容器id
2.docker容器重啟命令是: C
(C) docker restart容器ID
3.Docker是一個(gè)開源的應(yīng)用容器引擎箕憾,所以Docker是容器的一種類型 A
(A)正確
(B)錯(cuò)誤
請(qǐng)判斷查看容器的進(jìn)程命令為Docker top容器id是否正確 A **
(A)正確
(B)錯(cuò)誤
一個(gè)apache鏡像對(duì)外服務(wù)端口不可以修改 B
(A)是
(B)否
docker需要查詢?nèi)罩緫?yīng)該使用什么命令? C
(C) docker logs
docker把主機(jī)的/tmp/abc.txt文件復(fù)制到容器2d0abd3328cf里的/tmp,以下哪個(gè)命令正確 B*
docker cp /tmp/abc.txt 2d0abd3328cf:/tmp
查看容器屬性的方法 A
A docker info
docker環(huán)境下,下面通過哪個(gè)命令可以查看docker的CONTAINER ID ?D
(D) docker ps -a
docker如何批量清理臨時(shí)鏡像文件? B *
B sudo docker rmi $(sudo docker images -q -f danging=true)
如何備份一個(gè)docker 鏡像? B
(A) docker backup
(B docker save
C docker export
(D docker write
容器具有數(shù)據(jù)持久化特性拳昌,無論進(jìn)入容器進(jìn)行什么樣的更改袭异,退出容器后再重新啟動(dòng)容器,里面數(shù)據(jù)不會(huì)丟失 A
A對(duì)
B錯(cuò)
啟動(dòng)nginx容器(隨機(jī)端口映射)炬藤,并掛載本地文件目錄到容器html的命令是? A
(A) docker run -d -P -name nginx2 -V /home/nginx:/usr/share/nginx/html nginx
docker pull命令用于鏡像下載 A
A正確
B)錯(cuò)誤
容器退出后御铃,通過docker ps命令查看不到,數(shù)據(jù)會(huì)丟失 B
(A) 正確
B錯(cuò)誤
如何執(zhí)行一個(gè)docker 鏡像?B
(A docker exec
B docker run
C docker do
D docker go
docker本地的鏡像文件都存放在哪里 A
A /varlib/docker/目錄下
Docker能在非Linux平臺(tái)(Windows+MacOS) 上運(yùn)行 B
A)正確
B錯(cuò)誤
Docker Hub:是用于分享沈矿、管理Docker容器的Docker SaaS平臺(tái) A
A正確
B)錯(cuò)誤
在使用docker create命令創(chuàng)建容器或使用docker run創(chuàng)建并運(yùn)行容器的時(shí)候上真。可以使用-m)-memory參數(shù)來調(diào)整容器使用內(nèi)存的大小羹膳。A
A正確
(B錯(cuò)誤
在使用docker create命令創(chuàng)建容器或使用docker run創(chuàng)建并運(yùn)行容器的時(shí)候睡互,不可以使用-c|cpu-shares[=0]參數(shù)來調(diào)整同期使用CPU的權(quán)重,錯(cuò)誤
如何查看容器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命令非常豐富犀填,以下哪個(gè)子命令查看容器的運(yùn)行狀態(tài) B
B docker ps
進(jìn)入容器執(zhí)行方法 A
(A) docker exec
使用什么命令能把一個(gè)鏡像下載到本地 B
B) docker pull
鏡像不允許用戶自己修改 B
A)是
B 否
docker如何臨時(shí)退出一個(gè)正在交互的容器的終端蠢壹,而不終止它? A
A 按Ctrl+p, 后按Ctrl+q,如果按Crl+c會(huì)使容器內(nèi)的應(yīng)用進(jìn)程終止,進(jìn)而會(huì)使容器終止九巡。
很多種容器編排工具图贸,最流行的目前是kubernets,即k8s A
A是
B否
容器與虛擬化的描述錯(cuò)誤的是 D
(A 容器比虛擬機(jī)少了OS
(B) 容器開銷更小
C 容器啟動(dòng)速度更快,毫秒級(jí)
image-20200121222411785
D 虛擬機(jī)比容器鏡像更小
docker容器運(yùn)行時(shí)冕广,可以指定CPU親和性疏日, 內(nèi)存大小 A
A是
B)否
容器退出后,使用docker ps命令無法查看到撒汉,說明容器被自動(dòng)刪除了? B
A對(duì)
B)錯(cuò)
如何搜索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)正確
錯(cuò)誤
很多應(yīng)用容器都是默認(rèn)后臺(tái)運(yùn)行的,怎么查看它們的輸出和日志信息? C
A) docker log
(B) docker logarithms
C docker logs
D docker logarithm
有關(guān)docker下列說法正確的是 ACD *
A 當(dāng)我們?cè)诒镜刂鳈C(jī)上使用一個(gè)不存在的鏡像時(shí) Docker就會(huì)自動(dòng)下載這個(gè)鏡像睬辐。如果我們想預(yù)先下載這個(gè)鏡像挠阁,我們可以使用docker pull命令來下載它。#docker pull ubuntu:13.10,同樣設(shè)置鏡像標(biāo)簽#docker tag 860c279d2fec runooblcentos:dev溯饵。
B docker stats動(dòng)態(tài)查看docker源消耗情況侵俗,包括:內(nèi)存、網(wǎng)絡(luò)I/O但是不包括CPU丰刊。
C docker通過exec可以創(chuàng)建兩種任務(wù)(后臺(tái)型任務(wù)和交互型任務(wù))交互型任務(wù): docker exec - it "容器ID" /bin/bash后臺(tái)型任務(wù):docker exec _d "容器ID" touch 123.
D 批量操作容器隘谣, docker ps -q只列出docker id
如何啟動(dòng)本機(jī)Docker服務(wù) A
A $ sudo systemctl start docker
net選項(xiàng)后面可以跟哪些參數(shù)? ABC *
A None
B host
C bridge
docker的存儲(chǔ)驅(qū)動(dòng)程序有哪些 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個(gè)容器)
C docker pause暫停容器中所有的進(jìn)程
D docker run創(chuàng)建一個(gè)新的容器并且啟動(dòng)它
構(gòu)建Docker鏡像應(yīng)該遵循哪些原則? ABCDE
A盡量選取滿足需求但較小的基礎(chǔ)系統(tǒng)鏡像啄巧, 建議選擇debian:wheezy鏡像寻歧, 僅有43MB大小
B請(qǐng)理編譯生成文件掌栅、 安裝包的緩存等臨時(shí)文件
C安裝各個(gè)軟件時(shí)候要指定準(zhǔn)確的版本號(hào), 并避免引入不需要的依賴
D從安全的角度考慮熄求, 應(yīng)用盡量使用系統(tǒng)的庫和依賴
E使用Dockerfile創(chuàng)建鏡像時(shí)候要添加.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)建一個(gè)鏡像? ABD
A docker create
B docker commit
(C docker add
D docker build
docker進(jìn)入容器的方法有哪些? CD
C 使用 docker attach命令
D 使用exec命令
作者:三德書生
鏈接:http://www.reibang.com/p/4774cd39ac8a
來源:簡書
著作權(quán)歸作者所有渣玲。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處弟晚。