Docker分享

Echizen_1發表於2019-03-29

什麼是docker?

      基於宿主機,對程式進行封裝隔離,屬於作業系統層面的虛擬化技術。因為隔離的程式獨立與宿主以及其他隔離的程式,稱為容器。

      docker在容器的基礎上,進一步封裝,從檔案系統、網路埠到程式隔離。

為什麼用docker?

  • 相比於普通虛擬機器,啟動速度更快
  • 保證一致的執行環境
  • 持續部署(建立自定義映象,一次性建立配置)
  • 更輕鬆的遷徙(基於宿主機隔離出環境)
  • 易於擴充套件(分層儲存)

Docker安裝

centos 7安裝

yum install docker

systemctl start docker

docker run hello-world(檢驗是否安裝成功)

Docker分享

映象image

      映象相當於Linux的root檔案系統,包括了容器執行時所需的資源。不同於普通iso映象的是,docker的映象是分層儲存的,上一層是下一層的基礎。

命令

拉取映象---docker pull  <域名/ip>:<埠>  <使用者名稱/映象名>:<標籤>

映象列表---docker image ls

刪除映象---docker image rm <映象名/ID/>

自定義映象

      映象的定製其實是定製每一層的檔案、配置。dockerfile是一個文字,其內包含了一條條指令,每一個指令構建一層,指令描述的是該層如何構建。

以下是構建jdk環境的命令

Docker分享

docker build -t <name/tag> .

容器container

      容器即是程式,與宿主機隔離,並且擁有自己的名稱空間、網路配置(必須暴露埠給宿主機)等。容器與映象的關係可以理解為例項與類的關係。每一個容器啟動時,以映象層為基礎,在其上建立一個容器的儲存層。儲存層與容器生命週期一樣,容器銷燬時,儲存層也消失。

命令

建立容器並啟動---docker run --name <重新命名> -d -p <外部埠>:<內部埠> 映象

  • 檢查是否存在指定映象,不存在就從公有倉庫下載
  • 利用映象啟動容器
  • 分配檔案系統,在映象層上建立一個儲存層
  • 從宿主機配置的網橋介面中橋接一個虛擬介面到容器中
  • 從地址池配置一個IP地址給容器
  • 執行使用者指定的應用程式

啟動容器---docker start container

關閉容器---docker stop container

進入容器---docker exec container

容器列表---docker ps (檢視所有容器包括未啟動-a)

 刪除容器---docker container rm <容器名>

 倉庫

docker官方提供映象docker-registry,用於構建私有的倉庫。

docker run -d -p 5000:5000 --restart always --name registry registry複製程式碼

啟動好倉庫容器後,使用tag標記映象,並將映象push到倉庫

docker tag  【imgae】:【tag】【host】:【port】/【repository】:【tag】

docker push 【imgae】:【tag】

上傳私有倉庫後,查詢倉庫中已有映象

curl http://【host】:【port】/v2/catalog

網路管理

  • 容器與宿主機隔離,網路也是相互隔離,容器擁有自己的ip。docker inspect 【container】獲取容器具體資訊
  • 暴露內部埠對映宿主機
  • 每個容器啟動時,預設的IP會有所變化,通常根據宿主機ip加上對映埠來使用


相關文章