當前位置:首頁 » 雲伺服器 » 雲伺服器docker互聯

雲伺服器docker互聯

發布時間: 2023-01-04 00:36:33

Ⅰ docker容器互聯的說法錯誤的是

docker容器互聯的說法錯誤的是容器互聯後源容器可以看到接收容器指定的信息。根據查詢相關信息,在同一個網路中的容器,可以互聯,並且,Docker內置了DNS,容器內的應用可以使用服務名、容器名、別名來進行服務發現,名稱會經由內置的DNS進行解析。

Ⅱ Docker和雲計算的關系是什麼

首先,Docker可以理解為是一個集裝箱(容器),但事實上它本身並不是容器,它是創建容器的工具,是應用容器引擎。Docker是世界領先的軟體容器平台。Docker使用Google公司推出的Go語言進行開發實現,基於linux內核的cgroup,namespace,以及AUFS類的UnionFS等技術,對進程進行封裝隔離,屬於操作系統層面的虛擬化技術。 由於隔離的進程獨立於宿主和其它的隔離的進程,因此也稱其為容器,但docker本身並不是容器。Docker最初實現是基於LXC。LXC為Linux Container的簡寫。可以提供輕量級的虛擬化,以便隔離進程和資源,而且不需要提供指令解釋機制以及全虛擬化的其他復雜性。相當於C++中的NameSpace。容器有效地將由單個操作系統管理的資源劃分到孤立的組中,以更好地在孤立的組之間平衡有沖突的資源使用需求。Docker能夠自動執行重復性任務,例如搭建和配置開發環境,從而解放了開發人員以便他們專注在真正重要的事情上:構建傑出的軟體。用戶可以方便地創建和使用容器,把自己的應用放入容器。容器還可以進行版本管理、復制、分享、修改,就像管理普通的代碼一樣。Docker是雲計算時代的主流技術之一

Ⅲ 解決雲伺服器docker swarm節點間無法通信問題

如果你的swarm運行在默認埠,那麼你就可能和我一樣遇到了VXLAN默認埠4789/udp被雲服務廠商阻斷的問題。比如阿里雲在文檔中提到了這點,鏈接-> 阿里雲添加udp監聽文檔 。

這個問題在docker:v19.03之前無法直接解決。19.03版本,docker在swarm init之上增加了--data-path-port uint32 的配置項用於更改docker swarm的VXLAN埠。
下面以指定埠5789/udp為例

Ⅳ 微服務架構:基於微服務和Docker容器技術的PaaS雲平台架構設計

基於微服務架構和Docker容器技術的PaaS雲平台建設目標是給我們的開發人員提供一套服務快速開發、部署、運維管理、持續開發持續集成的流程。平台提供基礎設施、中間件、數據服務、雲伺服器等資源,開發人員只需要開發業務代碼並提交到平台代碼庫,做一些必要的配置,系統會自動構建、部署,實現應用的敏捷開發、快速迭代。在系統架構上,PaaS雲平台主要分為微服務架構、Docker容器技術、DveOps三部分,這篇文章重點介紹微服務架構的實施。

如果想學習Java工程化、高性能及分布式、深入淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java高級交流:854630135,群里有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給大家。

實施微服務需要投入大量的技術力量來開發基礎設施,這對很多公司來說顯然是不現實的,別擔心,業界已經有非常優秀的開源框架供我們參考使用。目前業界比較成熟的微服務框架有Netflix、Spring Cloud和阿里的Dubbo等。Spring Cloud是基於Spring Boot的一整套實現微服務的框架,它提供了開發微服務所需的組件,跟Spring Boot一起使用的話開發微服務架構的雲服務會變的很方便。Spring Cloud包含很多子框架,其中Spring Cloud Netflix是其中的一套框架,在我們的微服務架構設計中,就使用了很多Spring Cloud Netflix框架的組件。Spring Cloud Netflix項目的時間還不長,相關的文檔資料很少,博主當時研究這套框架啃了很多英文文檔,簡直痛苦不堪。對於剛開始接觸這套框架的同學,要搭建一套微服務應用架構,可能會不知道如何下手,接下來介紹我們的微服務架構搭建過程以及 需要那些 框架或組件來支持微服務架構。

為了直接明了的展示微服務架構的組成及原理,畫了一張系統架構圖,如下:

從上圖可以看出,微服務訪問大致路徑為:外部請求 → 負載均衡 → 服務網關(GateWay)→ 微服務 → 數據服務/消息服務。服務網關和微服務都會用到服務注冊和發現來調用依賴的其他服務,各服務集群都能通過配置中心服務來獲得配置信息。

服務網關(GateWay)

網關是外界系統(如:客戶端瀏覽器、移動設備等)和企業內部系統之間的一道門,所有的客戶端請求通過網關訪問後台服務。為了應對高並發訪問,服務網關以集群形式部署,這就意味著需要做負載均衡,我們採用了亞馬遜EC2作為虛擬雲伺服器,採用ELB(Elastic Load Balancing)做負載均衡。EC2具有自動配置容量功能,當用戶流量達到尖峰,EC2可以自動增加更多的容量以維持虛擬主機的性能。ELB彈性負載均衡,在多個實例間自動分配應用的傳入流量。為了保證安全性,客戶端請求需要使用https加密保護,這就需要我們進行SSL卸載,使用Nginx對加密請求進行卸載處理。外部請求經過ELB負載均衡後路由到GateWay集群中的某個GateWay服務,由GateWay服務轉發到微服務。服務網關作為內部系統的邊界,它有以下基本能力:

1、動態路由:動態的將請求路由到所需要的後端服務集群。雖然內部是復雜的分布式微服務網狀結構,但是外部系統從網關看就像是一個整體服務,網關屏蔽了後端服務的復雜性。

2、限流和容錯:為每種類型的請求分配容量,當請求數量超過閥值時拋掉外部請求,限制流量,保護後台服務不被大流量沖垮;黨內部服務出現故障時直接在邊界創建一些響應,集中做容錯處理,而不是將請求轉發到內部集群,保證用戶良好的體驗。

3、身份認證和安全性控制:對每個外部請求進行用戶認證,拒絕沒有通過認證的請求,還能通過訪問模式分析,實現反爬蟲功能。

4、監控:網關可以收集有意義的數據和統計,為後台服務優化提供數據支持。

5、訪問日誌:網關可以收集訪問日誌信息,比如訪問的是哪個服務?處理過程(出現什麼異常)和結果?花費多少時間?通過分析日誌內容,對後台系統做進一步優化。

我們採用Spring Cloud Netflix框架的開源組件Zuul來實現網關服務。Zuul使用一系列不同類型的過濾器(Filter),通過重寫過濾器,使我們能夠靈活的實現網關(GateWay)的各種功能。

如果想學習Java工程化、高性能及分布式、深入淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java高級交流:854630135,群里有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給大家。

服務注冊與發現

由於微服務架構是由一系列職責單一的細粒度服務構成的網狀結構,服務之間通過輕量機制進行通信,這就引入了服務注冊與發現的問題,服務的提供方要注冊報告服務地址,服務調用放要能發現目標服務。我們的微服務架構中使用了Eureka組件來實現服務的注冊與發現。所有的微服務(通過配置Eureka服務信息)到Eureka伺服器中進行注冊,並定時發送心跳進行 健康 檢查,Eureka默認配置是30秒發送一次心跳,表明服務仍然處於存活狀態,發送心跳的時間間隔可以通過Eureka的配置參數自行配置,Eureka伺服器在接收到服務實例的最後一次心跳後,需要等待90秒(默認配置90秒,可以通過配置參數進行修改)後,才認定服務已經死亡(即連續3次沒有接收到心跳),在Eureka自我保護模式關閉的情況下會清除該服務的注冊信息。所謂的自我保護模式是指,出現網路分區、Eureka在短時間內丟失過多的服務時,會進入自我保護模式,即一個服務長時間沒有發送心跳,Eureka也不會將其刪除。自我保護模式默認為開啟,可以通過配置參數將其設置為關閉狀態。

Eureka服務以集群的方式部署(在博主的另一篇文章中詳細介紹了Eureka集群的部署方式),集群內的所有Eureka節點會定時自動同步微服務的注冊信息,這樣就能保證所有的Eureka服務注冊信息保持一致。那麼在Eureka集群里,Eureka節點是如何發現其他節點的呢?我們通過DNS伺服器來建立所有Eureka節點的關聯,在部署Eureka集群之外還需要搭建DNS伺服器。

當網關服務轉發外部請求或者是後台微服務之間相互調用時,會去Eureka伺服器上查找目標服務的注冊信息,發現目標服務並進行調用,這樣就形成了服務注冊與發現的整個流程。Eureka的配置參數數量很多,多達上百個,博主會在另外的文章里詳細說明。

微服務部署

微服務是一系列職責單一、細粒度的服務,是將我們的業務進行拆分為獨立的服務單元,伸縮性好,耦合度低,不同的微服務可以用不同的語言開發,每一個服務處理的單一的業務。微服務可以劃分為前端服務(也叫邊緣服務)和後端服務(也叫中間服務),前端服務是對後端服務做必要的聚合和剪裁後暴露給外部不同的設備(PC、Phone等),所有的服務啟動時都會到Eureka伺服器進行注冊,服務之間會有錯綜復雜的依賴關系。當網關服務轉發外部請求調用前端服務時,通過查詢服務注冊表就可以發現目標服務進行調用,前端服務調用後端服務時也是同樣的道理,一次請求可能涉及到多個服務之間的相互調用。由於每個微服務都是以集群的形式部署,服務之間相互調用的時候需要做負載均衡,因此每個服務中都有一個LB組件用來實現負載均衡。

微服務以鏡像的形式,運行在Docker容器中。Docker容器技術讓我們的服務部署變得簡單、高效。傳統的部署方式,需要在每台伺服器上安裝運行環境,如果我們的伺服器數量龐大,在每台伺服器上安裝運行環境將是一項無比繁重的工作,一旦運行環境發生改變,就不得不重新安裝,這簡直是災難性的。而使用Docker容器技術,我們只需要將所需的基礎鏡像(jdk等)和微服務生成一個新的鏡像,將這個最終的鏡像部署在Docker容器中運行,這種方式簡單、高效,能夠快速部署服務。每個Docker容器中可以運行多個微服務,Docker容器以集群的方式部署,使用Docker Swarm對這些容器進行管理。我們創建一個鏡像倉庫用來存放所有的基礎鏡像以及生成的最終交付鏡像,在鏡像倉庫中對所有鏡像進行管理。

服務容錯

微服務之間存在錯綜復雜的依賴關系,一次請求可能會依賴多個後端服務,在實際生產中這些服務可能會產生故障或者延遲,在一個高流量的系統中,一旦某個服務產生延遲,可能會在短時間內耗盡系統資源,將整個系統拖垮,因此一個服務如果不能對其故障進行隔離和容錯,這本身就是災難性的。我們的微服務架構中使用了Hystrix組件來進行容錯處理。Hystrix是Netflix的一款開源組件,它通過熔斷模式、隔離模式、回退(fallback)和限流等機制對服務進行彈性容錯保護,保證系統的穩定性。

1、熔斷模式:熔斷模式原理類似於電路熔斷器,當電路發生短路時,熔斷器熔斷,保護電路避免遭受災難性損失。當服務異常或者大量延時,滿足熔斷條件時服務調用方會主動啟動熔斷,執行fallback邏輯直接返回,不會繼續調用服務進一步拖垮系統。熔斷器默認配置服務調用錯誤率閥值為50%,超過閥值將自動啟動熔斷模式。服務隔離一段時間以後,熔斷器會進入半熔斷狀態,即允許少量請求進行嘗試,如果仍然調用失敗,則回到熔斷狀態,如果調用成功,則關閉熔斷模式。

2、隔離模式:Hystrix默認採用線程隔離,不同的服務使用不同的線程池,彼此之間不受影響,當一個服務出現故障耗盡它的線程池資源,其他的服務正常運行不受影響,達到隔離的效果。例如我們通過andThreadPoolKey配置某個服務使用命名為TestThreadPool的線程池,實現與其他命名的線程池隔離。

3、回退(fallback):fallback機制其實是一種服務故障時的容錯方式,原理類似Java中的異常處理。只需要繼承HystixCommand並重寫getFallBack()方法,在此方法中編寫處理邏輯,比如可以直接拋異常(快速失敗),可以返回空值或預設值,也可以返回備份數據等。當服務調用出現異常時,會轉向執行getFallBack()。有以下幾種情況會觸發fallback:

1)程序拋出非HystrixBadRequestExcepption異常,當拋出HystrixBadRequestExcepption異常時,調用程序可以捕獲異常,沒有觸發fallback,當拋出其他異常時,會觸發fallback;

2)程序運行超時;

3)熔斷啟動;

4)線程池已滿。

4、限流: 限流是指對服務的並發訪問量進行限制,設置單位時間內的並發數,超出限制的請求拒絕並fallback,防止後台服務被沖垮。

Hystix使用命令模式HystrixCommand包裝依賴調用邏輯,這樣相關的調用就自動處於Hystrix的彈性容錯保護之下。調用程序需要繼承HystrixCommand並將調用邏輯寫在run()中,使用execute()(同步阻塞)或queue()(非同步非阻塞)來觸發執行run()。

動態配置中心

微服務有很多依賴配置,某些配置參數在服務運行期間可能還要動態修改,比如:根據訪問流量動態調整熔斷閥值。傳統的實現信息配置的方法,比如放在xml、yml等配置文件中,和應用一起打包,每次修改都要重新提交代碼、打包構建、生成新的鏡像、重新啟動服務,效率太低,這樣顯然是不合理的,因此我們需要搭建一個動態配置中心服務支持微服務動態配置。我們使用Spring Cloud的configserver服務幫我們實現動態配置中心的搭建。我們開發的微服務代碼都存放在git伺服器私有倉庫裡面,所有需要動態配置的配置文件存放在git伺服器下的configserver(配置中心,也是一個微服務)服務中,部署到Docker容器中的微服務從git伺服器動態讀取配置文件的信息。當本地git倉庫修改代碼後push到git伺服器倉庫,git服務端hooks(post-receive,在服務端完成代碼更新後會自動調用)自動檢測是否有配置文件更新,如果有,git服務端通過消息隊列給配置中心(configserver,一個部署在容器中的微服務)發消息,通知配置中心刷新對應的配置文件。這樣微服務就能獲取到最新的配置文件信息,實現動態配置。

以上這些框架或組件是支撐實施微服務架構的核心,在實際生產中,我們還會用到很多其他的組件,比如日誌服務組件、消息服務組件等等,根據業務需要自行選擇使用。在我們的微服務架構實施案例中,參考使用了很多Spring Cloud Netflix框架的開源組件,主要包括Zuul(服務網關)、Eureka(服務注冊與發現)、Hystrix(服務容錯)、Ribbon(客戶端負載均衡)等。這些優秀的開源組件,為我們實施微服務架構提供了捷徑。

如果想學習Java工程化、高性能及分布式、深入淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java高級交流:854630135,群里有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給大家。

Ⅳ Docker+ Kubernetes已成為雲計算的主流(二十六)

最近正在抽時間編寫k8s的相關教程,很是費時,等相關內容初步完成後,再和大家分享。對於k8s,還是上雲更為簡單、穩定並且節省成本,因此我們需要對主流雲服務的容器服務進行了解,以便更好地應用於生產。

主流雲服務容器服務介紹

Docker+ Kubernetes已成為雲計算的主流

亞馬遜AWS

Amazon Web Services (AWS) 是亞馬遜公司旗下雲計算服務平台,為全世界范圍內的客戶提供雲解決方案。AWS面向用戶提供包括彈性計算、存儲資料庫、應用程序在內的一整套雲計算服務,幫助企業降低IT投入成本和維護成本。

那麼如何在AWS上運行Docker呢?AWS 同時為 Docker 開源解決方案和商業解決方案提供支持,並且可通過多種方式在 AWS 上運行容器:

微軟Azure

Microsoft Azure 是一個開放而靈活的企業級雲計算平台。通過 IaaS + PaaS 幫助用戶加快發展步伐,提高工作效率並節省運營成本。

Azure是一種靈活和支持互操作的平台,它可以被用來創建雲中運行的應用或者通過基於雲的特性來加強現有應用。它開放式的架構給開發者提供了Web應用、互聯設備的應用、個人電腦、伺服器、或者提供最優在線復雜解決方案的選擇。

在容器這塊,Azure同樣的提供了眾多解決方案:

下面我們側重介紹下以下服務:

阿里雲

阿里雲(www.aliyun.com)創立於2009年,是全球領先的雲計算及人工智慧 科技 公司,為200多個國家和地區的企業、開發者和政府機構提供服務。2017年1月阿里雲成為奧運會全球指定雲服務商。2017年8月阿里巴巴財報數據顯示,阿里雲付費雲計算用戶超過100萬。阿里雲致力於以在線公共服務的方式,提供安全、可靠的計算和數據處理能力,讓計算和人工智慧成為普惠 科技 。阿里雲在全球18個地域開放了49個可用區,為全球數十億用戶提供可靠的計算支持。此外,阿里雲為全球客戶部署200多個飛天數據中心,通過底層統一的飛天操作系統,為客戶提供全球獨有的混合雲體驗。

飛天(Apsara)是由阿里雲自主研發、服務全球的超大規模通用計算操作系統。 它可以將遍布全球的百萬級伺服器連成一台超級計算機,以在線公共服務的方式為 社會 提供計算能力。 從PC互聯網到移動互聯網到萬物互聯網,互聯網成為世界新的基礎設施。飛天希望解決人類計算的規模、效率和安全問題。飛天的革命性在於將雲計算的三個方向整合起來:提供足夠強大的計算能力,提供通用的計算能力,提供普惠的計算能力。飛天誕生於2009年2月,目前為全球200多個國家和地區的創新創業企業、政府、機構等提供服務。

同樣,阿里雲對容器也提供了友好的支持:

容器服務提供高性能可伸縮的容器應用管理服務,支持用Docker和Kubernetes進行容器化應用的生命周期管理,提供多種應用發布方式和持續交付能力並支持微服務架構。容器服務簡化了容器管理集群的搭建工作,整合了阿里雲虛擬化、存儲、網路和安全能力,打造雲端最佳容器運行環境。

容器服務 Kubernetes 版(簡稱 ACK)提供高性能可伸縮的容器應用管理能力,支持企業級 Kubernetes 容器化應用的全生命周期管理。容器服務 Kubernetes 版簡化集群的搭建和擴容等工作,整合阿里雲虛擬化、存儲、網路和安全能力,打造雲端最佳的 Kubernetes 容器化應用運行環境。

阿里雲彈性容器實例(Elastic Container Instance)是 Serverless 和容器化的彈性計算服務。用戶無需管理底層 ECS 伺服器,只需要提供打包好的鏡像,即可運行容器,並僅為容器實際運行消耗的資源付費。

容器鏡像服務(Container Registry)提供安全的鏡像託管能力,穩定的國內外鏡像構建服務,便捷的鏡像授權功能,方便用戶進行鏡像全生命周期管理。容器鏡像服務簡化了Registry的搭建運維工作,支持多地域的鏡像託管,並聯合容器服務等雲產品,為用戶打造雲上使用Docker的一體化體驗。

騰訊雲

騰訊雲為騰訊傾力打造的雲計算品牌,以卓越 科技 能力助力各行各業數字化轉型,為全球客戶提供領先的雲計算、大數據、人工智慧服務,以及定製化行業解決方案。其基於QQ、微信、騰訊 游戲 等海量業務的技術錘煉,從基礎架構到精細化運營,從平台實力到生態能力建設,騰訊雲將之整合並面向市場,使之能夠為企業和創業者提供集雲計算、雲數據、雲運營於一體的雲端服務體驗。

在容器這塊,騰訊雲提供了如下解決方案:

騰訊雲容器服務(Tencent Kubernetes Engine ,TKE)基於原生 kubernetes 提供以容器為核心的、高度可擴展的高性能容器管理服務。騰訊雲容器服務完全兼容原生 kubernetes API ,擴展了騰訊雲的 CBS、CLB 等 kubernetes 插件,為容器化的應用提供高效部署、資源調度、服務發現和動態伸縮等一系列完整功能,解決用戶開發、測試及運維過程的環境一致性問題,提高了大規模容器集群管理的便捷性,幫助用戶降低成本,提高效率。容器服務提供免費使用,涉及的其他雲產品另外單獨計費。

容器實例服務(Container Instance Service , CIS)可以幫用戶在雲上快捷、靈活的部署容器,讓用戶專注於構建程序和使用容器而非管理設備上。無需預購 CVM(雲伺服器),就可以在幾秒內啟動一批容器來執行任務。同時,開發者也可以通過 kubernetes API 把已有kubernetes 集群的 pod 調度到 CIS 上以處理突增業務。CIS 根據實際使用的資源計費,可以幫用戶節約計算成本。使用 CIS 可以極大降低用戶部署容器的門檻,降低用戶執行 batch 型任務或處理業務突增的成本。

從上面主流的雲服務中我們可以看到,沒有哪家雲廠商不支持Docker,同樣的,也沒有哪家雲廠商不支持Kubernetes!也就是說,Docker+ Kubernetes已經成為雲計算的主流!

什麼是Kubernetes(k8s)

Kubernetes(簡稱k8s)誕生於谷歌,是一個開源的,用於管理雲平台中多個主機上的容器化的應用,k8s的目標是讓部署容器化的應用簡單並且高效,其提供了應用部署、規劃、更新、維護的機制。

k8s主要有以下特點:

支持公有雲,私有雲,混合雲,多重雲(multi-cloud) 。可以將容器化的工作負載從本地開發計算機無縫移動到生產環境。在本地基礎結構以及公共雲和混合雲中,在不同環境中協調容器,保持一致性。

支持模塊化,插件化,可掛載,可組合。並且k8s的擴展和插件在社區開發者和各大公司的支持下高速增長,用戶可以充分利用這些社區產品/服務以添加各種功能。

支持自動部署,自動重啟,自動復制,自動伸縮/擴展,並且可以定義復雜的容器化應用程序並將其部署在伺服器群集甚至多個群集上——因為k8s會根據所需狀態優化資源。通過內置的自動縮放器,k8s可輕松地水平縮放應用程序,同時自動監視和維護容器的正常運行。

Kubernetes正在塑造應用程序開發和管理的未來

k8s構建於 Google 數十年經驗,一大半來源於 Google 生產環境規模的經驗。結合了社區最佳的想法和實踐,而且還在不斷地高速迭代和更新之中。

她銜著金鑰匙出生,一誕生就廣受歡迎,更是在2017,其打敗了所有的競爭對手,贏得了雲計算的戰爭——主流的雲廠商基本上都紛紛放棄了自己造「輪子」的舉動,終止了各自的容器編排工具,加盟了k8s陣營,其中包括Red Hat、微軟、IBM、阿里、騰訊、華為和甲骨文等。

k8s像風暴一樣席捲了應用開發領域,並且已成為雲原生應用程序(架構、組件、部署和管理方式)的事實標准,大量的開發者和企業正在使用k8s創建由微服務和無伺服器功能組成的現代架構。

Docker+ Kubernetes已成為雲計算的主流

容器是現代軟體交付的未來,而Kubernetes是編排容器的最佳方案(事實上的標准)。

Docker 和Kubernetes相輔相成,聯手打下了雲計算的「萬里江山」。Docker 為打包和分發容器化應用程序提供了一個開放的標准,而 Kubernetes 則協調和管理通過 Docker 創建的分布式容器化應用程序。換句話說,Kubernetes 提供了部署和運行通過Docker生成的應用程序所需的基礎結構。

在主流的雲服務,基於Docker+k8s的新型PaaS平台具有敏捷部署、彈性伸縮、靈活調度、故障自動恢復等優勢,充分滿足業務擴展中的資源支持,因此在短短兩年之內,便從Docker Swarm、Cloud Foundry Diego、Kontena、Apache Mesos、Amazon ECS…等大量對手中脫穎而出,拿下了皇冠。

k8s和Docker的勝利意味著這是有史以來第一次,無論使用哪一種雲平台,研發人員都可以擁有完全相同的計算環境。

Ⅵ 怎樣在AWS雲伺服器上使用docker搭建一個網站

  1. ssh進伺服器(應該是linux的吧?)

  2. 運行docker命令測試,如果沒有,安裝

  3. 一般用docker run docker名稱(你可以首先測試官方docker) 還可以暴露埠啥的參數

  4. 測試訪問

上面的測通以後

  1. 把你的代碼clone到伺服器內

  2. docker build 就生成了你的新docker

  3. docker run 剛剛build的名稱

Ⅶ 微服務基礎服務之docker篇

什麼是docker

Docker 最初是 dotCloud 公司創始人 Solomon Hykes 在法國期間發起的一個公司內部項目,它是基於 dotCloud 公司多年雲服務技術的一次革新,並於 2013 年 3 月以 Apache 2.0 授權協議開源,主要項目代碼在 GitHub 上進行維護。Docker 項目後來還加入了 Linux 基金會,並成立推動 開放容器聯盟(OCI)。

Docker 使用 Google 公司推出的 Go 語言 進行開發實現,基於 Linux 內核的 cgroup,namespace,以及 AUFS 類的 Union FS 等技術,對進程進行封裝隔離,屬於 操作系統層面的虛擬化技術。由於隔離的進程獨立於宿主和其它的隔離的進程,因此也稱其為容器。最初實現是基於 LXC,從 0.7 版本以後開始去除 LXC,轉而使用自行開發的 libcontainer,從 1.11 開始,則進一步演進為使用 runC 和 containerd。

Docker 在容器的基礎上,進行了進一步的封裝,從文件系統、網路互聯到進程隔離等等,極大的簡化了容器的創建和維護。使得 Docker 技術比虛擬機技術更為輕便、快捷。

下面的圖片比較了 Docker 和傳統虛擬化方式的不同之處。傳統虛擬機技術是虛擬出一套硬體後,在其上運行一個完整操作系統,在該系統上再運行所需應用進程;而容器內的應用進程直接運行於宿主的內核,容器內沒有自己的內核,而且也沒有進行硬體虛擬。因此容器要比傳統虛擬機更為輕便。

傳統虛擬化

Docker

為什麼要用docker

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

使用 Docker 可以通過定製應用鏡像來實現持續集成、持續交付、部署。開發人員可以通過 Dockerfile 來進行鏡像構建,並結合 持續集成(Continuous Integration) 系統進行集成測試,而運維人員則可以直接在生產環境中快速部署該鏡像,甚至結合 持續部署(Continuous Delivery/Deployment) 系統進行自動部署。

而且使用 Dockerfile 使鏡像構建透明化,不僅僅開發團隊可以理解應用運行環境,也方便運維團隊理解應用運行所需條件,幫助更好的生產環境中部署該鏡像。

特性容器虛擬機 啟動秒級分鍾級 硬碟使用一般為MB一般為GB 性能接近原生弱於 系統支持量單機支持上千個容器一般幾十個

基本概念

我們都知道,操作系統分為內核和用戶空間。對於 Linux 而言,內核啟動後,會掛載 root 文件系統為其提供用戶空間支持。而 Docker 鏡像(Image),就相當於是一個 root 文件系統。比如官方鏡像 ubuntu:18.04 就包含了完整的一套 Ubuntu 18.04 最小系統的 root 文件系統。

Docker 鏡像是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時准備的一些配置參數(如匿名卷、環境變數、用戶等)。鏡像不包含任何動態數據,其內容在構建之後也不會被改變。

鏡像(Image)和容器(Container)的關系,就像是面向對象程序設計中的 類 和 實例 一樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器可以被創建、啟動、停止、刪除、暫停等。

前面講過鏡像使用的是分層存儲,容器也是如此。每一個容器運行時,是以鏡像為基礎層,在其上創建一個當前容器的存儲層,我們可以稱這個為容器運行時讀寫而准備的存儲層為容器存儲層。

按照 Docker 最佳實踐的要求,容器不應該向其存儲層內寫入任何數據,容器存儲層要保持無狀態化。所有的文件寫入操作,都應該使用 數據卷(Volume)、或者綁定宿主目錄,在這些位置的讀寫會跳過容器存儲層,直接對宿主(或網路存儲)發生讀寫,其性能和穩定性更高。

數據卷的生存周期獨立於容器,容器消亡,數據卷不會消亡。因此,使用數據卷後,容器刪除或者重新運行之後,數據卻不會丟失。

鏡像構建完成後,可以很容易的在當前宿主機上運行,但是,如果需要在其它伺服器上使用這個鏡像,我們就需要一個集中的存儲、分發鏡像的服務,Docker Registry 就是這樣的服務。

一個 Docker Registry 中可以包含多個倉庫(Repository);每個倉庫可以包含多個標簽(Tag);每個標簽對應一個鏡像。

通常,一個倉庫會包含同一個軟體不同版本的鏡像,而標簽就常用於對應該軟體的各個版本。我們可以通過 <倉庫名>:<標簽> 的格式來指定具體是這個軟體哪個版本的鏡像。如果不給出標簽,將以 latest 作為默認標簽。

Centos安裝docker18

常用的docker命令

常用的docker鏡像

redis

mysql

Ⅷ 怎樣在阿里雲上安裝docker

怎樣在阿里雲上安裝docker
更多1
Linux
因為debian 7安裝docker的手續比較麻煩,所以我把阿里雲的系統換成了ubuntu 14.04,然後參考:https://docs.docker.com/installation/ubuntulinux/
還算比較方便:apt-get update && apt-get install docker.io,然後再改兩個配置就完事了。
不過,在你運行docker run -i -t ubuntu /bin/bash的時候,會報錯,說是docker -d好象沒有運行,這不科學 啊,剛剛不是裝好的嗎?
於是ps aux|grep docker,果然沒有進程,於是直接輸入:docker -d,然後就發現報錯了:
2014/08/18 12:05:42 Could not find a free IP address range for interface 'docker0'. Please configure its address manually and run 'docker -b docker0'

老規矩,內事不決問度娘,外事不決問谷歌,結果居然看到有人回復 :

當時這個心就碎了,心想這不科學啊,於是再google,就真的發現了:

OK,那就試試吧:
sudo brctl addbr docker0 # create your bridge
sudo brctl addif docker0 eth0 # mask an existing interface using the bridge
sudo ip link set dev docker0 up # bring it up - not really sure if this is necessary or is it done automatically
sudo ifconfig docker0 10.0.0.4 # give it an IP

當然要運行brctl還是要裝一個bridge-utils工具的,當然這個ubuntu會提醒你,一步步的做完後,docker 果然可以啟動了。這時候再運行一下,service docker.io start,然後ps aux|grep docker,進程還活著。
於是輸入:
docker run -i -t ubuntu /bin/bash
Unable to find image 'ubuntu' locally
Pulling repository ubuntu
2014/08/18 12:16:44 Get https://index.docker.io/v1/repositories/ubuntu/images: dial tcp: lookup index.docker.io on 10.143.22.118:53: no answer from server

咦。不能上網。其實就是上面的代碼的問題,因為默認aliyun的eth0是內網IP,所以上述的
sudo brctl addif docker0 eth0 # mask an existing interface using the bridge
這里應該用eth1
重新執行一下。然後再次運行:
docker run -i -t ubuntu /bin/bash
Unable to find image 'ubuntu' locally
Pulling repository ubuntu
c5881f11ded9: Download complete
。。。。。。。

整個就完成了

熱點內容
sql一個表另一個表 發布:2025-03-21 22:19:27 瀏覽:462
安卓收割機哪個型號好 發布:2025-03-21 22:12:34 瀏覽:86
安卓怎麼盈利 發布:2025-03-21 22:11:01 瀏覽:580
華為大容量存儲 發布:2025-03-21 22:10:15 瀏覽:909
我的世界神奇寶貝伺服器精靈起源 發布:2025-03-21 22:10:09 瀏覽:171
aws對象存儲 發布:2025-03-21 22:06:19 瀏覽:725
memcached緩存命中率 發布:2025-03-21 21:50:14 瀏覽:957
php環境工具 發布:2025-03-21 21:50:11 瀏覽:24
怎麼在電腦上配置WEB伺服器 發布:2025-03-21 21:41:32 瀏覽:745
圖片上傳中 發布:2025-03-21 21:41:32 瀏覽:83