第一本docker書-讀書筆記 前三章

第一章

  • docker得益于現(xiàn)代Linux內(nèi)核特性,如控件組(control group),命名空間技術(namespace)技術。讓容器和宿主機之間的隔離更加徹底,容器有獨立的網(wǎng)絡和存儲棧,還擁有自己的資源管理能力,使得同一臺宿主機中的多個容器可以友好地共存。
  • docker依賴于寫時復制模型,使修改應用程序也非常迅速。
  • docker鼓勵面向服務的架構(gòu)和為服務架構(gòu)。docker推薦單個容器只允許一個應用程序或進程,這樣就形成了一個分布式的應用程序模型。

docker的核心組件有:

  1. docker客戶端和服務器。
  2. docker鏡像。
  3. registry。
  4. docker容器。

1:docker是cs架構(gòu)的程序,docker客戶端向docker服務器(通過網(wǎng)絡連接)或守護進程(通過unix套接字連接)發(fā)出請求,docker服務器管理容器。

2:鏡像是容器的源代碼,一個容器是由這些源代碼構(gòu)建出來的,體積很?。ň鸵粋€文本文件)。

3:regisry是用來保存鏡像的倉庫,可以使用公共的也可以自己搭建私有的。

4:容器是基于鏡像啟動的,是一個鏡像格式,一系列的標準的操作或者一個執(zhí)行環(huán)境。

利用docker,可以消除本地開發(fā)環(huán)境,測試環(huán)境和生產(chǎn)環(huán)境之間的部署障礙。

linux通過namespace,可以實現(xiàn)文件系統(tǒng),進程,網(wǎng)絡隔離,使用cgroups,可以讓cpu和內(nèi)存之類的資源獨立分配給每個docker容器。

第二章

這本書第二章是講怎么安裝docker的。書上的內(nèi)容可能比較老了,就去按照docker的官方文檔安裝的。

在wsl2的Ubuntu20.04系統(tǒng)中安裝docker

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

gpg是一種加密工具,這個語句的作用其實是將公鑰添加到apt信任中。這樣才能連接到docker的apt倉庫里。

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

service docker start
service docker status

這里如果看到Docker is running就說明docker服務已經(jīng)啟動啦~

sudo docker run hello-world

運行的時候他會先在本地查找一下有沒有鏡像,沒有的話會去遠程倉庫拉取。

Unable to find image 'hello-world:latest' locally

latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete                                                                                             Digest: sha256:8c5aeeb6a5f3ba4883347d3747a7249f491766ca1caa47e5da5dfcf6b9b717c0
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

運行輸出。

第三章 docker入門

docker info顯示docker信息。

docker run

docker run提供了docker容器的創(chuàng)建到啟動的功能。

參數(shù)

-i 保證容器中的stdin是開啟的。

-t告訴docker要為創(chuàng)建的容器分配一個偽tty的終端。

這樣,-i -t就能為新創(chuàng)建的容器提供一個交互式的shell。

docker run -i -t ubuntu /bin/bash

通過這樣就能生成一個鏡像并運行。

上圖的主機名發(fā)生了變化

這個命令會先檢查本地是否存在Ubuntu鏡像,沒有的話會去官方的registry下載,下載完畢之后利用這個鏡像創(chuàng)建一個新容器。最后告訴鏡像要執(zhí)行什么命令,在這個例子中,我們執(zhí)行了/bin/bash命令,啟動了一個Bash shell。

然后你就可以對這個鏡像做任何自己想做的事情。比如你可以安裝軟件,當所有工作都結(jié)束時,輸入exit,就退出鏡像。

當你退出鏡像時,就會發(fā)現(xiàn)這個鏡像已經(jīng)被關閉了。

image-20201116074540877

而此時你重新

執(zhí)行docker run -i -t ubuntu /bin/bash,那會重新啟動一個鏡像,就會發(fā)現(xiàn)你之前執(zhí)行的命令,安裝的軟件全部沒有了。

--name可以為容器命名,利用命名可以更好地區(qū)分我們的鏡像。

-ddocker會把容器放到后臺運行。

可以利用這個創(chuàng)建一個守護容器。

docker run --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

root@DESKTOP-3JK8RKR:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
60e7fecca197        ubuntu              "/bin/sh -c 'while t…"   52 seconds ago      Up 52 seconds                           daemon_dave

可以看到有個容器正在后臺運行。

--restart在容器退出時是否重啟容器。

--restart=always總是重啟容器,不管退出代碼是什么。

--restart=on-failure:5只有退出代碼非0時,才重啟容器,最多重啟5次。

docker start

可以用來啟動一個容器。

image-20201116075144721

然后光啟動這個容器,是沒有進去它的操作界面的。還需要附著到容器上。利用docker attact

image-20201116075407972

可以看到進去了之前的鏡像,安裝的vim命令還在。

docker log

想看容器打印了什么,我們可以通過docker logs來獲取容器的日志。如果用-f參數(shù),還能監(jiān)控docker的日志。加上-t參數(shù),會打印時間戳。

image-20201116080506217

docker top

想看容器的進程。

image-20201116080538192

docker exec

在容器內(nèi)部執(zhí)行命令。

docker exec -d daemon_dave touch /etc/new_config_file

然后我們進去也用exec進去容器里面。

docker exec -t -i daemon_dave /bin/bash

image-20201116081009579

可以看到文件確實被創(chuàng)建了。

docker stop

用stop停止守護進程。

image-20201116081215308

可以看出容器已經(jīng)被停止了。

docker stop是向容器發(fā)送sigterm信號,是比較溫和的關閉方法,如果想快速關閉,可以用docker kill。

docker inspect

可以獲得容器的詳細信息,通過-f可以只看某部分的信息。

docker rm

可以刪除容器,但是需要注意的是,運行中的容器是無法刪除的。

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

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

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