在百度百科上看了一陣,專業術語太多,我還是沒有真正搞懂。誰可以簡單解釋一下,例如它到底解決了什麼問題?
剛剛看了幾位大神的回答,可能是我接觸太少吧,感覺還是不是非常清楚。是不是它相當於一台虛擬機,你把軟體部署到那個虛擬機上面?性能不是差了很多嗎?如果說它利用的還是宿主機器的資源,那麼這跟直接運作在宿主機器就沒有差別?如果宿主機器缺少它的依賴庫,它仍然運作不起來。
天蓬老师2017-04-25 09:05:25
docker主要有2大核心貢獻和對軟體交付的影響:
2大貢獻:
1、封裝,將運行環境與程式碼封裝到一個盒子中
2、鏡像倉庫,將程式碼封裝到一個盒子中
鏡像倉庫,將映像像以類似代碼倉庫的方式分發
軟體交付的影響:
作為一個IT界「貨櫃」 它把整個軟體交付的流程和方式都改變了,就相當於貨櫃一樣改變了整個航運、空運、陸運的方式,讓生產者產出的產品到最終用戶完全一致,無論中途經過多少過程。有了這個核心的「貨櫃」 整個生態都圍著它打轉。 🎜 🎜另外與虛擬化相比,虛擬化是硬體與系統的虛擬,而容器是應用的虛擬,它以模組(函數)的方式,透過環境變數(函數的參數)來改變這個虛擬應用的運作狀態。同時借助編排工具可以組裝非常龐大且複雜的服務。 🎜伊谢尔伦2017-04-25 09:05:25
首先docker不是虛擬機器! !不是! !不是! !
很多人才把一個docker裡面開滿了mysql apache 等等東西!這是錯誤的!
docker是單線程程序,一般一個docker容器只開一個應用,所以請不要把docker當虛擬機器用。
其次docker從理論上來看,是一個封裝的沙盒環境,全部更改在環境中,不影響系統(當然你可以掛載)。
這好比window的綠色軟體,免安裝,下載即用。
docker你可以看成linux的綠色軟體打包器,建立好鏡像後可以在任何有docker的機器上運行,不需要一大堆編譯啊什麼,高速快捷。
好吧ヽ(  ̄д ̄;)ノ如果還是看不懂我認輸。 。 。
phpcn_u15822017-04-25 09:05:25
例如你用的是Ubuntu
,服务器用的是CentOS
,那么此时你要把项目部署到服务器上,可能在环境的配置上就要花费不少的时间了。又或者比如你用的MySQL
,放在以前每次重装一次系统或者换一个环境,你就要把你的环境重装一次,东西越多花费的时间越多。
而使用Docker
,你只需要一条命令,你就可以在你的Ubuntu
上再运行一个“新的环境”,当然这一个环境还是基于你现有的环境的,也就是说实际上共享的还是同一套资源,但是这套环境里面已经有了你需要的东西。
你需要MySQL
,那就安装一个带MySQL
的镜像, 然后启动一个容器。
你需要Redis
,那就安装一个带Redis
的镜像, 然后启动一个容器。
你需要..., 那就..., 然后...。
当然你也可以在别人的基础之上,对容器进行修改后,比如添加了一些你自己的软件或修改配置文件,然后再commit
,这样你就把这个容器制作成了一个镜像,以后你可以用这个镜像创建出N个一模一样的容器。
比如你要学习搭载Redis
集群,那么你可以下载一个Redis
的镜像,然后启动容器,把集群的配置设置好后,提交这个容器生成镜像,再根据这个镜像运行出6个或更多容器,这样一个集群就搭起来了。
而且Docker
佔用的資源很小。
習慣沉默2017-04-25 09:05:25
簡而言之,Docker能為你做的事情就是:相比其他技術,它能讓更多數量的應用程式在同一硬體上運行;它讓開發人員易於快速構建可隨時運行的容器化應用程序;它大大簡化了管理和部署應用程式的任務。
滿天的星座2017-04-25 09:05:25
平常設定環境安裝各種依賴然後再跑程式碼很麻煩吧?依賴安裝配置過程中出錯的話程式碼還不一定能跑得起來,而docker就是一個虛擬化工具,能夠把整個環境打包成一個鏡像然後分發,要用時就把那個鏡像拉下來然後運行就好,類似於下載一個虛擬機器鏡像然後本地運行。