一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Docker 的現(xiàn)狀與未來

 愛學(xué)習(xí)_守之 2015-02-04

Docker - 迄今為止發(fā)生的那些事情

Docker 是一個(gè)專為 Linux 容器而設(shè)計(jì)的工具集,用于‘構(gòu)建、交付和運(yùn)行’分布式應(yīng)用。它最初是 DotCloud 的一個(gè)開源項(xiàng)目,于2013年3月發(fā)布。這個(gè)項(xiàng)目越來越受歡迎,以至于 DotCloud 公司都更名為 Docker 公司(并最終出售了原有的 PaaS 業(yè)務(wù))。Docker 1.0是在2014年6月發(fā)布的,而且延續(xù)了之前每月更新一個(gè)版本的傳統(tǒng)。

Docker 1.0版本的發(fā)布標(biāo)志著 Docker 公司認(rèn)為該平臺(tái)已經(jīng)充分成熟,足以用于生產(chǎn)環(huán)境中(由該公司與合作伙伴提供付費(fèi)支持選擇)。每個(gè)月發(fā)布的更新表明該項(xiàng)目正在迅速發(fā)展,比如增添一些新特性、解決一些他們發(fā)現(xiàn)的問題。該項(xiàng)目已經(jīng)成功地分離了‘運(yùn)行’和‘交付’兩件事,所以來自任何版本的 Docker 鏡像源都可以與其它版本共同使用(具備向前和向后兼容的特性),這為 Docker 應(yīng)對(duì)快速變化提供了穩(wěn)定的保障。

Docker 之所以能夠成為最受歡迎的開源項(xiàng)目之一可能會(huì)被很多人看做是炒作,但是也是由其堅(jiān)實(shí)的基礎(chǔ)所決定的。Docker 的影響力已經(jīng)得到整個(gè)行業(yè)許多大企業(yè)的支持,包括亞馬遜, Canonical 公司, CenturyLink, 谷歌, IBM, 微軟, New Relic, Pivotal, 紅帽和 VMware。這使得只要有 Linux 的地方,Docker 就可以無處不在。除了這些鼎鼎有名的大公司以外,許多初創(chuàng)公司也在圍繞著 Docker 發(fā)展,或者改變他們的發(fā)展方向來與 Docker 更好地結(jié)合起來。這些合作伙伴們(無論大或?。┒紝椭苿?dòng) Docker 核心項(xiàng)目及其周邊生態(tài)環(huán)境的快速發(fā)展。

Docker 技術(shù)簡(jiǎn)要綜述

Docker 利用 Linux 的一些內(nèi)核機(jī)制例如 cGroups、命名空間和 SElinux 來實(shí)現(xiàn)容器之間的隔離。起初 Docker 只是 LXC 容器管理器子系統(tǒng)的前端,但是在 0.9 版本中引入了 libcontainer,這是一個(gè)原生的 go 語言庫(kù),提供了用戶空間和內(nèi)核之間的接口。

容器是基于 AUFS 這樣的聯(lián)合文件系統(tǒng)的,它允許跨多個(gè)容器共享組件,如操作系統(tǒng)鏡像和已安裝的相關(guān)庫(kù)。這種文件系統(tǒng)的分層方法也被 Dockerfile 的 DevOps 工具所利用,這些工具能夠緩存成功完成的操作。這就省下了安裝操作系統(tǒng)和相關(guān)應(yīng)用程序依賴包的時(shí)間,極大地加速測(cè)試周期。另外,在容器之間的共享庫(kù)也能夠減少內(nèi)存的占用。

一個(gè)容器是從一個(gè)鏡像開始運(yùn)行的,它可以來自本地創(chuàng)建,本地緩存,或者從一個(gè)注冊(cè)庫(kù)(registry)下載。Docker 公司運(yùn)營(yíng)的 Docker Hub 公有注冊(cè)庫(kù),為各種操作系統(tǒng)、中間件和數(shù)據(jù)庫(kù)提供了官方倉(cāng)庫(kù)存儲(chǔ)。各個(gè)組織和個(gè)人都可以在 docker Hub 上發(fā)布的鏡像的公有庫(kù),也可以注冊(cè)成私有倉(cāng)庫(kù)。由于上傳的鏡像可以包含幾乎任何內(nèi)容,所以 Docker 提供了一種自動(dòng)構(gòu)建工具(以往稱為“可信構(gòu)建”),鏡像可以從一種稱之為 Dockerfile 的鏡像內(nèi)容清單構(gòu)建而成。

容器 vs. 虛擬機(jī)

容器會(huì)比虛擬機(jī)更高效,因?yàn)樗鼈兡軌蚍窒硪粋€(gè)內(nèi)核和分享應(yīng)用程序庫(kù)。相比虛擬機(jī)系統(tǒng),這也將使得 Docker 使用的內(nèi)存更小,即便虛擬機(jī)利用了內(nèi)存超量使用的技術(shù)。部署容器時(shí)共享底層的鏡像層也可以減少存儲(chǔ)占用。IBM 的 Boden Russel 已經(jīng)做了一些基準(zhǔn)測(cè)試來說明兩者之間的不同。

相比虛擬機(jī)系統(tǒng),容器具有較低系統(tǒng)開銷的優(yōu)勢(shì),所以在容器中,應(yīng)用程序的運(yùn)行效率將會(huì)等效于在同樣的應(yīng)用程序在虛擬機(jī)中運(yùn)行,甚至效果更佳。IBM 的一個(gè)研究團(tuán)隊(duì)已經(jīng)發(fā)表了一本名為[虛擬機(jī)與 Linux 容器的性能比較]的文章11。

容器只是在隔離特性上要比虛擬機(jī)遜色。虛擬機(jī)可以利用如 Intel 的 VT-d 和 VT-x 技術(shù)的 ring-1 硬件隔離技術(shù)。這種隔離可以防止虛擬機(jī)突破和彼此交互。而容器至今還沒有任何形式的硬件隔離,這使它容易受到攻擊。一個(gè)稱為 Shocker 的概念攻擊驗(yàn)證表明,在 Docker 1.0 之前的版本是存在這種脆弱性的。盡管 Docker 1.0 修復(fù)了許多由 Shocker 漏洞帶來的較為嚴(yán)重的問題,Docker 的 CTO Solomon Hykes 仍然,“當(dāng)我們可以放心宣稱 Docker 的開箱即用是安全的,即便是不可信的 uid0 程序(超級(jí)用戶權(quán)限程序),我們將會(huì)很明確地告訴大家。”Hykes 的聲明承認(rèn),其漏洞及相關(guān)的風(fēng)險(xiǎn)依舊存在,所以在容器成為受信任的工具之前將有更多的工作要做。

對(duì)于許多用戶案例而言,在容器和虛擬機(jī)之間二者選擇其一是種錯(cuò)誤的二分法。Docker 同樣可以在虛擬機(jī)中工作的很好,這讓它可以用在現(xiàn)有的虛擬基礎(chǔ)措施、私有云或者公有云中。同樣也可以在容器里跑虛擬機(jī),這也類似于谷歌在其云平臺(tái)的使用方式。像 IaaS 服務(wù)這樣普遍可用的基礎(chǔ)設(shè)施,能夠即時(shí)提供所需的虛擬機(jī),可以預(yù)期容器與虛擬機(jī)一起使用的情景將會(huì)在數(shù)年后出現(xiàn)。容器管理和虛擬機(jī)技術(shù)也有可能被集成到一起提供一個(gè)兩全其美的方案;這樣,一個(gè)硬件信任錨微虛擬化所支撐的 libcontainer 容器,可與前端 Docker 工具鏈和生態(tài)系統(tǒng)整合,而使用提供更好隔離性的不同后端。微虛擬化(例如 Bromium 的 vSentry 和 VMware 的 Project Fargo)已經(jīng)用于在桌面環(huán)境中以提供基于硬件的應(yīng)用程序隔離,所以類似的方法也可以用于 libcontainer,作為 Linux內(nèi)核中的容器機(jī)制的替代技術(shù)。

‘容器化’ 的應(yīng)用程序

幾乎所有 Linux 應(yīng)用程序都可以在 Docker 容器中運(yùn)行,并沒有編程語言或框架的限制。唯一的實(shí)際限制是以操作系統(tǒng)的角度來允許容器做什么。即使如此,也可以在特權(quán)模式下運(yùn)行容器,從而大大減少了限制(與之對(duì)應(yīng)的是容器中的應(yīng)用程序的風(fēng)險(xiǎn)增加,可能導(dǎo)致?lián)p壞主機(jī)操作系統(tǒng))。

容器都是從鏡像開始運(yùn)行的,而鏡像也可以從運(yùn)行中的容器獲取。本質(zhì)上說,有兩種方法可以將應(yīng)用程序放到容器中,分別是手動(dòng)構(gòu)建和 Dockerfile。

手動(dòng)構(gòu)建

手動(dòng)構(gòu)建從啟動(dòng)一個(gè)基礎(chǔ)的操作系統(tǒng)鏡像開始,然后在交互式終端中用你所選的 Linux 提供的包管理器安裝應(yīng)用程序及其依賴項(xiàng)。Zef Hemel 在‘使用 Linux 容器來支持便攜式應(yīng)用程序部署’的文章中講述了他部署的過程。一旦應(yīng)用程序被安裝之后,容器就可以被推送至注冊(cè)庫(kù)(例如Docker Hub)或者導(dǎo)出為一個(gè)tar文件。

Dockerfile

Dockerfile 是一個(gè)用于構(gòu)建 Docker 容器的腳本化系統(tǒng)。每一個(gè) Dockerfile 定義了開始的基礎(chǔ)鏡像,以及一系列在容器中運(yùn)行的命令或者一些被添加到容器中的文件。Dockerfile 也可以指定對(duì)外的端口和當(dāng)前工作目錄,以及容器啟動(dòng)時(shí)默認(rèn)執(zhí)行的命令。用 Dockerfile 構(gòu)建的容器可以像手工構(gòu)建的鏡像一樣推送或?qū)С?。Dockerfile 也可以用于 Docker Hub 的自動(dòng)構(gòu)建系統(tǒng),即在 Docker 公司的控制下從頭構(gòu)建,并且該鏡像的源代碼是任何需要使用它的人可見的。

單進(jìn)程?

無論鏡像是手動(dòng)構(gòu)建還是通過 Dockerfile 構(gòu)建,有一個(gè)要考慮的關(guān)鍵因素是當(dāng)容器啟動(dòng)時(shí)僅啟動(dòng)一個(gè)進(jìn)程。對(duì)于一個(gè)單一用途的容器,例如運(yùn)行一個(gè)應(yīng)用服務(wù)器,運(yùn)行一個(gè)單一的進(jìn)程不是一個(gè)問題(有些關(guān)于容器應(yīng)該只有一個(gè)單獨(dú)的進(jìn)程的爭(zhēng)議)。對(duì)于一些容器需要啟動(dòng)多個(gè)進(jìn)程的情況,必須先啟動(dòng) supervisor 進(jìn)程,才能生成其它內(nèi)部所需的進(jìn)程。由于容器內(nèi)沒有初始化系統(tǒng),所以任何依賴于 systemd、upstart 或類似初始化系統(tǒng)的東西不修改是無法工作的。

容器和微服務(wù)

全面介紹使用微服務(wù)結(jié)構(gòu)體系的原理和好處已經(jīng)超出了這篇文章的范疇(在 InfoQ eMag: Microservices 有全面闡述)。然而容器是綁定和部署微服務(wù)實(shí)例的捷徑。

大規(guī)模微服務(wù)部署的多數(shù)案例都是部署在虛擬機(jī)上,容器只是用于較小規(guī)模的部署上。容器具有共享操作系統(tǒng)和公用庫(kù)的的內(nèi)存和硬盤存儲(chǔ)的能力,這也意味著它可以非常有效的并行部署多個(gè)版本的服務(wù)。

連接容器

一些小的應(yīng)用程序適合放在單獨(dú)的容器中,但在許多案例中應(yīng)用程序需要分布在多個(gè)容器中。Docker 的成功包括催生了一連串新的應(yīng)用程序組合工具、編制工具及平臺(tái)作為服務(wù)(PaaS)的實(shí)現(xiàn)。在這些努力的背后,是希望簡(jiǎn)化從一組相互連接的容器來創(chuàng)建應(yīng)用的過程。很多工具也在擴(kuò)展、容錯(cuò)、性能管理以及對(duì)已部署資產(chǎn)進(jìn)行版本控制方面提供了幫助。

連通性

Docker 的網(wǎng)絡(luò)功能是相當(dāng)原始的。在同一主機(jī),容器內(nèi)的服務(wù)可以互相訪問,而且 Docker 也可以通過端口映射到主機(jī)操作系統(tǒng),使服務(wù)可以通過網(wǎng)絡(luò)訪問。官方支持的提供連接能力的庫(kù)叫做 libchan,這是一個(gè)提供給 Go 語言的網(wǎng)絡(luò)服務(wù)庫(kù),類似于channels。在 libchan 找到進(jìn)入應(yīng)用的方法之前,第三方應(yīng)用仍然有很大空間可提供配套的網(wǎng)絡(luò)服務(wù)。例如,Flocker 已經(jīng)采取了基于代理的方法使服務(wù)實(shí)現(xiàn)跨主機(jī)(以及底層存儲(chǔ))的移植。

合成

Docker 本身擁有把容器連接在一起的機(jī)制,與元數(shù)據(jù)相關(guān)的依賴項(xiàng)可以被傳遞到相依賴的容器中,并用于環(huán)境變量和主機(jī)入口。如 Figgeard 這樣的應(yīng)用合成工具可以在單一文件中展示出這種依賴關(guān)系圖,這樣多個(gè)容器就可以匯聚成一個(gè)連貫的系統(tǒng)。CenturyLink 公司的 Panamax 合成工具類似 Fig 和 geard 的底層實(shí)現(xiàn)方法,但新增了一些基于 web 的用戶接口,并直接與 GitHub 相結(jié)合,以便于應(yīng)用程序分享。

編制

Decking、New Relic 公司的 Centurion 和谷歌公司的 Kubernetes 這樣的編制系統(tǒng)都是旨在協(xié)助容器的部署和管理其生命周期系統(tǒng)。也有許多 Apache Mesos (特別是 [Marathon(馬拉松式)持續(xù)運(yùn)行很久的框架])的案例(例如Mesosphere)已經(jīng)被用于配合 Docker 一起使用。通過為應(yīng)用程序與底層基礎(chǔ)架構(gòu)之間(例如傳遞 CPU 核數(shù)和內(nèi)存的需求)提供一個(gè)抽象的模型,編制工具提供了兩者的解耦,簡(jiǎn)化了應(yīng)用程序開發(fā)和數(shù)據(jù)中心操作。有很多各種各樣的編制系統(tǒng),因?yàn)樵S多來自內(nèi)部系統(tǒng)的以前開發(fā)的用于大規(guī)模容器部署的工具浮現(xiàn)出來了;如 Kubernetes 是基于谷歌的 Omega 系統(tǒng)的,Omega 是用于管理遍布谷歌云環(huán)境中容器的系統(tǒng)。

雖然從某種程度上來說合成工具和編制工具的功能存在重疊,但這也是它們之間互補(bǔ)的一種方式。例如 Fig 可以被用于描述容器間如何實(shí)現(xiàn)功能交互,而 Kubernetes pods(容器組)可用于提供監(jiān)控和擴(kuò)展。

平臺(tái)(即服務(wù))

有一些 Docker 原生的 PaaS 服務(wù)實(shí)現(xiàn),例如 DeisFlynn 已經(jīng)顯現(xiàn)出 Linux 容器在開發(fā)上的的靈活性(而不是那些“自以為是”的給出一套語言和框架)。其它平臺(tái),例如 CloudFoundry、OpenShift 和 Apcera Continuum 都已經(jīng)采取將 Docker 基礎(chǔ)功能融入其現(xiàn)有的系統(tǒng)的技術(shù)路線,這樣基于 Docker 鏡像(或者基于 Dockerfile)的應(yīng)用程序也可以與之前用支持的語言和框架的開發(fā)的應(yīng)用一同部署和管理。

所有的云

由于 Docker 能夠運(yùn)行在任何正常更新內(nèi)核的 Linux 虛擬機(jī)中,它幾乎可以用在所有提供 IaaS 服務(wù)的云上。大多數(shù)的主流云廠商已經(jīng)宣布提供對(duì) Docker 及其生態(tài)系統(tǒng)的支持。

亞馬遜已經(jīng)把 Docker 引入它們的 Elastic Beanstalk 系統(tǒng)(這是在底層 IaaS 上的一個(gè)編制系統(tǒng))。谷歌使 Docker 成為了“可管理的 VM”,它提供了GAE PaaS 和GCE IaaS 之間的中轉(zhuǎn)站。微軟和 IBM 也都已經(jīng)宣布了基于 Kubernetes 的服務(wù),這樣可以在它們的云上部署和管理多容器應(yīng)用程序。

為了給現(xiàn)有種類繁多的后端提供可用的一致接口,Docker 團(tuán)隊(duì)已經(jīng)引進(jìn) libswarm, 它可以集成于眾多的云和資源管理系統(tǒng)。Libswarm 所闡明的目標(biāo)之一是“通過切換服務(wù)來源避免被特定供應(yīng)商套牢”。這是通過呈現(xiàn)一組一致的服務(wù)(與API相關(guān)聯(lián)的)來完成的,該服務(wù)會(huì)通過特定的后端服務(wù)所實(shí)現(xiàn)。例如 Docker 服務(wù)器將支持本地 Docker 命令行工具的 Docker 遠(yuǎn)程 API 調(diào)用,這樣就可以管理一組服務(wù)供應(yīng)商的容器了。

基于 Docker 的新服務(wù)類型仍在起步階段。總部位于倫敦的 Orchard 實(shí)驗(yàn)室提供了 Docker 的托管服務(wù),但是 Docker 公司表示,收購(gòu) Orchard 后,其相關(guān)服務(wù)不會(huì)置于優(yōu)先位置。Docker 公司也出售了之前 DotCloud 的PaaS 業(yè)務(wù)給 cloudControl?;诟绲娜萜鞴芾硐到y(tǒng)的服務(wù)例如 OpenVZ 已經(jīng)司空見慣了,所以在一定程度上 Docker 需要向主機(jī)托管商們證明其價(jià)值。

Docker 及其發(fā)行版

Docker 已經(jīng)成為大多數(shù) Linux 發(fā)行版例如 Ubuntu、Red Hat 企業(yè)版(RHEL)和 CentOS 的一個(gè)標(biāo)準(zhǔn)功能。遺憾的是這些發(fā)行版的步調(diào)和 Docker 項(xiàng)目并不一致,所以在發(fā)布版中找到的版本總是遠(yuǎn)遠(yuǎn)落后于最新版本。例如 Ubuntu 14.04 版本中的版本是 Docker 0.9.1,而當(dāng) Ubuntu 升級(jí)至 14.04.1 時(shí) Docker 版本并沒有隨之升級(jí)(此時(shí) Docker 已經(jīng)升至 1.1.2 版本)。在發(fā)行版的軟件倉(cāng)庫(kù)中還有一個(gè)名字空間的沖突,因?yàn)?“Docker” 也是 KDE 系統(tǒng)托盤的名字;所以在 Ubuntu 14.04 版本中相關(guān)安裝包的名字和命令行工具都是使用“Docker.io”的名字。

在企業(yè)級(jí) Linux 的世界中,情況也并沒有因此而不同。CentOS 7 中的 Docker 版本是 0.11.1,這是 Docker 公司宣布準(zhǔn)備發(fā)行 Docker 1.0 產(chǎn)品版本之前的開發(fā)版。Linux 發(fā)行版用戶如果希望使用最新版本以保障其穩(wěn)定、性能和安全,那么最好地按照 Docker 的安裝說明進(jìn)行,使用 Docker 公司的所提供的軟件庫(kù)而不是采用發(fā)行版的。

Docker 的到來也催生了新的 Linux 發(fā)行版,如 CoreOS 和紅帽的 Project Atomic,它們被設(shè)計(jì)為能運(yùn)行容器的最小環(huán)境。這些發(fā)布版相比傳統(tǒng)的發(fā)行版,帶著更新的內(nèi)核及 Docker 版本,對(duì)內(nèi)存的使用和硬盤占用率也更低。新發(fā)行版也配備了用于大型部署的新工具,例如 fleet(一個(gè)分布式初始化系統(tǒng))和etcd(用于元數(shù)據(jù)管理)。這些發(fā)行版也有新的自我更新機(jī)制,以便可以使用最新的內(nèi)核和 Docker。這也意味著使用 Docker 的影響之一是它拋開了對(duì)發(fā)行版和相關(guān)的包管理解決方案的關(guān)注,而對(duì) Linux 內(nèi)核(及使用它的 Docker 子系統(tǒng))更加關(guān)注。

這些新發(fā)行版也許是運(yùn)行 Docker 的最好方式,但是傳統(tǒng)的發(fā)行版和它們的包管理器對(duì)容器來說仍然是非常重要的。Docker Hub 托管的官方鏡像有 Debian、Ubuntu 和 CentOS,以及一個(gè)‘半官方’的 Fedora 鏡像庫(kù)。RHEL 鏡像在Docker Hub 中不可用,因?yàn)樗?Red Hat 直接發(fā)布的。這意味著在 Docker Hub 的自動(dòng)構(gòu)建機(jī)制僅僅用于那些純開源發(fā)行版下(并愿意信任那些源于 Docker 公司團(tuán)隊(duì)提供的基礎(chǔ)鏡像)。

Docker Hub 集成了如 Git Hub 和 Bitbucket 這樣源代碼控制系統(tǒng)來自動(dòng)構(gòu)建包管理器,用于管理構(gòu)建過程中創(chuàng)建的構(gòu)建規(guī)范(在Dockerfile中)和生成的鏡像之間的復(fù)雜關(guān)系。構(gòu)建過程的不確定結(jié)果并非是 Docker 的特定問題——而與軟件包管理器如何工作有關(guān)。今天構(gòu)建完成的是一個(gè)版本,明天構(gòu)建的可能就是更新的版本,這就是為什么軟件包管理器需要升級(jí)的原因。容器抽象(較少關(guān)注容器中的內(nèi)容)以及容器擴(kuò)展(因?yàn)檩p量級(jí)資源利用率)有可能讓這種不確定性成為 Docker 的痛點(diǎn)。

Docker 的未來

Docker 公司對(duì)核心功能(libcontainer),跨服務(wù)管理(libswarm) 和容器間的信息傳遞(libchan)的發(fā)展上提出了明確的路線。與此同時(shí),該公司已經(jīng)表明愿意收購(gòu) Orchard 實(shí)驗(yàn)室,將其納入自身生態(tài)系統(tǒng)。然而 Docker 不僅僅是 Docker 公司的,這個(gè)項(xiàng)目的貢獻(xiàn)者也來自許多大牌貢獻(xiàn)者,其中不乏像谷歌、IBM 和 Red Hat 這樣的大公司。在仁慈獨(dú)裁者、CTO Solomon Hykes 掌舵的形勢(shì)下,為公司和項(xiàng)目明確了技術(shù)領(lǐng)導(dǎo)關(guān)系。在前18個(gè)月的項(xiàng)目中通過成果輸出展現(xiàn)了其快速行動(dòng)的能力,而且這種趨勢(shì)并沒有減弱的跡象。

許多投資者正在尋找10年前 VMware 公司的 ESX/vSphere 平臺(tái)的特征矩陣,并試圖找出虛擬機(jī)的普及而帶動(dòng)的企業(yè)預(yù)期和當(dāng)前 Docker 生態(tài)系統(tǒng)兩者的距離(和機(jī)會(huì))。目前 Docker 生態(tài)系統(tǒng)正缺乏類似網(wǎng)絡(luò)、存儲(chǔ)和(對(duì)于容器的內(nèi)容的)細(xì)粒度版本管理,這些都為初創(chuàng)企業(yè)和創(chuàng)業(yè)者提供了機(jī)會(huì)。

隨著時(shí)間的推移,在虛擬機(jī)和容器(Docker 的“運(yùn)行”部分)之間的區(qū)別將變得沒那么重要了,而關(guān)注點(diǎn)將會(huì)轉(zhuǎn)移到“構(gòu)建”和“交付”方面。這些變化將會(huì)使“Docker發(fā)生什么?”變得不如“Docker將會(huì)給IT產(chǎn)業(yè)帶來什么?”那么重要了。


via: http://www./articles/docker-future

作者:Chris Swan 譯者:disylee 校對(duì):wxy

本文由 LCTT 原創(chuàng)翻譯,Linux中國(guó) 榮譽(yù)推出

原文:http://www./articles/docker-future 作者: Chris Swan
譯文: LCTT http:///article-4783-1.html 譯者: disylee
本文由 LCTT 原創(chuàng)翻譯,Linux中國(guó)首發(fā)。也想加入譯者行列,為開源做一些自己的貢獻(xiàn)么?歡迎加入 LCTT
翻譯工作和譯文發(fā)表僅用于學(xué)習(xí)和交流目的,翻譯工作遵照CC 協(xié)議規(guī)定,如果我們的工作有侵犯到您的權(quán)益,請(qǐng)及時(shí)聯(lián)系我們。
歡迎遵照CC 協(xié)議規(guī)定轉(zhuǎn)載,敬請(qǐng)?jiān)谡闹袠?biāo)注并保留原文/譯文鏈接和作者/譯者等信息。                   

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产国产精品精品在线| 国产精品久久男人的天堂| 高清一区二区三区四区五区| 偷拍美女洗澡免费视频| 久久精品亚洲情色欧美| 国产色偷丝袜麻豆亚洲| 日韩中文字幕欧美亚洲| 国产精品一区二区丝袜| 又色又爽又无遮挡的视频| 免费性欧美重口味黄色| 国产成人精品在线播放| 亚洲女同一区二区另类| 中国少妇精品偷拍视频| 极品少妇嫩草视频在线观看| 日韩不卡一区二区在线| 好东西一起分享老鸭窝| 国产日韩欧美一区二区| 91一区国产中文字幕| 亚洲综合色在线视频香蕉视频| 国产自拍欧美日韩在线观看 | 日本人妻免费一区二区三区| 免费精品国产日韩热久久| 亚洲国产91精品视频| 日韩精品区欧美在线一区 | 国产精品午夜福利在线观看| 久久这里只有精品中文字幕| 亚洲免费观看一区二区三区| 国产又粗又长又爽又猛的视频| 老司机激情五月天在线不卡| 国产精品内射婷婷一级二级| 午夜久久久精品国产精品| 午夜福利92在线观看| 日韩在线视频精品中文字幕| 在线欧洲免费无线码二区免费| 亚洲一区二区久久观看| 欧美成人一区二区三区在线| 黑丝袜美女老师的小逼逼| 色综合久久中文综合网| 国产av一区二区三区久久不卡| 国产又粗又猛又长又黄视频| 久久国产精品熟女一区二区三区|