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