一文了解Docker

本文轉自楊奇龍老師的公眾號(yangyidba),他長期關注于數(shù)據(jù)庫技術以及性能優(yōu)化,故障案例分析,數(shù)據(jù)庫運維技術知識分享,個人成長和自我管理等主題

假期把之前買的幾本docker的書籍閱讀一遍,本文是docker的學習筆記,了解docker的核心概念。

一 docker 是什么

Docker是dotCloud公司(后更名為Docker)基于go語言開發(fā)的容器項目,2013年開源。該項目后來加入Linux基金會,遵從了Apache 2.0協(xié)議,項目代碼在GitHub上進行維護。

二 為什么要使用Docker

Docker項目的目標是實現(xiàn)輕量級的操作系統(tǒng)虛擬化解決方案。用戶操作Docker的容器就像操作一個快速輕量級的虛擬機一樣簡單。Docker 提出 構建一次,到處運行

Build once,Run anywhere,Configure once,Run anything

對比虛擬機,Docker具有以下優(yōu)點

快速的部署和交付:開發(fā)者可以使用一個標準的鏡像來構建一套容器,開發(fā)完成之后,運維人員可以直接使用這個容器來部署代碼。解決開發(fā)環(huán)境和生產(chǎn)環(huán)境不一致帶來的一系列問題,讓開發(fā)人員和運維人員可以更加和諧相處。

啟動速度更快:秒級啟動。

更高效的虛擬化:它是內(nèi)核級的虛擬化,因此可以實現(xiàn)更高的性能和效率。

高效的遷移:Docker可以運行在不同的平臺,用戶可以輕松的將一個應用從一個平臺遷移到另一個平臺。PS 大部分都是在Linux環(huán)境下運行,估計很少有人從linux遷移到windows平臺。

節(jié)約成本:Docker容器除了運行其中應用外,基本不消耗額外的系統(tǒng)資源,一臺設備可以運行上千個容器。

三 Docker的核心概念

Docker 是一個C/S架構的程序,Docker客戶端向Docker的服務端(Docker daemon) 發(fā)出請求,服務端處理完請求并返回結果。

image

從上面的架構圖上我們可以了解

Docker daemon: 運行在宿主機上,Docker的守護進程,用戶通過 docker 命令與Docker daemon交互。

Docker client: Docker命令行工具,是用戶管理運維Docker的主要方式,Docker client向Docker daemon發(fā)出請求,Docker daemon將結果返回給用戶,Docker client也可以通過socket或者RESTful api訪問Docker daemon。

image:鏡像本質上是一個文件系統(tǒng)及其參數(shù)配置的組合。Docker 會把應用程序及依賴打包進鏡像里,提供了容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(shù)(如匿名卷、環(huán)境變量、用戶等),通過這個鏡像文件可生成 Docker 容器。一個鏡像可以運行一個或者多個容器,鏡像可以通過Dockerfile創(chuàng)建,也可以從Docker hub/registry上下載。

container:容器是從鏡像創(chuàng)建的應用運行實例,啟動一個鏡像就是一個容器,多個容器之間不會相互影響,保證容器中的程序運行在一個相對安全的環(huán)境中。

registry: 倉庫,共享和管理Docker鏡像的地方,用戶可以上傳或者下載上面的鏡像,官方地址為 https://registry.hub.docker.com/,各個公司也可以搭建私有Docker registry。

鏡像就相當于打包好的代碼,鏡像啟動之后運行在容器中,倉庫就是裝存儲鏡像的地方。

從官方網(wǎng)站上拷貝另一種圖,介紹Docker Engine 緯度的架構。清晰的介紹server/client交互,容器和鏡像、數(shù)據(jù)之間的一些聯(lián)系。

image

四 動手實踐

省略如何在系統(tǒng)上安裝docker,不會的自行谷歌。

我們通過一個案例來在mac 上運行一個redis的容器。因為本地沒有redis鏡像,docker會從官網(wǎng)的倉庫拉取最新的redis鏡像下載到本地。

? ~ docker pull redis

Using  default tag: latest
latest:  Pulling  from library/redis
bc51dd8edc1b:  Pull complete
37d80eb324ee:  Pull complete
392b7748dfaf:  Pull complete
48df82c3534d:  Pull complete
2ec2bb0b4b0e:  Pull complete
1302bce0b2cb:  Pull complete
Digest: sha256:7b84b346c01e5a8d204a5bb30d4521bcc3a8535bbf90c660b8595fad248eae82
Status:  Downloaded newer image for redis:latest

查看鏡像

? ~ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
redis               latest 44d36d2c2374  13 days ago 98.2 MB

基于下載的 redis 鏡像啟動一個名稱為 myredis的容器實例。其中 -d 表示以后臺方式啟動, -p 端口映射 host_port:docker_port, 訪問本機6379端口的請求可以發(fā)送到docker實例中的端口6379 。

?  ~ docker run --name  myredis -d -p 6379:6379 redis
85ab24b0be6894401039e51919eed653ecdd2d066cdaef1983b9660b79a09e7a
?  ~ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
85ab24b0be68 redis "docker-entrypoint..."  18 hours ago Up  7 seconds 0.0.0.0:6379->6379/tcp   myredis

通過交互命令行進入docker中,訪問redis實例。

image
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 1. 摘要 本文是輝哥Docker入門的一些摘要和資源分享,涉及DOCKER入門,框架原理,鏡像制作和資源列表等內(nèi)...
    筆名輝哥閱讀 4,722評論 0 74
  • 一、Docker 簡介 Docker 兩個主要部件:Docker: 開源的容器虛擬化平臺Docker Hub: 用...
    R_X閱讀 4,524評論 0 27
  • 特別說明: 本人平時混跡于 B 站,不咋回復這里的評論,有問題可以到 B 站視頻評論區(qū)留言找我視頻地址: http...
    擼帝閱讀 1,012評論 1 3
  • 1.Docker簡介 1.1 什么是虛擬化 在計算機中,虛擬化(英語:Virtualization)是一種資源管理...
    EdwinGates閱讀 1,927評論 0 0
  • 在一階進入6.0踐行時,我特意做了斷舍離,理由是我必須專心致志地走三階的踐行90天。這是踐行易效能兩年以來最認真投...
    turnningF閱讀 1,137評論 0 10

友情鏈接更多精彩內(nèi)容