docker基礎(chǔ)知識

Docker架構(gòu)

1、什么是docker

? 是一個平臺辐啄,是構(gòu)建采章、測試、部署和發(fā)布容器化應(yīng)用的平臺壶辜。Docker 是一個開 源的應(yīng)用容器引擎悯舟,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的 容器中,然后發(fā)布到任何流行的linux機器或Windows 機器上,也可以實現(xiàn)虛擬 化,容器是完全使用沙箱機制,相互之間不會有任何接口

2、基本概念

  • 鏡像(Image):Docker 鏡像(Image)砸民,就相當(dāng)于是一個 root 文件系統(tǒng)抵怎。Docker 鏡像是用于創(chuàng)建 Docker 容器的模板

  • 容器(Container):容器是獨立運行的一個或一組應(yīng)用,是鏡像運行時的實體

  • 倉庫(Repository):倉庫可看著一個代碼控制中心岭参,用來保存鏡像反惕。

  • docker客戶端:Docker 客戶端通過命令行或者其他工具使用 Docker SDK 與 Docker 的守護(hù)進(jìn)程通信

  • docker namespace:docker通過命名空間實現(xiàn)資源容器與容器,與宿主機間的隔離演侯。

  • 網(wǎng)絡(luò):docker 提供四種不同的網(wǎng)絡(luò)模式姿染,Host、Container秒际、None 和 Bridge

    • 默認(rèn)網(wǎng)絡(luò)設(shè)置Bridge.在這種模式下悬赏,除了分配隔離的網(wǎng)絡(luò)命名空間之外狡汉,Docker 還會為所有的容器設(shè)置 IP 地址。當(dāng) Docker 服務(wù)器在主機上啟動之后會創(chuàng)建新的虛擬網(wǎng)橋 docker0闽颇,隨后在該主機上啟動的全部服務(wù)在默認(rèn)情況下都與該網(wǎng)橋相連盾戴。在默認(rèn)情況下,每一個容器在創(chuàng)建時都會創(chuàng)建一對虛擬網(wǎng)卡进萄,兩個虛擬網(wǎng)卡組成了數(shù)據(jù)的通道捻脖,其中一個會放在創(chuàng)建的容器中,會加入到名為 docker0 網(wǎng)橋中中鼠。查看brctl show


      image.png
  • 掛載點

3可婶、docker工作原理

  • docker使軟件開發(fā)者無需擔(dān)心配置和依賴性,在任何地方打包援雇,發(fā)送和運行他們的應(yīng)用程序矛渴。

  • image.png
  • Cgroups(Control Groups): 實現(xiàn)資源限制

  • 工作原理簡單來說就是它的架構(gòu)形式,client -- dockerhost -- docker daemon - registry

4惫搏、docker架構(gòu)

  • Docker 使用客戶端-服務(wù)器 (C/S) 架構(gòu)模式具温,使用遠(yuǎn)程API來管理和創(chuàng)建Docker容器
  • Docker采用 C/S架構(gòu) Docker daemon 作為服務(wù)端接受來自客戶的請求,并處理這些請求(創(chuàng)建筐赔、運行铣猩、分發(fā)容器)。 客戶端和服務(wù)端既可以運行在一個機器上茴丰,也可通過 socket 或者RESTful API 來進(jìn)行通信
  • docker daemon 一般在宿主主機后臺運行达皿,等待接收來自客戶端的消息。 Docker 客戶端則為用戶提供一系列可執(zhí)行命令贿肩,用戶用這些命令實現(xiàn)跟 Docker daemon 交互峦椰。
  • image.png

docker與VMware對比

  • image.png
  • VM(VMware)在宿主機器、宿主機器操作系統(tǒng)的基礎(chǔ)上創(chuàng)建虛擬層汰规、虛擬化的操作系統(tǒng)汤功、虛擬化的倉庫,然后再安裝應(yīng)用溜哮;

    Container(Docker容器)滔金,在宿主機器、宿主機器操作系統(tǒng)上創(chuàng)建Docker引擎茬射,在引擎的基礎(chǔ)上再安裝應(yīng)用鹦蠕。

    Docker在宿主機器的操作系統(tǒng)上創(chuàng)建Docker引擎,直接在宿主主機的操作系統(tǒng)上調(diào)用硬件資源在抛,而不是虛擬化操作系統(tǒng)和硬件資源

docker常用命令

命令 描述 語法 常用選項
docker run 創(chuàng)建一個新的容器并運行一個命令 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] -d: 后臺運行容器钟病,并返回容器ID;
-i: 以交互模式運行容器,通常與 -t 同時使用肠阱,-t: 為容器重新分配一個偽輸入終端票唆;
-P:隨機端口映射,容器內(nèi)部端口隨機映射到主機的高端口
-p: 指定端口映射屹徘,格式為:主機(宿主)端口:容器端口
--name="nginx-lb": 為容器指定一個名稱走趋;
更多選項參考:https://www.runoob.com/docker/docker-run-command.html
docker start
/stop
/restart
啟動/停止/重啟一個容器 docker start/
stop/restart
[OPTIONS] CONTAINER [CONTAINER...]
docker kill 殺掉一個運行中的容器 docker kill [OPTIONS] CONTAINER [CONTAINER...] -s :向容器發(fā)送一個信號
docker rm 刪除一個或多個容器 docker rm [OPTIONS] CONTAINER [CONTAINER...] -f :通過 SIGKILL 信號強制刪除一個運行中的容器。
-v :刪除與容器關(guān)聯(lián)的卷
docker pause/uppause 暫驮胍粒或恢復(fù)容器中所有的進(jìn)程
docker create 創(chuàng)建一個新的容器但不啟動它 docker create [OPTIONS] IMAGE [COMMAND] [ARG...] 用法同docker run
docker exec 在運行的容器中執(zhí)行命令 docker exec [OPTIONS] CONTAINER COMMAND [ARG...] -i :即使沒有附加也保持STDIN 打開
-t :分配一個偽終端
eg :docker exec -i -t mynginx /bin/bash
docker ps 列出容器 docker ps [OPTIONS] -a :顯示所有的容器簿煌,包括未運行的。
-q :靜默模式鉴吹,只顯示容器編號姨伟。
-n :列出最近創(chuàng)建的n個容器。
-l :顯示最近創(chuàng)建的容器豆励。
docker inspect 獲取容器/鏡像的元數(shù)據(jù)夺荒。 docker inspect [OPTIONS] NAME|ID [NAME|ID...]
docker top 查看容器中運行的進(jìn)程信息,支持 ps 命令參數(shù) docker top [OPTIONS] CONTAINER [ps OPTIONS]
docker attach 連接到正在運行中的容器 docker attach [OPTIONS] CONTAINER
docker events 從服務(wù)器獲取實時事件 docker events [OPTIONS]
docekr logs 獲取容器的日志 docker logs [OPTIONS] CONTAINER -f : 跟蹤日志輸出
--since :顯示某個開始時間的所有日志
-t : 顯示時間戳
--tail :僅列出最新N條容器日志
eg: docker logs --since="2016-07-01" --tail=10 mynginx
docker export 將文件系統(tǒng)作為一個tar歸檔文件導(dǎo)出到STDOUT docker export [OPTIONS] CONTAINER -o :將輸入內(nèi)容寫到文件
docker port 列出指定的容器的端口映射良蒸,或者查找將PRIVATE_PORT NAT到面向公眾的端口 docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]]
docker commit 從容器創(chuàng)建一個新的鏡像 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
docker cp 用于容器與主機之間的數(shù)據(jù)拷貝 docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
-L :保持源目標(biāo)中的鏈接
docker diff 檢查容器里文件結(jié)構(gòu)的更改
docker login/logout 登陸到一個Docker鏡像倉庫
docker pull/push/search
docker images 列出本地鏡像 docker images [OPTIONS] [REPOSITORY[:TAG]] -a :列出本地所有的鏡像
-f :顯示滿足條件的鏡像
-q :只顯示鏡像ID技扼。
docker rmi 刪除本地一個或多少鏡像 docker rmi [OPTIONS] IMAGE [IMAGE...] -f :強制刪除;
docker tag 標(biāo)記本地鏡像嫩痰,將其歸入某一倉庫 ocker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
docker build 命令用于使用 Dockerfile 創(chuàng)建鏡像 docker build [OPTIONS] PATH | URL | - -f :指定要使用的Dockerfile路徑
--tag, -t: 鏡像的名字及標(biāo)簽
其他限制選項參考:https://www.runoob.com/docker/docker-build-command.html
docker history 查看指定鏡像的創(chuàng)建歷史
docker save 將指定鏡像保存成 tar 歸檔文件
docker load 導(dǎo)入使用docker save 命令導(dǎo)出的鏡像 docker load [OPTIONS] -i : 指定導(dǎo)入的文件
docker import 從歸檔文件中創(chuàng)建鏡像 docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]] -c :應(yīng)用docker 指令創(chuàng)建鏡像剿吻;
-m :提交時的說明文字;
docker info 顯示 Docker 系統(tǒng)信息串纺,包括鏡像和容器數(shù)
docker version 顯示 Docker 版本信息

Dockerfile

1和橙、什么是dockerfile

  • Dockerfile是一個包含用于組合映像的命令的文本文檔≡於猓可以使用在命令行中調(diào)用任何命令。 Docker通過讀取Dockerfile中的指令自動生成映像晰搀。
  • Dockerfile 一般分為四部分:基礎(chǔ)鏡像信息五辽、維護(hù)者信息、鏡像操作指令和容器啟動時執(zhí)行指令外恕,’#’ 為 Dockerfile 中的注釋杆逗。

2、Dockerfile 常用語法

語法 描述
FROM <IMAGE> 鏡像制作的基鏡像鳞疲,必須為第一個命令
MAINTAINER 維護(hù)者信息
RUN <SHELL COMMAND> 用于在鏡像容器中執(zhí)行命令
ADD <src> <dest> 將本地文件添加到容器中罪郊,tar類型文件會自動壓,可訪問網(wǎng)絡(luò)文件尚洽,不能用于多階段構(gòu)建中
COPY <src> <dest> 將本地文件添加到容器中悔橄,但不會自動解壓文件,也不能訪問網(wǎng)絡(luò)文件,能用于多階段構(gòu)建中mutli-stage
CMD ["","",...] 容器運行時運行的命令
ENV<key>=<value> ... 給容器設(shè)置環(huán)境變量
EXPOSE <PORT> 指定于外界交互的端口
VOLUME <Directory> 用于指定持久化目錄
user <USER>:<GROUP> 指定運行容器時的用戶癣疟,組

docker-compos

1挣柬、docker-compos是什么

docker compose 是 docker 提供的一個命令行工具,用來定義和運行由多個容器組成的應(yīng)用睛挚,我們可以通過 YAML 文件聲明式的定義應(yīng)用程序的各個服務(wù)邪蛔,并由單個命令完成應(yīng)用的創(chuàng)建和啟動。

#linux安裝docker-compos
* curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-`uname -s`-`uname -m` -o  /usr/local/bin/docker-compose
* chmod +x /usr/local/bin/docker-compose

2扎狱、docker-compose與k8s, swarm容器編排工具

swarm
  swarm 是Docker公司自行研發(fā)的一款用來管理多主機上的Docker容器的工具侧到,可以負(fù)責(zé)啟動容器,監(jiān)控容器狀態(tài)淤击,也   提供服務(wù)之間的負(fù)載均衡匠抗。
  特點: 更快速的運行速度  快速簡單的配置 容器間低耦合  版本控制與組件重用
  缺點: 跨平臺支持效果差  不提供存儲選項 監(jiān)控信息不足
  
#kubernetes
  kubernetes Google 開元容器編排引擎,支持自動化部署遭贸,大規(guī)母昕龋可伸縮,應(yīng)用容器化管理壕吹,能做到零停機的情況下進(jìn)行更新著蛙。
  優(yōu)點:運行速度快  遵循不可變基礎(chǔ)架構(gòu)的原則(利于回滾)  提供聲明式配置 大規(guī)模部署和更新軟件 處理應(yīng)用程序的可用性   提供存儲卷管理
  缺點: 進(jìn)程初始化時間較長 遷移到無狀態(tài)需要很多工作 
  
#docker-compose
  基于Docker的單主機容器編排工具。

3耳贬、docker-compose語法

(1)語法格式: yaml 文件

? 使用compose 3個步驟

  • 使用Dockerfile 定義應(yīng)用程序環(huán)境踏堡,以便在任何地方重現(xiàn)該環(huán)境
  • 在docker-compose.yml文件中定義組成應(yīng)用程序的服務(wù),以便各個服務(wù)在一個隔離環(huán)境中一起運行
  • 運行docker-compose up命令咒劲,啟動運行整個應(yīng)用程序顷蟆。

(2)docker-compose.yml結(jié)構(gòu):services、networks腐魂、volumes

  • services主要用來定義各個容器

    version: '3'
    services:         #services模塊
      euraka:         #指明服務(wù)名稱
        build: .      #指明Dockerfile所在路徑
        ports:            #指明映射的端口
         - "8761:8761"
    

    services模塊下其他命令,與build同級

    • command:覆蓋容器啟動后默認(rèn)執(zhí)行的命令(Dockerfile定義的CMD)帐偎。
    • dns
    • dns_search
    • environment:環(huán)境變量設(shè)置,可使用屬組或字典兩種方式蛔屹。定義的變量會覆蓋.env文件中定義的重名環(huán)境變量
    • entrypoint:可以覆蓋Dockerfile中定義的entrypoint命令
    • env_file:從文件中獲取環(huán)境變量削樊,可指定一個文件或多個文件路徑列表。
    • expose:暴露端口兔毒,只將端口暴露給連接的服務(wù)器漫贞。而不是暴露給宿主機
    • external_links:連接到docker-compose.yml外部的容器
    • iamges:指定運行容器使用的鏡像
    • links:連接到其他服務(wù)的容器 SERVICES:ALIAS
  • networks定義需要使用到的network ,與services平級

    • 默認(rèn)情況下育叁,compose為應(yīng)用創(chuàng)建一個網(wǎng)絡(luò)迅脐,服務(wù)的每個容器都會加入該網(wǎng)絡(luò)中。這樣豪嗽,容器就可被該網(wǎng)絡(luò)中的其他容器訪問谴蔑,該容器還能以服務(wù)名稱作為hostname被其他容器訪問豌骏。
    • networks模塊自定義網(wǎng)絡(luò)
    • 詳細(xì)可參考《spring cloud 與docker》一書 p286-p289
  • volumes定義services使用到的volume树碱,與services平級

    volumes:卷掛載路徑設(shè)置(HOST:CONTAINER 或HOST:CONTAINER:ro)

docker 與微服務(wù) --待學(xué)習(xí)整理

1肯适、什么叫微服務(wù)

...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市成榜,隨后出現(xiàn)的幾起案子框舔,更是在濱河造成了極大的恐慌,老刑警劉巖赎婚,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刘绣,死亡現(xiàn)場離奇詭異,居然都是意外死亡挣输,警方通過查閱死者的電腦和手機纬凤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撩嚼,“玉大人停士,你說我怎么就攤上這事⊥昀觯” “怎么了恋技?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長逻族。 經(jīng)常有香客問我蜻底,道長,這世上最難降的妖魔是什么聘鳞? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任薄辅,我火速辦了婚禮,結(jié)果婚禮上抠璃,老公的妹妹穿的比我還像新娘站楚。我一直安慰自己,他們只是感情好搏嗡,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布源请。 她就那樣靜靜地躺著,像睡著了一般彻况。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上舅踪,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天纽甘,我揣著相機與錄音,去河邊找鬼抽碌。 笑死悍赢,一個胖子當(dāng)著我的面吹牛决瞳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播左权,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼皮胡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赏迟?” 一聲冷哼從身側(cè)響起屡贺,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎锌杀,沒想到半個月后甩栈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡糕再,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年量没,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片突想。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡殴蹄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出猾担,到底是詐尸還是另有隱情袭灯,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布垒探,位于F島的核電站妓蛮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏圾叼。R本人自食惡果不足惜蛤克,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望夷蚊。 院中可真熱鬧构挤,春花似錦、人聲如沸惕鼓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽箱歧。三九已至矾飞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間呀邢,已是汗流浹背洒沦。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留价淌,地道東北人申眼。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓瞒津,卻偏偏與公主長得像,于是被迫代替她去往敵國和親括尸。 傳聞我的和親對象是個殘疾皇子森枪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

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

  • Docker的優(yōu)勢 可以將Docker的產(chǎn)生理解為一種相比虛擬機更加輕量級的虛擬化技術(shù)进栽,前有Openstack用來...
    天劍飛心閱讀 732評論 0 0
  • 一镀迂、Docker 簡介 Docker 兩個主要部件:Docker: 開源的容器虛擬化平臺Docker Hub: 用...
    R_X閱讀 4,382評論 0 27
  • 容器生命周期管理 run start/stop/restart rm pause/unpause create e...
    Al1i9at0r閱讀 360評論 0 2
  • 業(yè)委會作為小區(qū)業(yè)主自治的重要主體凫碌,其職責(zé)履行情況直接關(guān)系到小區(qū)環(huán)境的好壞…… 一、業(yè)委會的職責(zé) 1)召集業(yè)主大會會...
    點滴共鳴閱讀 4,005評論 0 1
  • 繼泰國13名少年被困洞穴幸運被營救后肴焊,美國一名23歲女子也成為奇跡生還的幸運者前联,這名女子駕車摔下60米高的懸崖,在...
    小右3020閱讀 135評論 0 0