《 Docker 进阶与实战 》 读书笔记
前些天發(fā)現(xiàn)了一個巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點擊跳轉(zhuǎn)到教程。
以下內(nèi)容全文出自書目:《 Docker 進(jìn)階與實戰(zhàn) 》
1. Docker 定義:一個開源的容器引擎,可以方便地對容器進(jìn)行管理,不同容器可以共享底層的只讀鏡像。
2. Docker 是一個典型的 C/S 架構(gòu)的應(yīng)用。
3.?Docker deamon 可以被理解成?Docker? Server ,也常常用?Docker? Engine 來描述它。
4. 容器以鏡像為基礎(chǔ),同時又為鏡像提供了一個標(biāo)準(zhǔn)和隔離的執(zhí)行環(huán)境。鏡像是這個運行環(huán)境的靜態(tài)體現(xiàn)。
5. Registry 是存放鏡像的倉庫,通常被部署在服務(wù)器或者云端。支持鏡像的分發(fā)和更新。
? ? 倉庫的名字通常由兩部分組成,中間以斜線分開,前是用戶名,后是鏡像名。如:tom/ubuntu 。
? ? Docker 公司提供的官方 Registry 叫?Docker Hub 。鑒權(quán)認(rèn)證保證了 Registry 訪問的安全性。
? ? 若要將鏡像 push 到第三方 Registry , 那么鏡像名中必須包含該 Registry 地址。
? ? 其實 Registry 也是一個單獨的開源項目。任何人都可以下載后部署一個自己的 Registry 。
?
6.?Docker? 的安裝:
sudo ape-get install docker.io7.?Docker? Container : 內(nèi)核容器技術(shù)。自動構(gòu)建時當(dāng)前機器的配置不會影響鏡像的構(gòu)建過程。
? ? Docker? 容器與主機共享操作系統(tǒng)內(nèi)核。
8. 容器虛擬化是一種操作系統(tǒng)虛擬化,屬于輕量級的虛擬化。
9. Namespace : 命名空間 / 名字空間,主要作訪問隔離。將內(nèi)核的全部資源作封裝,使得每個空間有一份獨立資源,不同進(jìn)程在各自空間內(nèi)對同一種資源的使用不會相互干擾。
10. Cgroup? 是 Control group 的簡稱,亦稱為控制組,主要作資源控制。用于限制和隔離一組進(jìn)程對系統(tǒng)資源的使用。
11. 容器組成公式:
容器 = cgroup + namespace + rootfs + 容器引擎(用戶態(tài)工具)Cgroup : 資源控制Namespace : 訪問隔離rootfs :文件系統(tǒng)隔離容器引擎 :生命周期控制12. $$ 表示當(dāng)前進(jìn)程。
13. IPC 是 Inter - Process Communication 的簡寫:進(jìn)程間通信。
14. Mount Namespace 用于隔離文件系統(tǒng)掛載點,刪除方式:
ip netns delete new_ns15. host 的普通用戶進(jìn)程在容器里可以是 0 號用戶,也就是 root 用戶。
16.?Docker? image 是用來啟動容器的只讀模板。
17. 導(dǎo)入鏡像有 2 個可用命令:
docker import / docker load 。 docker load? 一般只用于導(dǎo)入由 docker save 導(dǎo)出的鏡像。
18.生成鏡像方式:
docker commit :可增量的生成一個鏡像。docker build : 通過 dockerfile 文件生成鏡像。19. 列出容器:
docker ps20. 列出鏡像:
docker images?21. 查看容器和鏡像詳細(xì)信息:
docker inspect22. Docker images 包含數(shù)據(jù)必要的元數(shù)據(jù)。數(shù)據(jù)由一層層的 image layer 組成,元數(shù)據(jù)則是一些 JSON 文件。用來描述數(shù)據(jù)(image layer)之間的關(guān)系及容器的一些配置信息。
23.?Docker? 對鏡像進(jìn)行了完整性校驗,其完整性的憑證是由鏡像倉庫提供的。
24. image ID 實際上只是最上層的 layer ID,所以?Docker? inspect 也適用于任何一層 layer 。
25. “ env ”? : 容器啟動時會作為容器的環(huán)境變量?!?Cmd ” : 容器啟動時的默認(rèn)命令。
26.?Docker? image 可使用寫時復(fù)制,快并節(jié)省空間。
27. 若制作 image 時使用到了上些關(guān)鍵信息(賬號、密碼等),則需要在同層刪除,不然這些信息會一直存在于 image 中。
28. 若下載鏡像不帶標(biāo)簽,會把 ubuntu 倉庫下官方(默認(rèn) tag )鏡像全部下載。
29. 沙盒:隔離的網(wǎng)絡(luò)運行環(huán)境,保存了容器網(wǎng)絡(luò)棧的配置,包括了對網(wǎng)絡(luò)接口、路由表和 DNS 配置的管理。
30. docker create 、 docker run 可帶參數(shù):-v : 添加數(shù)據(jù)卷,并可多次指定來掛載多個數(shù)據(jù)卷。
? ? ? -v 會在容器的 /tmp/data 目錄下創(chuàng)建一個新的數(shù)據(jù)卷。
? ? ? 可用 docker Inspet 查看數(shù)據(jù)卷在主機中的位置。
? ? ? -v 也可將?Docker? daemon 所在主機上的文件或文件夾掛載到容器中。
? ? ? -v 參數(shù)的主機目錄必須使用絕對路徑,若指定路徑不存在,?Docker 會自動創(chuàng)建該目錄。
? ? ? ?使用數(shù)據(jù)卷容器存儲的數(shù)據(jù)不會輕易丟失,刪除容器、甚至是初始化該數(shù)據(jù)卷的 dbdata ,該數(shù)據(jù)卷也不會被刪除。
31. 在本機部署 Convoy 插件后可用 Convoy 創(chuàng)建一個卷: ( 見書?P103 )
sudo convoy create volume_name刪除:
sudo convoy delete volume_name備份:
sudo convoy backup create snaplvoll --dest vfs:///opt/convoy/32. Linux 的命令 ulimit 可對一些資源起限制作用,包括:
core dump 文件的大小、進(jìn)程數(shù)據(jù)段的大小、可創(chuàng)建文件的大小、常駐內(nèi)存集的大小 、打開文件的數(shù)量、進(jìn)程棧的大小、CPU 時間 、單個用戶最大線程數(shù)、進(jìn)程最大虛擬內(nèi)存33. Docker 可設(shè)置容器的根文件系統(tǒng)為只讀模式。
34.?Dockerfile 由四部分組成:
基礎(chǔ)鏡像信息、維護者信息、鏡像操作指令、容器啟動命令? ? ?其第一條有效信息必須是基礎(chǔ)鏡像信息: FROM 指令。用來指定要制作的鏡像繼承自哪個鏡像。
? ? ?可以寫多個? FROM 指令來構(gòu)建復(fù)雜鏡像。? ? ?
EXPOSE : 暴露端口CMD :容器啟動時執(zhí)行的命令。每個 Dockerfile 只能有一條 CMD 命令,寫了多條時只有最后一條會被執(zhí)行。若用戶啟動容器時指定了運行命令,則會覆蓋 CMD 指定命令。VOLUME :創(chuàng)建一個可從本地主機或其它容器掛載的掛載點。常用來存放數(shù)據(jù)庫或需要永久保存的數(shù)據(jù)。ENV :指定一個環(huán)境變量。被后續(xù) RUN 命令使用并在容器運行時保持。35.?Docker 制作鏡像的順序:
1. 解析 Dockerfile,找到基礎(chǔ)鏡像。2. 以基礎(chǔ)鏡像為基礎(chǔ),創(chuàng)建一個容器。3. 在容器中按順序執(zhí)行 Dockerfile 中的命令。4. 若不是 RUN 命令,如 ENV 命令,記錄下來以便啟動時執(zhí)行。5. 把屬性命令記錄在 Image 的屬性中。6. 所有命令執(zhí)行完后,commit 該容器為新的鏡像。36.?Docker run 命令中用 -p 實現(xiàn)端口映射。
? ? ? 80:8089? 表示將主機上的 80 端口映射到容器中的 8089 端口。(對外端口:容器內(nèi)端口)
37.?Docker build 命令可跟參數(shù) -f :指定 build 命令中的 “ dockerfile ”? 選項來設(shè)置所需的?Dockerfile 。
38. docker-compose-yml 文件中:
1. “ ports?” 對應(yīng) docker run 中的 -p 參數(shù)。2. “ volumes ” 對應(yīng) -v 選項。3. “ links ” 對應(yīng) “ --links ” 選項。39.搭建 Jenkins 環(huán)境有 2 種方式:
? ? ?1) 直接在主機中配置 Jenkins 環(huán)境 。
? ? ?2) 使用??Docker 鏡像配置 Jenkins 環(huán)境:
1. 下載 Jenkins 鏡像: docker pull jenkins2. 啟動 Jenkins 容器: docker run -d -p 49001:8080 -t Jenkins-d : 后臺運行; -p : 端口映射; -t :給容器命名。?
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的《 Docker 进阶与实战 》 读书笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS 中 Map 与 JSON 转换
- 下一篇: 得当前时间的工具类