<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是 Docker?Docker與傳統的虛擬機有什么區別?

馬哥Linux運維 ? 來源:未知 ? 作者:李倩 ? 2018-03-16 14:28 ? 次閱讀

Docker 是 Golang 編寫的, 自 2013 年推出以來,受到越來越多的開發者的關注。如果你關注最新的技術發展,那么你一定聽說過 Docker。不管是云服務還是微服務(Microservices),越來越多的廠商都開始基于 Docker 作為基礎設施自動化的工具。那么什么是 Docker?Docker與傳統的虛擬機有什么區別?為何要采用 Docker?如何使用 Docker?

本文,就針對上述提到的問題,來簡單介紹下 Docker。

什么是 Docker

Docker 是開源的應用容器引擎。

Docker 可以讓你將所有應用軟件以及它的以來打包成軟件開發的標準化單元。

Docker 容器將軟件以及它運行安裝所需的一切文件(代碼、運行時、系統工具、系統庫)打包到一起,這就保證了不管是在什么樣的運行環境,總是能以相同的方式運行。就好像 Java 虛擬機一樣,“一次編寫,到處運行(Write once, run anywhere)”,而 Docker 是“一次構建,到處運行(Build once,run anywhere)”。

Docker 是一種“容器即服務”(Docker Containers as a Service ,簡稱 CaaS),使得開發和IT運營團隊可以對于應用的構建、發布、運行更加敏捷和可控。

概括的說: Docker 是為開發人員和系統管理員用于構建、發布、并運行分布式應用程序的開放式平臺。該平臺由 Docker 引擎(一個便攜、輕巧的運行時和打包工具) 和 Docker Hub (一個共享應用程序和自動化工作流的云服務)等組成。Docker 可以使應用程序從組件迅速組裝并消除了開發、質量保證和生產環境之間的摩擦問題。這樣一來,IT部門可以更快地發布,而這些應用程序不管是運行在筆記本電腦、數據中心的虛擬機,還是任何的云,其運行過程和結果都是一致的。

我們再來看下 Docker 的 Logo 。很明顯,這是一只鯨魚,它托著許多集裝箱。我們可以把宿主機可當做這只鯨魚,把相互隔離的容器可看成集裝箱,每個集裝箱中都包含自己的應用程序。這 Logo 簡直的太形象了!

Docker 的優點

輕量級:所有容器在一臺機器上共享同一個操作系統內核,這樣他們立即開始,并更有效地利用內存。Image 是從分層文件系統的構建,這樣他們能夠共享公共文件,使得磁盤使用率和 Image 的下載更加高效。

開放:Docker 容器是基于開發的標準,允許容器運行在主流的 Linux 發布版和 Microsoft 操作系統作為所有的基礎設施。

安全:容器使得應用程序彼此隔離,而基礎架構同時為應用程序提供了額外的保護層。

Docker 與 虛擬機的區別

容器與虛擬機有著類似的資源隔離和分配的優點,但不同的架構方法使容器能夠更加便攜,高效等。

虛擬機的架構

每個虛擬機都包括應用程序、必要的二進制文件和庫以及一個完整的客戶操作系統(Guest OS),盡管它們被分離,它們共享并利用主機的硬件資源,將近需要十幾個 GB 的大小。

容器的架構

容器包括應用程序及其所有的依賴,但與其他容器共享內核。它們以獨立的用戶空間進程形式運行在主機操作系統上。他們也不依賴于任何特定的基礎設施,Docker 容器可以運行在任何計算機上,任何基礎設施和任何云上。

Docker 的容器利用了 LXC,管理利用了 namespaces 來做權限的控制和隔離,cgroups 來進行資源的配置,并且還通過 aufs 來進一步提高文件系統的資源利用率,而這些技術都不是 Docker 獨創。

LXC

LXC 與虛擬機的不同之處在于,它是一個操作系統級別的虛擬化環境,而不是硬件虛擬化環境。他們都做同樣的事情,但 LXC 是操作系統級別的虛擬化環境,虛擬環境有它自己的進程和網絡空間,而不是創建一個完整成熟的虛擬機。因此,一個 LXC 虛擬操作系統具有最小的資源需求,并啟動只需幾秒鐘。

正如你可以在下圖中看到的,左側是 LXC 虛擬的 Ubuntu ,默認安裝使用 11 MB 大小。

Docker 與 Microservices 的關系

Microservices(微服務) 依賴于“基礎設施自動化”,而 Docker 正是“基礎設施自動化”的利器??梢哉f Docker 的火爆,一定程度上也帶動了微服務架構的興起,而微服務的廣泛應用也促進了 Docker 繁榮??梢哉f兩者相輔相成。

有關微服務的介紹,可以移步至《簡述 Microservices(微服務)》。

http://www.importnew.com/24651.html

為什么要用 Docker

開發更加敏捷:Docker 讓開發人員可以自由定義環境,創建和部署的應用程序更快、更容易,IT 運維人員快速應對變化也更加靈活性。

更加可控:Docker 使得開發人員保存從基礎設施到應用的代碼,幫助 IT 運維人管理擁有標準的、安全的、可擴展的操作環境。

高可移植性:Docker 允許自由選擇,可以是從筆記本電腦到一個團隊,從私人基礎設施到公共云提供商。

這樣,你可以專注于開發應用,其他的繁瑣事交給 Docker 去做吧。

如何使用 Docker

這可真是一個大話題,如果完整闡述足夠寫一本書了。好在我們的目的是做入門普及,因此我們就簡單講一下 Docker 的安裝、基本使用和常用命令。

Docker安裝

建議在linux環境下安裝Docker,window環境搭建比較復雜且容易出錯,使用Centos7+yum來安裝Docker環境很方便。

Docker 軟件包已經包括在默認的 CentOS-Extras 軟件源里。因此想要安裝 docker,只需要運行下面的 yum 命令:

yum install docker

安裝完成后,使用下面的命令來啟動 docker 服務,并將其設置為開機啟動:

service docker startchkconfig docker on

LCTT 譯注:此處采用了舊式的 sysv 語法,如采用CentOS 7中支持的新式 systemd 語法,如下:

service docker startchkconfig docker on

測試

docker version

輸入上述命令,返回docker的版本相關信息,證明docker安裝成功。

Hello World

下面,我們通過最簡單的 image 文件"hello world",感受一下 Docker。

因為國內連接 Docker 的官方倉庫很慢,因此我們在日常使用中會使用Docker 中國加速器。通過 Docker 官方鏡像加速,中國區用戶能夠快速訪問最流行的 Docker 鏡像。該鏡像托管于中國大陸,本地用戶現在將會享受到更快的下載速度和更強的穩定性,從而能夠更敏捷地開發和交付 Docker 化應用。

Docker 中國官方鏡像加速可通過registry.docker-cn.com訪問。該鏡像庫只包含流行的公有鏡像,私有鏡像仍需要從美國鏡像庫中拉取。

修改系統中docker對應的配置文件即可,如下:

vi /etc/docker/daemon.json#添加后{ "registry-mirrors": ["https://registry.docker-cn.com"], "live-restore": true}

運行下面的命令,將 image 文件從倉庫抓取到本地。

docker pull library/hello-world

上面代碼中,docker image pull是抓取 image 文件的命令。library/hello-world是 image 文件在倉庫里面的位置,其中library是 image 文件所在的組,hello-world是 image 文件的名字。

抓取成功以后,就可以在本機看到這個 image 文件了。

docker images#顯示結果REPOSITORY TAG IMAGE ID CREATED SIZEdocker.io/hello-world latest f2a91732366c 3 months ago 1.848 kB

現在,運行這個 image 文件。

docker run hello-world#顯示結果Hello from Docker!This message shows that your installation appears to be working correctly....

輸出這段提示以后,hello world就會停止運行,容器自動終止。有些容器不會自動終止,因為提供的是服務,比如Mysql鏡像等。

常用命令

除過以上我們使用的Docker命令外,Docker還有一些其它常用的命令。

拉取docker鏡像

docker pull image_name

查看宿主機上的鏡像,Docker鏡像保存在/var/lib/docker目錄下:

docker images

刪除鏡像

docker rmi docker.io/tomcat:7.0.77-jre7 或者 docker rmi b39c68b7af30

查看當前有哪些容器正在運行

docker ps

查看所有容器

docker ps -a

啟動、停止、重啟容器命令:

docker start container_name/container_iddocker stop container_name/container_iddocker restart container_name/container_id

后臺啟動一個容器后,如果想進入到這個容器,可以使用attach命令:

docker attach container_name/container_id

刪除容器的命令

docker rm container_name/container_id

查看當前系統Docker信息

docker info

從Docker hub上下載某個鏡像:

docker pull centos:latestdocker pull centos:latest

執行docker pull centos會將Centos這個倉庫下面的所有鏡像下載到本地repository。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 虛擬機
    +關注

    關注

    1

    文章

    866

    瀏覽量

    27516
  • Docker
    +關注

    關注

    0

    文章

    441

    瀏覽量

    11655

原文標題:高中生也能讀懂的Docker入門教程

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    理解Docker容器并暢玩docker

    虛擬機怎么玩?python2和python3的兼容和環境問題很容易讓你反復重裝系統。但是Docker完全可以隨時開啟多個廠商的環境供你使用,另外你也可以輕松在容器里安裝和刪除軟件,問題可以隨時刪掉容器
    發表于 11-05 09:54

    怎樣在Docker Swarm上部署Apache Storm

    本文是一篇來源于Baqend Tech博客的客座轉貼,描述了如何在Docker Swarm,而不是在虛擬機上部署和調配Apache Storm集群。這個題目很有意思,Wolfram
    發表于 10-10 14:24 ?0次下載
    怎樣在<b class='flag-5'>Docker</b> Swarm上部署Apache Storm

    Docker監控實戰分析

    的「輕」也只是相對于傳統虛擬機而已。傳統虛擬機Docker 的對比如圖: 從圖中可以看出 Dock
    發表于 10-13 17:05 ?2次下載
    <b class='flag-5'>Docker</b>監控實戰分析

    什么是虛擬化?什么是Docker ?Docker容器與虛擬機區別

    Docker是一個虛擬環境容器,可以將你的可執行文件、配置文件及一切其他你需要的文件一并打包到這個容器中,并發布和應用到任意平臺。比如,你在本地用Python開發了一個網站后臺,開發測試完成后
    發表于 05-03 14:18 ?2.4w次閱讀

    Docker是什么它和虛擬機到底有什么區別

    Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙盒機制,相互之間不會有
    的頭像 發表于 12-29 11:37 ?3714次閱讀

    Docker容器與虛擬機區別

    我曾經將Docker容器視為輕量級,精簡的虛擬機。 進行這種比較是有道理的,因為至少在Docker的最初市場中,總是將其與虛擬機進行比較-例如,"
    的頭像 發表于 05-03 17:17 ?7463次閱讀

    容器、Docker、虛擬機區別

    移植的系統。它不僅簡化了打包應用的流程,也簡化了打包應用的庫和依賴,甚至整個操作系統的文件系統能被打包成一個簡單的可移植的包,這個包可以被用來在任何其他運行Docker的機器上使用。 容器和虛擬機具有相似的資源隔離和分配方式,容器虛擬
    的頭像 發表于 11-05 09:41 ?2734次閱讀

    基于geant4的docker安裝方案

    背景 最近docker學了個基礎,對于各種軟件環境的搭建,已經越發喜歡用docker來分發環境,而不是虛擬機,虛擬機在這方面已經是略微屬于過去式了,畢竟臃腫和效率低??上У氖?,
    的頭像 發表于 06-02 12:51 ?2044次閱讀

    如何在Windows上應用Docker開展動態代碼測試

    隨著軟件項目復雜度的提升和不可控的團隊資源變更,研發組織對DevOps部署的靈活性、可快速遷移和適配CI/CD的迭代提出了更高的要求。傳統虛擬機方案,即模擬出一個完整操作系統,對這類需求顯得
    的頭像 發表于 10-28 11:08 ?1772次閱讀

    win7下使用docker編譯Nodemcu固件

    win10最方便,新版Docker直接使用HyperV虛擬主機。Win7則要使用Docker Toolbox,安裝Virtualbox。安裝Toolbox時,不安裝Git,則運行Docker
    發表于 12-17 17:56 ?10次下載
    win7下使用<b class='flag-5'>docker</b>編譯Nodemcu固件

    docker的4種網絡模式配置

    Docker 使用 Linux 橋接,在宿主機虛擬一個 Docker 容器網橋(docker0),Docker 啟動一個容器時會根據
    的頭像 發表于 10-10 10:37 ?1010次閱讀

    如何區分虛擬機Docker

    首先,大家需要明確一點,Docker容器不是虛擬機。 2014年,當我第一次接觸Docker的時候,我把它比做一種輕量級的虛擬機。這樣做無可厚非,因為
    的頭像 發表于 02-14 11:36 ?852次閱讀
    如何區分<b class='flag-5'>虛擬機</b>與<b class='flag-5'>Docker</b>

    docker部署mysql的壞處

    的問題和挑戰。在這篇文章中,我們將探討 Docker 部署 MySQL 的壞處。 首先,Docker 部署 MySQL 可能會面臨性能問題。盡管 Docker 提供了輕量級的容器化解決方案,但容器化的應用程序在性能方面通常會受到
    的頭像 發表于 11-23 09:29 ?863次閱讀

    Docker虛擬機區別

    Docker虛擬機是兩種不同的虛擬化技術,它們在實現方式、資源消耗、運行性能等方面存在許多差異。本文將會詳細介紹它們的區別。 一、實現方式 1.1
    的頭像 發表于 11-23 09:37 ?3680次閱讀

    docker虛擬機有何區別?

    整個Docker由客戶端、服務端和倉庫構成
    的頭像 發表于 12-06 10:08 ?337次閱讀
    <b class='flag-5'>docker</b>和<b class='flag-5'>虛擬機</b>有何<b class='flag-5'>區別</b>?
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>