Doker容器技術

Docker簡介

Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的鏡像中,而後發佈到任何流行的不一樣操做系統(linux、Windows)機器上,也能夠實現虛擬化。容器是徹底使用沙箱機制,相互之間不會有任何接口。
Containers 與 VMs相比
image.pngimage.pnglinux

Docker特色

  • 靈活:即便是最複雜的應用也能夠集裝箱化。
  • 輕量級:容器利用並共享主機內核。
  • 可互換:即時部署更新和升級。
  • 便攜式:在本地構建,部署到雲,並在任何地方運行。
  • 可擴展:增長並自動分發容器副本。
  • 可堆疊:垂直和即時堆疊服務。

Docker主要模塊

Docker主要由三部分組成:鏡像Image、容器Container、倉庫Repository
各個模塊以下:golang

Docker Client

docker client 是docker架構中用戶用來和docker daemon創建通訊的客戶端,用戶使用的可執行文件爲docker,經過docker命令行工具能夠發起衆多管理container的請求。docker

  • docker client能夠經過一下三種方式和docker daemon創建通訊:
tcp://host:port;
unix:path_to_socket;
fd://socketfd。
  • docker client能夠經過設置命令行flag參數的形式設置安全傳輸層協議(TLS)的有關參數,保證傳輸的安全性。
  • docker client發送容器管理請求後,由docker daemon接受並處理請求,當docker client 接收到返回的請求相應並簡單處理後,docker client 一次完整的生命週期就結束了,當須要繼續發送容器管理請求時,用戶必須再次經過docker能夠執行文件建立docker client。
Docker server

docker server在docker架構中時專門服務於docker client的server,該server的功能是:接受並調度分發docker client發送的請求,架構圖以下:
imageapi

  • 在Docker的啓動過程當中,經過包gorilla/mux(golang的類庫解析),建立了一個mux.Router,提供請求的路由功能。在Golang中,gorilla/mux是一個強大的URL路由器以及調度分發器。該mux.Router中添加了衆多的路由項,每個路由項由HTTP請求方法(PUT、POST、GET或DELETE)、URL、Handler三部分組成。
  • 若Docker Client經過HTTP的形式訪問Docker Daemon,建立完mux.Router以後,Docker將Server的監聽地址以及mux.Router做爲參數,建立一個httpSrv=http.Server{},最終執行httpSrv.Serve()爲請求服務。
  • 在Server的服務過程當中,Server在listener上接受Docker Client的訪問請求,並建立一個全新的goroutine來服務該請求。在goroutine中,首先讀取請求內容,而後作解析工做,接着找到相應的路由項,隨後調用相應的Handler來處理該請求,最後Handler處理完請求以後回覆該請求。
  • Docker Server的運行在Docker的啓動過程當中,是靠一個名爲」serveapi」的job的運行來完成的。原則上,Docker Server的運行是衆多job中的一個,可是爲了強調Docker Server的重要性以及爲後續job服務的重要特性,將該」serveapi」的job單獨抽離出來分析,理解爲Docker Server。
Engine
Job
Docker Daemon
Docker Registry
Graph
Driver
libcontainer
Docker container

安裝Docker

最簡單方式,即便用阿里雲一鍵安裝腳本:安全

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl start docker
systemctl enable docker
docker version

Docker中的鏡像管理

搜索鏡像:bash

docker search

獲取鏡像:網絡

docker pull

查看鏡像:架構

docker images

刪除鏡像:curl

docker rmi

Docker中的容器管理

啓動容器:socket

docker run –-name –h hostname

中止容器:

docker stop CONTAINER ID

查看容器:

docker ps

進入容器:

docker exec | docker attach

刪除容器:

docker rm

Docker中對網絡進行訪問

隨機映射:

docker run -P

指定映射:

-p hostPort:containerPort 
-p ip:hostPort:containerPort 
-p ip::containerPort 
-p hostPort:containerPort 
-p hostPort:containerPort
相關文章
相關標籤/搜索