容器化技術介紹,Docker簡介以及基本操作


1.物理機時代

  • 部署非常慢
  • 成本很高 ,比如啟動一個程序需要依賴JVM
  • 資源浪費
  • 難於擴展與遷移
  • 受制於硬件

2.虛擬機時代   主要解決上面硬件的問題

  • 多部署  彼此獨立彼此隔離
  • 資源池   共享操作系統的資源,CPU 內存 硬盤等 
  • 資源隔離 
  • 很容易擴展
  • VM 需要安裝操作系統  

3.容器化時代  主要解決虛擬機操作系統還要占用資源

為了解決虛擬機中 操作系統

 

 

 

虛擬機是物理資源層面的隔離,容器是App層面的隔離。

容器化是一種標准化的應用打包。就是把所有的數據、應用程序等一起打包給運維,運維就可以直接把包進行還原部署

 

 

 

 作為阿里雲/騰訊雲的容器化應用

是虛擬機+容器化的實現,比如我在阿里雲買Mysql數據庫使用,這個服務器就是一台服務器,根據應用場景的不同,來安裝不同的容器。

 

Docker   標准化的應用

安裝docker ,虛擬機要求 Centos 7 

  • 安裝 yum 工具包
yum install -y yum-utils device-mapper-persistent-data | v2
  • 修改安裝源,因為國內安裝很慢,使用阿里雲安裝源
  •  

     

  • 安裝docker, 后綴是ce 代表社區版本,如果是ee代表企業版本
yum -y install | docker-ce
  • 啟動docker   
service docker start

啟動后查看docker版本號

docker version

 

 

會安裝客戶端上面  和服務端 下面 兩個版本

我們可以嘗試從docker 的中央倉庫中 把hello-world 這個鏡像拉取下來並運行

 

 

 

阿里雲Docker 鏡像加速服務

 

 

Docker 基本概念

Docker 是容器化平台

 

 

 

 Docker Daemon 主要是鏡像的獲取,容器的創建,作為servier 主要提供服務的

Rest Api 層證明 docker 客戶端是基於Http請求的

這種CS 架構下有什么好處呢?

 作為客戶端可以同時管理 上圖右面的三台機器。、

 

容器與鏡像

  • 鏡像: 鏡像是文件,只讀的,提供了運行程序完整的硬件資源,是應用程序的集裝箱。
  • 容器:是鏡像的實例,由Docker負責創建,容器之間彼此隔離

Docker 執行流程

 

 

比如我們想裝Redis,客戶端先執行Pull 命令。 Dockers_Host 中的Docker daemno 會在本地鏡像中尋找是否由redis鏡像,如果沒有,就會從遠程鏡像拉取下來。燃火本地需要執行Docker run 命令 。會根據redis 鏡像 創建一個Redis 的Container 容器。

Docker 常用命令

 

 其中 -f 代表強制執行

 

Docker 宿主機 與容器通信 : 以上創建了一個tomcat 容器后不是直接能夠訪問了,因為外界是不能夠直接訪問里面容器的端口的,必須通過宿主機進行端口的映射才能訪問。

 

 

端口的映射過程

 

 然后輸入  netstat -tulpn 查看端口號的使用情況

 

 可以看到8000端口是監聽狀態,提供服務的程序名是docker proxy

這個程序主要是把8000端口轉發到內部8080端口的一個代理。

 

但上面的程序運行是阻塞狀態,如果想在后台運行需要 加一個  -d tomcat 命令可以后台運行。

 

容器內部結構

以tomcat舉例,其實在容器內部是有一個迷你版的tomcat的

 

 

 

 

Docker 的生命周期

 

 

Dockerfile 主要為了 構建鏡像

 

 

鏡像分層(layer) 概念

  1. 先創建一個臨時容器。就像一個存檔
  2. 再上一個臨時容器生成一個臨時快照。
  3. 好處就是 在上層容器 基礎上繼續做操作,節省資源,加快創建速度

Dockerfile 基礎命令

 

 

 

Dockerfile 執行指令

  • RUN  :在構建鏡像時執行命令
  • ENTRYPOINT: 在容器啟動時執行命令,一定會被運行,而cmd 如果有多個只有最后一個可以運行
  • CMD 也是在容器啟動時執行命令。用於設置默認執行的命令

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM