Docker(一):Docker入門教程

      網(wǎng)友投稿 696 2025-04-06

      如今docker的使用已經(jīng)非常普遍,特別在一線互聯(lián)網(wǎng)公司。使用docker技術(shù)可以幫助企業(yè)快速水平擴展服務(wù),從而到達彈性部署業(yè)務(wù)的能力。在云服務(wù)概念興起之后,Docker的使用場景和范圍進一步發(fā)展,如今在微服務(wù)架構(gòu)越來越流行的情況下,微服務(wù)+Docker的完美組合,更加方便微服務(wù)架構(gòu)運維部署落地。


      本文詳細解釋介紹Docker入門相關(guān)內(nèi)容,后期重點關(guān)注Docker在微服務(wù)體系中的使用。在了解Docker之前我們先考慮幾個問題:1、Docker是什么?2、為什么要使用Docker,它有什么優(yōu)勢?帶著這些問題我們來看看下面的內(nèi)容。

      什么是Docker?

      Docker 是世界領(lǐng)先的軟件容器平臺。開發(fā)人員利用 Docker 可以消除協(xié)作編碼時“在我的機器上可正常工作”的問題。運維人員利用 Docker 可以在隔離容器中并行運行和管理應(yīng)用,獲得更好的計算密度。企業(yè)利用 Docker 可以構(gòu)建敏捷的軟件交付管道,以更快的速度、更高的安全性和可靠的信譽為 Linux 和 Windows Server 應(yīng)用發(fā)布新功能。

      Docker 屬于 Linux 容器的一種封裝,提供簡單易用的容器使用接口。它是目前最流行的 Linux 容器解決方案。Docker 將應(yīng)用程序與該程序的依賴,打包在一個文件里面。運行這個文件,就會生成一個虛擬容器。程序在這個虛擬容器里運行,就好像在真實的物理機上運行一樣。有了 Docker,就不用擔心環(huán)境問題。

      總體來說,Docker 的接口相當簡單,用戶可以方便地創(chuàng)建和使用容器,把自己的應(yīng)用放入容器。容器還可以進行版本管理、復(fù)制、分享、修改,就像管理普通的代碼一樣。

      Docker 最初是 dotCloud 公司創(chuàng)始人 Solomon Hykes 在法國期間發(fā)起的一個公司內(nèi)部項目,它是基于 dotCloud 公司多年云服務(wù)技術(shù)的一次革新,并于 2013 年 3 月以 Apache 2.0 授權(quán)協(xié)議開源,主要項目代碼在 GitHub 上進行維護。Docker 項目后來還加入了 Linux 基金會,并成立推動 開放容器聯(lián)盟(OCI)。

      Docker 自開源后受到廣泛的關(guān)注和討論,至今其 GitHub 項目已經(jīng)超過 4 萬 6 千個星標和一萬多個 fork。甚至由于 Docker 項目的火爆,在 2013 年底,dotCloud 公司決定改名為 Docker。Docker 最初是在 Ubuntu 12.04 上開發(fā)實現(xiàn)的;Red Hat 則從 RHEL 6.5 開始對 Docker 進行支持;Google 也在其 PaaS 產(chǎn)品中廣泛應(yīng)用 Docker。

      為什么要使用Docker

      容器除了運行其中應(yīng)用外,基本不消耗額外的系統(tǒng)資源,使得應(yīng)用的性能很高,同時系統(tǒng)的開銷盡量小。傳統(tǒng)虛擬機方式運行 10 個不同的應(yīng)用就要起 10 個虛擬機,而Docker 只需要啟動 10 個隔離的應(yīng)用即可。

      具體說來,Docker 在如下幾個方面具有較大的優(yōu)勢。

      1、更快速的交付和部署

      對開發(fā)和運維(devop)人員來說,最希望的就是一次創(chuàng)建或配置,可以在任意地方正常運行。

      開發(fā)者可以使用一個標準的鏡像來構(gòu)建一套開發(fā)容器,開發(fā)完成之后,運維人員可以直接使用這個容器來部署代碼。 Docker 可以快速創(chuàng)建容器,快速迭代應(yīng)用程序,并讓整個過程全程可見,使團隊中的其他成員更容易理解應(yīng)用程序是如何創(chuàng)建和工作的。 Docker 容器很輕很快!容器的啟動時間是秒級的,大量地節(jié)約開發(fā)、測試、部署的時間。

      2、更高效的虛擬化

      Docker 容器的運行不需要額外的 hypervisor 支持,它是內(nèi)核級的虛擬化,因此可以實現(xiàn)更高的性能和效率。

      3、更輕松的遷移和擴展

      Docker 容器幾乎可以在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、個人電腦、服務(wù)器等。 這種兼容性可以讓用戶把一個應(yīng)用程序從一個平臺直接遷移到另外一個。

      4、更簡單的管理

      使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發(fā)和更新,從而實現(xiàn)自動化并且高效的管理。

      Docker vs VM

      從下圖可以看出,VM是一個運行在宿主機之上的完整的操作系統(tǒng),VM運行自身操作系統(tǒng)會占用較多的CPU、內(nèi)存、硬盤資源。Docker不同于VM,只包含應(yīng)用程序以及依賴庫,基于libcontainer運行在宿主機上,并處于一個隔離的環(huán)境中,這使得Docker更加輕量高效,啟動容器只需幾秒鐘之內(nèi)完成。由于Docker輕量、資源占用少,使得Docker可以輕易的應(yīng)用到構(gòu)建標準化的應(yīng)用中。但Docker目前還不夠完善,比如隔離效果不如VM,共享宿主機操作系統(tǒng)的一些基礎(chǔ)庫等;網(wǎng)絡(luò)配置功能相對簡單,主要以橋接方式為主;查看日志也不夠方便靈活。

      Docker 在容器的基礎(chǔ)上,進行了進一步的封裝,從文件系統(tǒng)、網(wǎng)絡(luò)互聯(lián)到進程隔離等等,極大的簡化了容器的創(chuàng)建和維護。使得 Docker 技術(shù)比虛擬機技術(shù)更為輕便、快捷。

      作為一種新興的虛擬化方式,Docker 跟傳統(tǒng)的虛擬化方式相比具有眾多的優(yōu)勢。Docker 容器的啟動可以在秒級實現(xiàn),這相比傳統(tǒng)的虛擬機方式要快得多;Docker 對系統(tǒng)資源的利用率很高,一臺主機上可以同時運行數(shù)千個 Docker 容器。

      相關(guān)概念

      Docker是CS架構(gòu),主要有兩個概念:

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

      Docker client: Docker 命令行工具,是用戶使用Docker的主要方式,Docker client與Docker daemon通信并將結(jié)果返回給用戶,Docker client也可以通過socket或者RESTful api訪問遠程的Docker daemon

      了解了Docker的組成,再來了解一下Docker的三個主要概念:

      Docker image:鏡像是只讀的,鏡像中包含有需要運行的文件。鏡像用來創(chuàng)建container,一個鏡像可以運行多個container;鏡像可以通過Dockerfile創(chuàng)建,也可以從Docker hub/registry上下載。

      Docker container:容器是Docker的運行組件,啟動一個鏡像就是一個容器,容器是一個隔離環(huán)境,多個容器之間不會相互影響,保證容器中的程序運行在一個相對安全的環(huán)境中。

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

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

      Docker安裝

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

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

      yum?install?docker

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

      service?docker?startchkconfig?docker?on

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

      service?docker?startchkconfig?docker?on

      測試

      docker?version

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

      Hello World

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

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

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

      修改系統(tǒng)中docker對應(yīng)的配置文件即可,如下:

      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 文件在倉庫里面的位置,其中l(wèi)ibrary是 image 文件所在的組,hello-world是 image 文件的名字。

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

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

      現(xiàn)在,運行這個 image 文件。

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

      輸出這段提示以后,hello world就會停止運行,容器自動終止。有些容器不會自動終止,因為提供的是服務(wù),比如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(一):Docker入門教程

      docker?rm?container_name/container_id

      查看當前系統(tǒng)Docker信息

      docker?info

      從Docker hub上下載某個鏡像:

      docker?pull?centos:latestdocker?pull?centos:latest

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

      容器 Docker

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:wps文字怎么在搜索中查不到資料
      下一篇:可否舉例說明你在工作中是如何優(yōu)化前端代碼的?
      相關(guān)文章
      亚洲A丁香五香天堂网| 国产成人精品亚洲| 相泽亚洲一区中文字幕| 在线91精品亚洲网站精品成人| 亚洲欧美日韩中文无线码| 亚洲妇女熟BBW| 亚洲七久久之综合七久久| 亚洲中文字幕无码中文| 亚洲乱码在线观看| 亚洲色大成WWW亚洲女子| 亚洲人av高清无码| 激情婷婷成人亚洲综合| 国产亚洲高清在线精品不卡| 国产午夜亚洲精品不卡电影| 亚洲国产精品专区在线观看| 亚洲人成色7777在线观看不卡 | 亚洲欧洲国产综合| 亚洲成人黄色网址| 亚洲第一成人在线| 亚洲人片在线观看天堂无码| 亚洲精品无码国产片| 欧洲亚洲综合一区二区三区 | yy6080久久亚洲精品| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 久久丫精品国产亚洲av| 亚洲综合色丁香麻豆| 亚洲人成电影青青在线播放| 7777久久亚洲中文字幕| 亚洲区日韩精品中文字幕| 午夜亚洲国产精品福利| 久久精品国产精品亚洲| 日韩va亚洲va欧洲va国产| 亚洲精品视频在线| 亚洲剧情在线观看| 亚洲人成色777777精品| 亚洲国产a级视频| 国产亚洲婷婷香蕉久久精品 | 国产精品亚洲天堂| 狠狠综合久久综合88亚洲| 久久亚洲精品AB无码播放| 亚洲中文字幕在线无码一区二区|