亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Redis > 正文

在Mac OS上安裝Vagrant和Docker的教程

2020-03-17 12:43:05
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了在Mac OS上安裝Vagrant和Docker的教程,并安裝和設置Postgres和Elasticsearch和Redis,需要的朋友可以參考下

當聽到很多人在說Docker是多么多么的棒,很多新潮的孩子都在使用它時,我決定在我的開發環境上也來嘗試下。在下面的這篇文章中,我將講解在Mac OS X怎樣建立Postgres,Elasticsearch和Redis。

什么是Docker

Docker用輕量容器把一個APP從它運行的OS中隔離開。它把APP放入到一個孤立的盒子中,對外只呈現需要使用的文件夾和端口。

這樣,基于建立和使用APP的容器是可重用,共享的。目前,在Docker集中已經存在了15,000種以上的容器。Docker就像一個商店的存儲庫,當你需要建立一個你想要的APP時,你首先去挑出它,然后把它下載下來打開即可。

在OS X上安裝Docker

Docker不是天生就能運行在OS X上的,它需要一個包含LINUX容器的Linux內核。因此,當你想像我一樣要安裝OS X時,你將需要一套虛擬器。

不要使用boot2docker

當試圖讓docker工作時,我發現“非常容易”安裝。這將使用一個稱之為boot2docker的工具,該工具是一個像virtualBox的虛擬機上的瘦包裝。

我馬上發現,這個工具有一些嚴重的問題,例如:在一個穩定狀態下將會終止任何獲取Docker的進程。我不想在這方面浪費太多的體力和腦細胞,所以我繼續尋找了一個可替代的解決方案。

使用Vargrant

自從Vagrant的1.6版本之后,已經集成了支持Docker的配套組件。Vargrant是一種類似于VirtualBox的虛擬軟件,它采用一種聲明Ruby DSL的方法來描述你的環境。

我非常喜歡這種定義虛擬環境的方式,因為當你的環境發生故障時,你可以記錄下來當時的信息,再次開始使用,而不用遺漏下大量的類似環境變量的信息。

安裝Stuff

首先,讓我們瀏覽下我們需要安裝的各種事宜。

Homebrew安裝:

 

 
  1. ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)" 

Cask安裝:

 

 
  1. brew tap caskroom/homebrew-cask 
  2. brew install brew-cask 

Vagrant 和 VirtualBox安裝:

 

 
  1. brew cask install virtualbox  
  2. brew cask install vagrant 

Vagrant文件

一個vagrant文件來描述一個使用Ruby DSL虛擬機環境的需求。當描述Docker容器時,Vagrant使每一個容器都好像在使用自己獨有的虛擬機一樣。事實上這是一個假象,因為每一個Docker容器實際上是允許在各種的代理虛擬機上的。

因此,兩個vagrant文件是非常必須的,一個文件是用來定義代理虛擬機(Provisioner),另外一個文件是用來定義Docker容器的(Providers)。

代理虛擬Vagrant文件

代理虛擬Vagrant文件被叫做:Vagrantfile.proxy

 

 
  1. VAGRANTFILE_API_VERSION = "2"Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|  
  2. config.vm.box = "hashicorp/precise64" 
  3. config.vm.provision "docker" 
  4. config.vm.provision "shell", inline: 
  5. "ps aux | grep 'sshd:' | awk '{print $2}' | xargs kill" 
  6.  
  7. config.vm.network :forwarded_port, guest: 6379, host: 6379 
  8. config.vm.network :forwarded_port, guest: 5432, host: 5432 
  9. config.vm.network :forwarded_port, guest: 9200, host: 9200end 

這使用hashicorp/precise64 Ubuntu 12.04的64位來處理代理虛擬機。它也提供Docker和一些神奇的shell命令來讓Docker工作。

最后的事情就是設置轉發端口了。它使用config.vm.network來為Redis, Elasticsearch 和Postgres來進行配置,用代理虛擬機映射到OS X。

Docker 容器的 Vagrant 文件

這是Vagrantfile的主要內容:

 

 
  1. VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
  2.  
  3. config.vm.define "redis" do |v| 
  4. v.vm.provider "docker" do |d| 
  5. d.image = "dockerfile/redis" 
  6. d.volumes = ["/var/docker/redis:/data"
  7. d.ports = ["6379:6379"
  8. d.vagrant_vagrantfile = "./Vagrantfile.proxy" 
  9. end 
  10. end 
  11.  
  12. config.vm.define "elasticsearch" do |v| 
  13. v.vm.provider "docker" do |d| 
  14. d.image = "dockerfile/elasticsearch" 
  15. d.ports = ["9200:9200"
  16. d.vagrant_vagrantfile = "./Vagrantfile.proxy" 
  17. end 
  18. end 
  19.  
  20. config.vm.define "postgres" do |v| 
  21. v.vm.provider "docker" do |d| 
  22. d.image = "paintedfox/postgresql" 
  23. d.volumes = ["/var/docker/postgresql:/data"
  24. d.ports = ["5432:5432"
  25. d.env = { USER: "root", PASS: "abcdEF123456", DB: "root" 
  26. d.vagrant_vagrantfile = "./Vagrantfile.proxy" 
  27. end 
  28. endend 

這個文件定義了三個容器: Redis , Elasticsearch, 和 Postgres 帶有圖片dockerfile/redis,dockerfile/elasticsearch和paintedfox/postgresql。

每個文件定義 vagrant_vagrantfile 作為 proxy VM 文件,這使得它們在同一個 proxy 虛擬機上運行。

Redis 和 Postgres 的 volumes 定義是為了它們的信息可以存儲在 proxy VM 上,而不是在容器中。這也是容器可以更刪除或升級而數據不會丟失的原因。下一步是映射這些文件從proxy VM 到 OS X ,但是沒必要讓其運轉著。

每個容器上的 ports 定義哪個端口轉到 proxy VM 。這些需要匹配 proxy VM 到 OS X 的端口。

Postgres 容器也定義了需要設置它的服務器的環境變量。這些可以用來在OS X 里設置缺省的Postgres 服務器,通過設置環境變量 PGHOST=localhost PGUSER=root PGPASSWORD=abcdEF123456 來實現。

使用Vagrant工作

在你的Vagrant文件相同的目錄內,你可以運行:

 

 
  1. vagrant up --provider=docker 

第一次運行這個時,Vagrant將下載然后啟動proxy VM,然后下載并啟動Docker容器。在這些初始化下載之后每次運行Vagrant都將重復使用現有的圖片。

可以查看Docker容器的狀態:

 

 
  1. vagrant status 

應該輸出一些東西類似:

復制代碼代碼如下:

Current machine states:

redis running (docker)

elasticsearch running (docker)

db running (docker)

要測試Docker容器是否正確運行,可以使用 Redis 和 Postgres 客戶端, 和 curl for Elasticsearch。只需要檢查redis-cli和psql到服務器的連接,和curl http://localhost:9200響應。

如果需要連接到proxy VM(非常有助于調試),運行vagrant global-status,這將列出所有VM,包括proxy。然后調用vagrant ssh ,ID為proxy的ID。建議不要手動改變這個proxy VM,使用一個Chef(或類似的)腳本,這樣改變可以更容易的測試和分布。

性能

使用虛擬化時,第一個問題總是會問“性能的影響有多少?”。要找出性能影響是多么的糟糕,我的同事和我都做了一個Postgres,在相同的硬件上做了Elasticsearch 和 Redis 加強測試。唯一的區別是一個測試有本機安裝的軟件而另一個有Docker自定義容器。帶有本機軟件的運行了2分鐘,而帶有容器的運行了3分鐘。

這個性能影響并不像我想象的那樣小,甚至可能會更糟。即使這樣,我將繼續使用Docker做開發,但并不推薦大家將它作為所有開發環境問題的靈丹妙藥。

注意:一些其他使用Vagrant 和 Docker的限制在 這里 列出

總結

我還看不到"Vagrant with Docker"的路在哪里。不過,在看過可能的情況后,我不禁思考它可以用于什么其他地方。另外,它是我遇到過的最好玩的虛擬化,樂趣就在于編程。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
九九热精品在线| 色黄久久久久久| 国产精品久久久久高潮| 亚洲国产天堂久久综合网| 日本精品一区二区三区在线| 成人美女av在线直播| 国产精品吹潮在线观看| 成人精品一区二区三区| 国产91久久婷婷一区二区| 成人女保姆的销魂服务| 久久久亚洲国产| 日韩欧美成人精品| 久久久这里只有精品视频| 97福利一区二区| 国产欧美日韩中文字幕在线| 精品国产一区二区三区久久久| 精品国产一区二区三区久久狼5月| 97精品国产97久久久久久春色| 日韩在线欧美在线国产在线| 久久久免费高清电视剧观看| 久久视频免费观看| 欧美精品九九久久| 欧美精品video| 欧美精品免费在线观看| 欧美一区三区三区高中清蜜桃| 岛国av一区二区在线在线观看| 久久精品亚洲热| 久久999免费视频| 国产一区二区美女视频| 欧美国产亚洲精品久久久8v| 久久免费精品日本久久中文字幕| 亚洲第一视频网站| 亚洲午夜精品久久久久久性色| 68精品国产免费久久久久久婷婷| 日韩欧美精品网站| 国产日韩欧美91| 日韩视频免费在线观看| 欧美香蕉大胸在线视频观看| 国产成人精品电影久久久| 日韩中文字幕免费视频| 狠狠躁天天躁日日躁欧美| 成人黄色大片在线免费观看| 国产精品旅馆在线| 色午夜这里只有精品| 精品国产网站地址| 韩剧1988在线观看免费完整版| 中日韩午夜理伦电影免费| 麻豆成人在线看| 成人激情av在线| 欧美日韩精品在线| 精品成人av一区| 国产精品a久久久久久| 91在线观看免费高清| 欧美在线xxx| 亚洲综合日韩中文字幕v在线| 久久久综合av| 日日狠狠久久偷偷四色综合免费| 日韩精品免费一线在线观看| 日韩经典中文字幕在线观看| 国产精品美女视频网站| 日韩在线视频观看正片免费网站| 国模精品视频一区二区三区| 成人www视频在线观看| 69视频在线播放| 欧美高清第一页| 国产精品草莓在线免费观看| 亚洲欧美中文日韩在线v日本| 亚洲欧美激情视频| 国产精品国产三级国产aⅴ浪潮| 91在线免费看网站| 久久精品国产视频| 成人黄色片在线| 欧美激情久久久| 亚洲毛片在线免费观看| 欧美www视频在线观看| 欧美肥婆姓交大片| 视频一区视频二区国产精品| 亚洲福利精品在线| 精品激情国产视频| 国产在线精品成人一区二区三区| 久久91亚洲精品中文字幕| 欧美大片大片在线播放| 欧美久久精品午夜青青大伊人| 欧美性猛交xxxx黑人| 青青草成人在线| 久久夜色精品国产欧美乱| 亲爱的老师9免费观看全集电视剧| 国产丝袜一区二区三区| 成人在线播放av| 精品视频在线导航| 久久综合免费视频影院| 久久综合电影一区| 国产第一区电影| 久久91亚洲精品中文字幕| 国产精品嫩草视频| 狠狠躁18三区二区一区| 欧美日韩国产黄| 欧美日韩国产区| 欧美激情女人20p| 亚洲人成网站999久久久综合| 久久亚洲综合国产精品99麻豆精品福利| 热久久这里只有精品| 久久久精品一区二区| 91老司机精品视频| 久久久999精品| 精品丝袜一区二区三区| 国产亚洲精品久久久久久| 91亚洲精华国产精华| 国产91色在线播放| 欧美激情一级精品国产| 成人激情免费在线| 国产精品中文字幕在线观看| 国产精品高清在线| 国产日韩在线观看av| 久久99久久久久久久噜噜| 精品中文字幕乱| 国产+成+人+亚洲欧洲| 国产欧美一区二区三区在线| 国产精品美女av| 日韩在线播放视频| 国产91成人video| 欧美性猛交xxxx久久久| 九九精品在线播放| 大荫蒂欧美视频另类xxxx| 91在线高清视频| 久久精品视频播放| 亚洲最新av在线网站| 色一区av在线| 日韩精品中文字幕有码专区| 92国产精品久久久久首页| 成人福利在线观看| 久久久精品久久久| 91精品国产综合久久久久久久久| 亚洲自拍偷拍网址| 亚洲欧洲免费视频| 91麻豆国产语对白在线观看| 久久久久久久久久久久久久久久久久av| 日韩精品在线免费观看| 日韩精品999| 成人免费网站在线观看| 亚洲欧美日韩国产成人| 久久久精品一区二区三区| 黄色成人在线播放| 亚洲高清在线观看| 国产性色av一区二区| 亚洲网站在线看| 亚洲精选在线观看| 亚洲综合中文字幕在线| 精品成人乱色一区二区| 日韩精品免费一线在线观看| 日韩精品视频在线观看网址| 国产成人一区二| 亚洲成人精品视频| 久久精品国产一区二区电影| 国产激情999| 欧美日韩一区二区三区| 欧美专区国产专区| 九九精品视频在线观看| 久久精品福利视频| 色综合久久天天综线观看| 97人人模人人爽人人喊中文字| 自拍偷拍亚洲一区| 2018中文字幕一区二区三区| 国产在线拍揄自揄视频不卡99|