這篇文章的知識點(diǎn)包括:Docker的簡介、Docker的作用和原理、Docker的安裝配置以及Docker的使用,閱讀完整文相信大家對Docker有了一定的認(rèn)識。

Docker是基于Go語言實(shí)現(xiàn)的開源容器項(xiàng)目,誕生于2013年年初,由dotCloud公司發(fā)起,此公司后改名為Docker Inc.Docker項(xiàng)目已加入Linux基金會,并遵循Apache2.0協(xié)議,代碼托管在Github:Docker源碼地址
各大操作系統(tǒng)現(xiàn)都支持Docker,并且最新的Linux發(fā)行版RedHat、CentOS、Ubuntu中均已默認(rèn)帶有Docker軟件包.
Docker的構(gòu)想是要實(shí)現(xiàn)“Build,Ship and Run Any App, Anywhere”,即通過對應(yīng)用的封 裝( Packaging)、分發(fā)( Distribution)、部署( Deployment)、運(yùn)行( Runtime)生命周期進(jìn)行管 理,達(dá)到應(yīng)用組件級別的“ 一次封裝 ,到處運(yùn)行” 。 這里的應(yīng)用組件, 既可以 是一個(gè) Web 應(yīng) 用、一個(gè)編譯環(huán)境,也可以是一套數(shù)據(jù)庫平臺服務(wù),甚至是一個(gè)操作系統(tǒng)或集群。
基于 Linux 平 臺上的多項(xiàng)開源技術(shù), Docker 提供了高效、敏捷和輕量級的容器方案,并 支持部署到本地環(huán)境和多種主流云平臺 。 可以說 , Docker首次為應(yīng)用 的開發(fā) 、運(yùn)行和部署提 供了“一站式”的實(shí)用解決方案。
早期Docker代碼實(shí)現(xiàn)是基于LXC(Linux Containers,即Linux容器),自0.9版本開始,Docker開發(fā)了libcontainer項(xiàng)目作為更廣泛的容器驅(qū)動實(shí)現(xiàn).
簡單地講,讀者可以將 Docker 容器理解為一種輕量級的沙盒( sandbox)。 每個(gè)容器內(nèi) 運(yùn)行著一個(gè)應(yīng)用,不同的容器相互隔離,容器之間也可以通過網(wǎng)絡(luò)互相通信。 容器的創(chuàng)建和 停止十分快速,幾乎跟創(chuàng)建和終止原生應(yīng)用 -致;另外,容器自身對系統(tǒng)資源的額外需求也十分有限,遠(yuǎn)遠(yuǎn)低于傳統(tǒng)虛擬機(jī) 。 很多時(shí)候,甚至直接把容器當(dāng)作應(yīng)用本身也沒有任何問題。

Docker 運(yùn)行基本命令和模式:
Docker Engine:
Docker architecture:
虛擬化 (virtualization)技術(shù)是一個(gè)通用的概念,在不同領(lǐng)域有不同的理解。 在計(jì)算領(lǐng) 域,一般指的是計(jì)算虛擬化 (computingvirtualization),或通常說的服務(wù)器虛擬化。 維基百科 上的定義如下:
“在計(jì) 算機(jī)技 術(shù)中,虛擬化 是 一種資 源管理技術(shù),是將 計(jì) 算機(jī) 的各種實(shí) 體資 源,如服務(wù)器 、 網(wǎng)絡(luò)、 內(nèi)存及存儲等,予以抽 象、轉(zhuǎn)換后呈現(xiàn)出來,打破實(shí)體 結(jié) 構(gòu)間的不可切割的障礙,使用戶可以用比原本的紐態(tài)更好的方式來應(yīng)用這些資源 。”
可見,虛擬化的核心是對資源的抽象,目標(biāo)往往是為了在同一個(gè)主機(jī)上同時(shí)運(yùn)行多個(gè)系
統(tǒng)或應(yīng)用,從而提高系統(tǒng)資源的利用率,并且?guī)斫档统杀尽⒎奖愎芾砗腿蒎e(cuò)容災(zāi)等好處 。
Docker 和常見的虛擬機(jī)方式的不同之處:
用戶可以訪問 Docker 官網(wǎng)的 Get Docker Docker 官網(wǎng)頁面,查看獲取 Docker 的方式,以及 Docker 支持的平臺類型目前 Docker 支持 Docker 引 擎、 Docker Hub、 Docker Cloud 等多種服務(wù) 。
Linux安裝
$sudo apt-get update
$sudo apt-get install docker-ce docker-ce-cli containerd.ioMac安裝
$brew cask install docker或者:
手動下載安裝 :Docker Mac傳送門
運(yùn)行:
安裝完成后啟動Docker服務(wù),然后嘗試運(yùn)行如下命名:
$docker run -d -p 80:80 --name webserver_test nginx
# 然后在瀏覽器訪問:http://127.0.0.1 看看效果,一個(gè)nginx服務(wù)器已經(jīng)搭建完成了,是不是很香鏡像是Docker三大核心概念中最重要的,是創(chuàng)建 Docker容器的基礎(chǔ)。本質(zhì)上是一個(gè)文件,通過版本管理和增量的文件系統(tǒng), Docker 提供了一套十分簡單的機(jī)制來創(chuàng)建和更新現(xiàn)有的鏡像,用戶甚至可以從網(wǎng)上下載一個(gè)已經(jīng)做好的應(yīng)用鏡像,并直接使用.
Docker 運(yùn)行容器前需要本地存在對應(yīng)的鏡像, 如果鏡像不存在, Docker 會嘗試先從默 認(rèn)鏡像倉庫下載(默認(rèn)使用 Docker Hub 公共注冊服務(wù)器中的倉庫), 用戶也可以通過配置, 使用自定義的鏡像倉庫。
$docker pull NAME [:TAG]
$docker pull ubuntu:18.04
命令相當(dāng)于
docker pull registry.hub.docker.com/ubuntu:18.04
如果從非官方的倉庫下載,則需要在倉庫名稱前指定完整的倉庫地址
NAME:鏡像倉庫名稱
TAG:鏡像標(biāo)簽,如果不指定默認(rèn)為latest,即會下載倉庫中最新版本的鏡像注意:
一般來說,鏡像的latest 標(biāo)簽意味著該鏡像的內(nèi)容會跟蹤最新版本的變更而變化,內(nèi)容是不穩(wěn)定的。因此,從穩(wěn)定性上考慮,不要在生產(chǎn)環(huán)境中忽略鏡像的標(biāo)簽信息或使 用默認(rèn)的latest 標(biāo)記的鏡像。
$docker images
或者
$docker image ls
# 參數(shù)
> --digests=true|false: 列出鏡像的數(shù)字摘要值,默認(rèn)為否;
> -f, --filter=[] : 過濾列出的鏡像, 如dangling=true 只顯示沒有被使用的
鏡像;也可指定帶有特定標(biāo)注的鏡像等;
> --format="TEMPLATE" : 控制輸出格式,如: .ID代表ID信息,.Repository
代表倉庫信息等;
> -q, --quiet=true|false: 僅輸出ID信息, 默認(rèn)為否
更多子命令選項(xiàng)還可以通過man docker-images來查看顯示如圖:

為了方便在后續(xù)工作中使用特定鏡像,還可以使用docker tag命令來為本地鏡像任 意添加新的標(biāo)簽。 例如,添加一個(gè)新的myubuntu: latest鏡像標(biāo)簽:
$docker tag ubuntu:latest myubuntu:latest使用 docker inspect 命令可以獲取該鏡像的詳細(xì)信息,包括制作者、適應(yīng)架構(gòu)、各層的數(shù)字摘要等:
$docker inspect ubuntu:18.04
# 上面代碼返回的是一個(gè)JSON格式的消息,如果我們只要其中一項(xiàng)內(nèi)容時(shí),可以使用 -f 來指定,例如,獲取鏡像的ContainerConfig:
$docker inspect -f {{".ContainerConfig"}} ubuntu:18.04history命令查看鏡像歷史history子命令,該命令將列出各層的創(chuàng)建信息。
$ docker search nginx
參數(shù):
-f, --filter filter: 過濾輸出內(nèi)容
--format string: 格式化輸出內(nèi)容
--limit int: 顯示個(gè)數(shù),默認(rèn)25
--no-trunc: 不截?cái)噍敵鼋Y(jié)果
$ docker search --filter=is-official=true nginx使用 docker rmi 或 docker image rm 命令可以刪除鏡像, 命令格式為 docker<br/>rmi IMAGE [IMAGE ... ], 其中 IMAGE 可以為標(biāo)簽或 ID。
$docker rmi myubuntu:latest
參數(shù):
-f, -force: 強(qiáng)制刪除鏡像, 即使有容器依賴它;
-no-prune: 不要清理未帶標(biāo)簽的父鏡像。
注意:
當(dāng)同 一 個(gè)鏡像擁有多個(gè)標(biāo)簽的時(shí)候,docker rmi 命令只是刪除了該鏡像多個(gè)標(biāo)簽中的指定 標(biāo)簽而巳, 并不影響鏡像文件
# 刪除所有鏡像
$docker rmi $(docker ps -a) # 慎用啊!!!!使用Docker一段時(shí)間后, 系統(tǒng)中可能會遺留一些臨時(shí)的鏡像文件, 以及一些沒有被使 用的鏡像, 可以通過docker image prune命令來進(jìn)行清理。
創(chuàng)建鏡像的方法主要有三種:
Dockerfile是一個(gè)文本格式的配置文件,用戶可以使用Dockerfile來快速創(chuàng)建自定義的鏡像。由一行行命令語句組成,并且支持以#開頭的注釋行。一般而言,Dockerfile主體內(nèi)容分為四部分:
看完上述內(nèi)容,你們對Docker容器有進(jìn)一步的了解嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
新聞標(biāo)題:Docker容器基礎(chǔ)知識-創(chuàng)新互聯(lián)
URL地址:http://chinadenli.net/article4/hhiie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站設(shè)計(jì)、用戶體驗(yàn)、動態(tài)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容