day108 Docker簡單命令

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

  1. 部署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)載請注明出處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 特別說明: 本人平時混跡于 B 站,不咋回復(fù)這里的評論,有問題可以到 B 站視頻評論區(qū)留言找我視頻地址: http...
    擼帝閱讀 1,011評論 1 3
  • 一、Docker 簡介 Docker 兩個主要部件:Docker: 開源的容器虛擬化平臺Docker Hub: 用...
    R_X閱讀 4,522評論 0 27
  • 五、Docker 端口映射 無論如何,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機(jī)是訪問不到的。此外,除了...
    R_X閱讀 1,969評論 0 7
  • linux 查看系統(tǒng)版本確認(rèn)使用的docker版本 uname -a --查看Linux內(nèi)核版本命令cat /pr...
    只有香如故閱讀 1,397評論 1 4
  • 第二周 上課時間:9.7 中秋課程 一、詩歌,拍胸脯大腿節(jié)奏 《古朗月行》唐 李白 二、蜂蠟 捏中秋拜月供桌 在捏...
    白金尺Sara閱讀 151評論 0 1

友情鏈接更多精彩內(nèi)容