docker入門介紹總結

參考文章1111

阮一峯教程docker

參考222

Windows下通過DockerToolbox安裝Docker

docker hub官網

什麼是Docker

Docker是一個容器化平臺,它以容器的形式將您的應用程序及其所有依賴項打包在一起,以確保您的應用程序在任何環境中無縫運行。

CI(持續集成)服務器的功能

CI服務器功能是不斷地集成所有正在進行的更改並由不同的開發人員提交到存儲庫,並檢查編譯錯誤。它需要每天多次構建代碼,最好是在每次提交之後,以便它可以檢測在問題發生時是哪個提交Bug了。

爲什麼使用Docker

Docker 的主要用途,目前有三大類。

(1)提供一次性的環境。比如,本地測試他人的軟件、持續集成的時候提供單元測試和構建的環境。
(2)提供彈性的雲服務。因爲 Docker 容器可以隨開隨關,很適合動態擴容和縮容。
(3)組建微服務架構。通過多個容器,一臺機器可以跑多個服務,因此在本機就可以模擬出微服務架構。

傳統的虛擬機是先虛擬硬件資源,然後在虛擬的硬件資源之上運行操作系統。
而 Docker 容器作爲一個進程,直接運行於宿主主機內核,因此 Docker 更加快捷

優勢:

節省資源開銷。
更快的啓動時間(通常可以在1秒內啓動)。
便於部署及遷移(鏡像包含了應用和相關依賴,可以運行在任何配置了 Docker 的主機上)。
分層存儲,提高存儲效率。

Docker幾個重要概念

  1. 鏡像(Image):
    Docker 鏡像(Image),就相當於是一個 root 文件系統。比如官方鏡像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系統的 root 文件系統。

Docker鏡像是Docker容器的源代碼,Docker鏡像用於創建容器。使用build命令創建鏡像
Docker鏡像用於創建容器。使用build命令創建鏡像,並且在使用run啓動時它們將生成容器。
鏡像存儲在Docker註冊表中,registry.hub.docker.com

  1. 容器(Container):
    鏡像(Image)和容器(Container)的關係,就像是面向對象程序設計中的類和實例一樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器可以被創建、啓動、停止、刪除、暫停等。

Docker容器包括應用程序及其所有依賴項,作爲操作系統的獨立進程運行。

  • Docker容器可以有四種狀態:運行、已暫停、重新啓動、已退出
  1. 倉庫(Repository):
    倉庫可看着一個代碼控制中心,用來保存鏡像。
    Docker 倉庫是一個集中存儲和分發鏡像的服務,你可以建立自己的私有倉庫,也可以使用共有倉庫,比如 Docker Store。

容器內部機制-- Docker的工作原理

Docker的工作原理:
每個容器都在自己的命名空間中運行,但使用與所有其他容器完全相同的內核。
發生隔離是因爲內核知道分配給進程的命名空間,
並且在API調用期間確保進程只能訪問其自己的命名空間中的資源。

Docker使用流程和工作流程

  • Docker使用流程
    1)創建Dockerfile後,您可以構建它以創建容器的鏡像
    2)推送或拉取鏡像

  • Docker工作流程

從Dockerfile開始。Dockerfile是鏡像的源代碼。
創建Dockerfile後,構建它以創建容器的鏡像。鏡像只是“源代碼”的“編譯版本”,即Dockerfile。
獲得容器的鏡像後,應使用註冊表重新分發容器。註冊表就像一個git存儲庫 - 你可以推送和拉取鏡像。
接下來,使用該鏡像來運行容器。在許多方面,正在運行的容器與虛擬機(但沒有虛擬機管理程序)非常相似。

+--------+ docker build +-------+ docker run -dt +-------+ docker exec -it +------+
| Dockerfile | ---------> | Image | ---------> | Container | ----------> | Bash |

Dockerfile 文件​​​​​​​

FROM:指定基礎鏡像
LABEL:功能是爲鏡像指定標籤
RUN:運行指定的命令
CMD:容器啓動時要運行的命令

比如

FROM node:8.4
COPY . /app
WORKDIR /app
RUN npm install --registry=https://registry.npm.taobao.org
EXPOSE 3000
CMD node demos/01.js

解析:

FROM node:8.4:	該 image 文件繼承官方的 node image,
				冒號表示標籤,這裏標籤是8.4,即8.4版本的 node。

COPY . /app:	將當前目錄下的所有文件(除了.dockerignore排除的路徑),
					都拷貝進入 image 文件的/app目錄。

WORKDIR /app:		指定接下來的工作路徑爲/app。

RUN npm install:	在/app目錄下,運行npm install命令安裝依賴。
					注意,安裝後所有的依賴,都將打包進入 image 文件。

EXPOSE 3000:	將容器 3000 端口暴露出來, 允許外部連接這個端口。

CMD node demos/01.js    容器啓動後自動執行node demos/01.js

RUN命令與CMD命令的區別在哪裏?

RUN命令在 image 文件的構建階段執行,執行結果都會打包進入 image 文件;
CMD命令則是在容器啓動後執行。
另外,一個 Dockerfile 可以包含多個RUN命令,但是隻能有一個CMD命令。
定了CMD命令以後,docker container run命令就不能附加命令了

docker常用命令

docker pull    拉取或者更新指定鏡像
docker push     將鏡像推送至遠程倉庫
docker rm    刪除容器
docker rmi    刪除鏡像
docker images    列出所有鏡像

docker image build -t koa-demo:0.0.1 .     創建 image 文件,  當前路徑--一個點

docker container run     從 image 文件生成容器。

docker ps    列出所有容器

docker container kill       終止容器運行。向容器裏面的主進程發出 SIGKILL 信號

docker container stop      終止容器運行,相當於向容器裏面的主進程發出 SIGTERM 信號,
							然後過一段時間再發出 SIGKILL 信號。
							
docker container run   新建容器,每運行一次,就會新建一個容器。
					同樣的命令運行兩次,就會生成兩個一模一樣的容器文件。

docker container start [containerID]   啓動已經生成、已經停止運行的容器文件

Docker Compose

一個應用系統不僅僅只包含一個服務,每個服務一般也有多個容器實例。這種情況下如果每個容器都要手動啓停,那麼效率之低、維護量之大可想而知。

Docker Compose是Docker官方編排(Orchestration)項目之一,負責快速的部署分佈式應用

使用Docker Compose可以輕鬆、高效的管理容器,它是一個用戶定義和運行多個容器的Docker應用程序。
在Docker Compose中你可以使用YAML文件來配置你的應用服務,
然後只需要一個簡單的命令,就可以創建並啓動你配置的所有服務。

github地址:https://github.com/docker/compose

參考3333

服務(service):一個應用的容器,實際上可以包括若干運行相同鏡像的容器實例。
項目(project):由一組關聯的應用容器組成的一個完成業務單元,在docker-compose.yml中定義。

監控生產中的Docker

Docker提供docker stats和docker events等工具來監控生產中的Docker。
用這些命令獲取重要統計數據的報告。

  • Docker stats:
    當我們使用容器ID調用docker stats時,我們獲得容器的CPU,內存使用情況等。它類似於Linux中的top命令。

  • Docker events:用於查看Docker守護程序中正在進行的任務。

一些常見的Docker事件是:attach,commit,die,detach,rename,destroy等。
我們還可以使用各種選項來限制或過濾我們感興趣的事件。

虛擬化

虛擬化允許您在同一硬件上運行兩個完全不同的操作系統。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章