Docker基本概念什么是容器技術(shù)一種虛擬化的方案 操作系統(tǒng)虛擬化 依賴于linux內(nèi)核特性:Namespace和Cgroup
虛擬機(jī)需要完整的操作系統(tǒng),。需要模擬硬件行為,對內(nèi)存和cpu損耗相當(dāng)大 同樣配置的服務(wù)器,,容器能提供更多服務(wù)能力,,服務(wù)更多用戶。磁盤占用空間更少,,啟動更快,。容器不容易安裝和管理,,而docker可以改善這些,使容器安裝簡單,,管理方便,。
什么是docker將應(yīng)用程序自動部署到容器 使用GO語言編寫的開源引擎
Docker特點(diǎn)提供簡單輕量的建模方式:快,資源利用率高 職責(zé)的邏輯分離 快速高效的開發(fā)生命周期:在容器中開發(fā),,以容器形式交付,,縮短產(chǎn)品上線周期 鼓勵使用面向服務(wù)的架構(gòu):單個容器只運(yùn)行一個應(yīng)用或者進(jìn)程,一系列內(nèi)部互聯(lián)的容器,,使擴(kuò)展,、調(diào)試程序變得簡單。分布式應(yīng)用程序模型:高內(nèi)聚,,低耦合,,單一任務(wù),在運(yùn)行過程中容易定位問題
使用Docker做什么使用docker容器開發(fā),、測試,、部署服務(wù) 創(chuàng)建隔離的運(yùn)行環(huán)境 搭建測試環(huán)境 構(gòu)建Paas設(shè)施 提供SaaS應(yīng)用程序 高性能,超大規(guī)模的宿主機(jī)部署
Docker基本組成客戶端,、守護(hù)進(jìn)程C/S架構(gòu) 本地/遠(yuǎn)程
鏡像容器的基石,,是一個層疊的只讀文件系統(tǒng) Bootfs:引導(dǎo)文件系統(tǒng),,容器啟動后,,它會移動到內(nèi)存中,引導(dǎo)文件系統(tǒng)會被卸載 Rootls:比如ubuntu,centos,,一種或者多種操作系統(tǒng),,只讀,聯(lián)合加載方式,,基礎(chǔ)鏡像 Add emac:聯(lián)合加載方式,,在基礎(chǔ)鏡像上一次加載多個文件系統(tǒng),對外只能看到一個麻醉中的文件系統(tǒng)會包含低層所有文件和目錄,,它下面的鏡像為副鏡像,,以此類推到最底部,最底部是基礎(chǔ)鏡像
容器通過鏡像啟動 啟動和執(zhí)行階段 寫時復(fù)制 在鏡像的最頂層加載一個可寫層,,初始可寫層是空的,,當(dāng)文件系統(tǒng)發(fā)生變化的時候,這些變化都會應(yīng)用到這可寫層上,,比如:如果修改配置文件,,會先從只讀層復(fù)制到可寫層,該文件的只讀版本依然存在,,但是被可寫層的文件副本隱藏,。
倉庫公有倉庫 私有倉庫
Docker容器相關(guān)技術(shù)Namespaces命名空間封裝:代碼隔離 操作系統(tǒng):提供系統(tǒng)資源的隔離:進(jìn)程,,文件系統(tǒng),網(wǎng)絡(luò)等等,,為了實(shí)現(xiàn)輕量級虛擬化服務(wù),,也就是我們說的容器 五中命名空間
PID :進(jìn)程隔離 NET:管理網(wǎng)絡(luò)接口 IPC:管理跨進(jìn)程通信訪問 MNT:管理掛載點(diǎn) UTS:隔離內(nèi)核和版本標(biāo)識
Control group 控制組cgroups是Linux內(nèi)核提供的一種機(jī)制,這種機(jī)制可以根據(jù)特定的行為,,把一系列系統(tǒng)任務(wù)及其子任務(wù)整合(或分隔)到按資源劃分等級的不同組內(nèi),,從而為系統(tǒng)資源管理提供一個統(tǒng)一的框架。通俗的來說,,cgroups可以限制,、記錄、隔離進(jìn)程組所使用的物理資源(包括:CPU,、memory,、IO等),為容器實(shí)現(xiàn)虛擬化提供了基本保證,,是構(gòu)建Docker等一系列虛擬化管理工具的基石,。 cgroups的作用 資源限制(Resource Limitation):cgroups可以對進(jìn)程組使用的資源總額進(jìn)行限制。如設(shè)定應(yīng)用運(yùn)行時使用內(nèi)存的上限,,一旦超過這個配額就發(fā)出OOM 優(yōu)先級分配(Prioritization):通過分配的CPU時間片數(shù)量及硬盤IO帶寬大小,,實(shí)際上就相當(dāng)于控制了進(jìn)程運(yùn)行的優(yōu)先級。 資源計(jì)量:cgroups可以統(tǒng)計(jì)系統(tǒng)的資源使用量,,如CPU使用時長,、內(nèi)存用量等等,這個功能非常適用于計(jì)費(fèi) 資源控制:cgroups可以對進(jìn)程組執(zhí)行掛起,、恢復(fù)等操作,。
Namespaces命名空間和Control group 控制組帶來的特性文件系統(tǒng)隔離:每個容器都有自己的root文件系統(tǒng) 進(jìn)程隔離:每個容器都運(yùn)行在自己的進(jìn)程環(huán)境中 網(wǎng)絡(luò)隔離:容器間的虛擬網(wǎng)絡(luò)接口和IP地址都是分開的 資源隔離和分組:使用Cgroup將CPU和內(nèi)存之類的資源獨(dú)立分配給每個Docker容器
Docker安裝環(huán)境說明:本地安裝VMware centos7 docker安裝參考: https://docs./install/linux/docker-ce/centos/#install-docker-ce 安裝命令如下:
#yum update
#yum install -y yum-utils device-mapper-persistent-data lvm2
#yum-config-manager --add-repo https://download./linux/centos/docker-ce.repo
#yum-config-manager --enable docker-ce-edge
#yum install docker-ce
#yum list docker-ce --showduplicates | sort -r
#yum install docker-ce-18.04.0.ce
#systemctl start docker
查看docker的日志
#journalctl -u docker.service
關(guān)閉防火墻和網(wǎng)絡(luò)服務(wù)
#systemctl stop firewalld.service #systemctl disable firewalld.service #systemctl stop NetworkManger
Docker基本命Docker run 命令#docker run –help
參數(shù)說明: -a stdin : 指定標(biāo)準(zhǔn)輸入輸出內(nèi)容類型,可選STDIN, STDOUT or STDERR -d:后臺運(yùn)行容器,,并返回容器ID -i:以交互模式運(yùn)行容器,,通常與-t同時使用 -t:為容器重新分配一個偽輸入終端,通常與-i同時使用 --name=”容器名稱”:為容器指定一個名稱 --dns 8.8.8.8:指定容器使用的DNS服務(wù)器,,默認(rèn)和宿主機(jī)一致 --dns-search 域名 :指定容器DNS搜索域名,,默認(rèn)和宿主機(jī)一致 -h “mars”:指定容器的hostname -e username=”ritchie”:設(shè)置環(huán)境變量 --env-file=[]:從指定文件讀入環(huán)境變量 -m:設(shè)置容器使用內(nèi)存最大值
Docker start/stop/restart 命令#docker start [OPTIONS] CONTAINER [CONTAINER…]
Docker kill 命令#docker kill [OPTIONS] CONTAINER [CONTAINER…]
Docker rm 命令docker rm [OPTIONS] CONTAINER [CONTAINER...] OPTIONS說明:
-f :通過SIGKILL信號強(qiáng)制刪除一個運(yùn)行中的容器 -l :移除容器間的網(wǎng)絡(luò)連接,而非容器本身 -v :-v 刪除與容器關(guān)聯(lián)的卷
Docker create 命令docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
Docker cp 命令Usage: docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
Options:
-a, --archive Archive mode (copy all uid/gid information) -L, --follow-link 保持源目標(biāo)中的鏈接
本地鏡像管理docker images :列出本地鏡像,。 docker rmi :刪除本地一個或多少鏡像。 docker tag :標(biāo)記本地鏡像,,將其歸入某一倉庫,。 docker build :使用Dockerfile創(chuàng)建鏡像,。 docker save :將指定鏡像保存成 tar 歸檔文件。 docker import :從歸檔文件中創(chuàng)建鏡像,。 docker info : 顯示 Docker 系統(tǒng)信息,,包括鏡像和容器數(shù)。 docker version :顯示 Docker 版本信息,。
Docker sawrm常用命令動態(tài)增加副本 #docker service scale erp_callcenter_callcentererp_v1=2
|