Docker基礎(chǔ)知識

1、說明

Docker是一個開源的引擎砌些,可以輕松的為任何應(yīng)用創(chuàng)建一個輕量級的呜投、可移植的、自給自足的容器存璃,基于go語言開發(fā)仑荐。

Docker本質(zhì)就是宿主機(jī)的一個進(jìn)程麦撵,docker是通過namespace實現(xiàn)資源隔離鸿吆,通過cgroup實現(xiàn)資源限制,通過寫時復(fù)制技術(shù)(copy-on-write)實現(xiàn)了高效的文件操作(類似虛擬機(jī)的磁盤比如分配500g并不是實際占用物理磁盤500g)

1.1 為什么要使用docker?
  • 傳統(tǒng)環(huán)境:
    1.環(huán)境不一致。
    2.在多用戶的操作系統(tǒng)下篮迎,會相互影響。
    3.運維成本過高示姿。
    4.安裝軟件成本過高甜橱。

  • Docker學(xué)習(xí)網(wǎng)址

官網(wǎng)文檔

  • Docker鏡像國際倉庫

https://hub.docker.com/

2、Docker配置修改國內(nèi)鏡像

1栈戳、通過配置文件啟動Docker,修改 /etc/docker/daemon.json文件并添加上 registry-mirrors 鍵值岂傲。沒有daemon.json文件新增文件(安裝方式使用dockerDesktop安裝)

 sudo vim /etc/docker/daemon.json

2、添加網(wǎng)易鏡像,(也可以添加阿里巴巴)

{"registry-mirrors": ["http://hub-mirror.c.163.com"]}

3子檀、重啟docker

systemctl restart docker

4镊掖、查看docker版本:docker version

[lond@lsyPro ~ ]$ docker version
Client: Docker Engine - Community
 Cloud integration: 1.0.12
 Version:           20.10.5
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        55c4c88
 Built:             Tue Mar  2 20:13:00 2021
 OS/Arch:           darwin/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.5
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       363e9a8
  Built:            Tue Mar  2 20:15:47 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.4
  GitCommit:        05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc:
  Version:          1.0.0-rc93
  GitCommit:        12644e614e25b05da6fd08a38ffa0cfe1903fdec
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

docker info 查看docker配置信息 會介紹客戶端服務(wù)端信息

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
  scan: Docker Scan (Docker Inc., v0.6.0)
Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 20.10.5
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc version: 12644e614e25b05da6fd08a38ffa0cfe1903fdec
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 5.10.25-linuxkit
 Operating System: Docker Desktop
 OSType: linux
 Architecture: x86_64
 CPUs: 6
 Total Memory: 1.941GiB
 Name: docker-desktop
 ID: ICCY:X3BS:MG4T:2I3X:MNNJ:SEZK:VRWU:AXL3:KO4Y:ZA37:R7RL:NWI4
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 HTTP Proxy: http.docker.internal:3128
 HTTPS Proxy: http.docker.internal:3128
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

3、docker工作機(jī)制

參考:https://blog.csdn.net/wrs120/article/details/83583391
http://blog.itpub.net/29715045/viewspace-2654587/

3.1 docker的組成結(jié)構(gòu)
image.png
說明

-Docker client 客戶端/Docker daemon 守護(hù)進(jìn)程

docker是C/S架構(gòu)的程序褂痰,docker客戶端向docker服務(wù)器端也就是docker的守護(hù)進(jìn)程發(fā)送請求亩进,守護(hù)進(jìn)程處理完所有的工作并返回結(jié)果,通過docker客戶端執(zhí)行各種命令缩歪,然后docker客戶端會將這些命令發(fā)送給守護(hù)進(jìn)程归薛,守護(hù)進(jìn)程執(zhí)行的結(jié)果還會傳回客戶端,使我們能通過客戶端來查看命令運行的結(jié)果匪蝙。

  • Image(鏡像)

容器基于鏡像啟動和運行主籍,鏡像好比容器的源代碼,保存了用于啟動容器的各種條件逛球,docker的鏡像是一個層疊的只讀文件系統(tǒng)千元。最底端是一個引導(dǎo)文件系統(tǒng),即bootfs颤绕,docker用戶幾乎不會和引導(dǎo)文件系統(tǒng)有交互幸海,當(dāng)一個容器啟動后蜡歹,它將會被移動到內(nèi)存中,而引導(dǎo)文件系統(tǒng)將會被卸載涕烧,docker鏡像的第二層是root文件系統(tǒng)rootfs(ubuntu)月而,位于引導(dǎo)文件之上,root文件系統(tǒng)可以是一種或多種的文件系統(tǒng)议纯,docker中root文件系統(tǒng)只能是只讀狀態(tài)父款,并且docker利用聯(lián)合加載的技術(shù)又會在root文件系統(tǒng)之上加載更多的只讀文件系統(tǒng)。聯(lián)合加載指的是一次加載多個文件系統(tǒng)瞻凤,但在外面看來只能看到一個文件系統(tǒng)憨攒。聯(lián)合加載會將各種文件系統(tǒng)疊加到一起。docker將這樣的文件系統(tǒng)稱之為鏡像阀参。

  • Registry(倉庫)

docker用倉庫來保存用戶構(gòu)建的鏡像肝集,倉庫分私有和公有兩種,docker公司提供一個公有的倉庫蛛壳,叫docker hub杏瞻。

  • Container(容器)

容器通過鏡像啟動,容器中可以運行客戶的一個或多個進(jìn)程衙荐。當(dāng)一個容器啟動時捞挥,該鏡像會在最頂層加載一個讀寫文件系統(tǒng)(可寫層),在docker中運行的程序忧吟,就是在這個層中進(jìn)行執(zhí)行的砌函,當(dāng)docker第一次啟動容器時,初始的可寫層是空的溜族,當(dāng)文件系統(tǒng)發(fā)生變化時讹俊,這些變化都會應(yīng)用到這一層上。比如煌抒,如果想修改一個文件仍劈,該文件會從最下面的只讀層復(fù)制到讀寫層,該文件的只讀版本依然存在摧玫,但是被讀寫的文件副本所隱藏耳奕,這就是寫時復(fù)制。每一個只讀鏡像層都是只讀的诬像,當(dāng)創(chuàng)建一個新容器時屋群,docker會構(gòu)建一個鏡像棧,在棧的最頂層添加可寫層坏挠。

3.2 docker工作流程
image.png

步驟:
1芍躏、docker client端使用docker pull 通過docker服務(wù)器去遠(yuǎn)程中央拉取鏡像到本地鏡像倉庫
2、docker client端使用docker run 從鏡像中運行docker容器(containers)
3降狠、docker client端使用docker build 將本地應(yīng)用構(gòu)建鏡像存放到鏡像倉庫

工作機(jī)制

4对竣、docker 優(yōu)點

  • 靈活:即使是最復(fù)雜的應(yīng)用也可以集裝箱化庇楞。
  • 輕量級:容器利用并共享主機(jī)內(nèi)核。
  • 可互換:您可以即時部署更新和升級否纬。
  • 便攜式:您可以在本地構(gòu)建吕晌,部署到云,并在任何地方運行临燃。
  • 可擴(kuò)展:您可以增加并自動分發(fā)容器副本睛驳。
  • 可堆疊:您可以垂直和即時堆疊服務(wù)。

5膜廊、docker為什么會比虛擬機(jī)快

參考:https://blog.csdn.net/wrs120/article/details/83583391

  1. Docker用的是宿主物理機(jī)上的硬件乏沸,不用Hypervisor實現(xiàn)硬件虛擬化,所以CPU,內(nèi)存利用率在效率上有優(yōu)勢
  2. Docker利用的是宿主機(jī)的內(nèi)核爪瓜,不需要Guest OS蹬跃,因此Docker不需要和虛擬機(jī)一樣要加載操作系統(tǒng)的內(nèi)核,利用的是宿主機(jī)的操作系統(tǒng)铆铆,因此過程非车海快,是秒級的(而新建一個虛擬機(jī)時算灸,虛擬機(jī)上的虛擬軟件需要加載Guent OS扼劈,這個過程時分鐘級別的)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末驻啤,一起剝皮案震驚了整個濱河市菲驴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌骑冗,老刑警劉巖赊瞬,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異贼涩,居然都是意外死亡巧涧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門遥倦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谤绳,“玉大人,你說我怎么就攤上這事袒哥∷跎福” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵堡称,是天一觀的道長瞎抛。 經(jīng)常有香客問我,道長却紧,這世上最難降的妖魔是什么桐臊? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任胎撤,我火速辦了婚禮,結(jié)果婚禮上断凶,老公的妹妹穿的比我還像新娘伤提。我一直安慰自己,他們只是感情好认烁,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布飘弧。 她就那樣靜靜地躺著,像睡著了一般砚著。 火紅的嫁衣襯著肌膚如雪次伶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天稽穆,我揣著相機(jī)與錄音冠王,去河邊找鬼。 笑死舌镶,一個胖子當(dāng)著我的面吹牛柱彻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播餐胀,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼哟楷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了否灾?” 一聲冷哼從身側(cè)響起卖擅,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎墨技,沒想到半個月后惩阶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡扣汪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年断楷,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片崭别。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡冬筒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出茅主,到底是詐尸還是另有隱情舞痰,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布暗膜,位于F島的核電站匀奏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏学搜。R本人自食惡果不足惜娃善,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一论衍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧聚磺,春花似錦坯台、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至焕阿,卻和暖如春咪啡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背暮屡。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工撤摸, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人褒纲。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓准夷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親莺掠。 傳聞我的和親對象是個殘疾皇子衫嵌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容