激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Redis - 在Mac OS上安裝Vagrant和Docker的教程

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

2019-10-23 16:42goldensun Redis

這篇文章主要介紹了在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安裝:
 

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

Cask安裝:
 

brew tap caskroom/homebrew-cask 
brew install brew-cask

Vagrant 和 VirtualBox安裝:

brew cask install virtualbox 
brew cask install vagrant


Vagrant文件

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

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

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

VAGRANTFILE_API_VERSION = "2"Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
 config.vm.box = "hashicorp/precise64"
 config.vm.provision "docker"
 config.vm.provision "shell", inline:
  "ps aux | grep 'sshd:' | awk '{print $2}' | xargs kill"
 
 config.vm.network :forwarded_port, guest: 6379, host: 6379
 config.vm.network :forwarded_port, guest: 5432, host: 5432
 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的主要內容:

 

VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
 
 config.vm.define "redis" do |v|
  v.vm.provider "docker" do |d|
   d.image = "dockerfile/redis"
   d.volumes = ["/var/docker/redis:/data"]
   d.ports = ["6379:6379"]
   d.vagrant_vagrantfile = "./Vagrantfile.proxy"
  end
 end
 
 config.vm.define "elasticsearch" do |v|
  v.vm.provider "docker" do |d|
   d.image = "dockerfile/elasticsearch"
   d.ports = ["9200:9200"]
   d.vagrant_vagrantfile = "./Vagrantfile.proxy"
  end
 end
 
 config.vm.define "postgres" do |v|
  v.vm.provider "docker" do |d|
   d.image = "paintedfox/postgresql"
   d.volumes = ["/var/docker/postgresql:/data"]
   d.ports = ["5432:5432"]
   d.env = {    USER: "root",    PASS: "abcdEF123456",    DB: "root"
   }
   d.vagrant_vagrantfile = "./Vagrantfile.proxy"
  end
 endend

這個文件定義了三個容器: Redis , Elasticsearch, 和 Postgres 帶有圖片dockerfile/redisdockerfile/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文件相同的目錄內,你可以運行:
 

vagrant up --provider=docker

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

可以查看Docker容器的狀態:
 

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>,ID為proxy的ID。建議不要手動改變這個proxy VM,使用一個Chef(或類似的)腳本,這樣改變可以更容易的測試和分布。

性能

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

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


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

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

延伸 · 閱讀

精彩推薦
  • Redis詳解Redis復制原理

    詳解Redis復制原理

    與大多數db一樣,Redis也提供了復制機制,以滿足故障恢復和負載均衡等需求。復制也是Redis高可用的基礎,哨兵和集群都是建立在復制基礎上實現高可用的...

    李留廣10222021-08-09
  • Redisredis 交集、并集、差集的具體使用

    redis 交集、并集、差集的具體使用

    這篇文章主要介紹了redis 交集、并集、差集的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    xiaojin21cen10152021-07-27
  • Redisredis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    redis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    這篇文章主要給大家介紹了關于redis中如何使用lua腳本讓你的靈活性提高5個逼格的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具...

    一線碼農5812019-11-18
  • Redisredis實現排行榜功能

    redis實現排行榜功能

    排行榜在很多地方都能使用到,redis的zset可以很方便地用來實現排行榜功能,本文就來簡單的介紹一下如何使用,具有一定的參考價值,感興趣的小伙伴們...

    乘月歸5022021-08-05
  • RedisRedis 事務知識點相關總結

    Redis 事務知識點相關總結

    這篇文章主要介紹了Redis 事務相關總結,幫助大家更好的理解和學習使用Redis,感興趣的朋友可以了解下...

    AsiaYe8232021-07-28
  • RedisRedis如何實現數據庫讀寫分離詳解

    Redis如何實現數據庫讀寫分離詳解

    Redis的主從架構,能幫助我們實現讀多,寫少的情況,下面這篇文章主要給大家介紹了關于Redis如何實現數據庫讀寫分離的相關資料,文中通過示例代碼介紹...

    羅兵漂流記6092019-11-11
  • RedisRedis全量復制與部分復制示例詳解

    Redis全量復制與部分復制示例詳解

    這篇文章主要給大家介紹了關于Redis全量復制與部分復制的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Redis爬蟲具有一定的參考學習...

    豆子先生5052019-11-27
  • RedisRedis的配置、啟動、操作和關閉方法

    Redis的配置、啟動、操作和關閉方法

    今天小編就為大家分享一篇Redis的配置、啟動、操作和關閉方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    大道化簡5312019-11-14
主站蜘蛛池模板: 久久精品国产99国产精品亚洲 | 久久艹综合 | 免费国产视频在线观看 | 免费看黄色一级大片 | 免费国产在线视频 | 91麻豆精品国产91久久久无需广告 | 成人性生活视频 | 久久久国产精品免费观看 | 欧美一区二区三区免费电影 | 久久久成人999亚洲区美女 | 天天草天天干天天射 | 国产成人77亚洲精品www | 五月激情久久 | 国产一区网址 | 最新中文字幕第一页视频 | 在线成人av观看 | 亚洲无av | 成人一级片毛片 | 看国产精品 | 久草免费资源视频 | 国产视频在线免费观看 | 成人毛片100部免费观看 | 亚洲欧美国产高清 | 日韩视频一区二区三区四区 | 亚洲午夜精选 | 成人性生活视频在线观看 | 91 在线视频观看 | 国产成人av一区二区 | 国产无遮挡一区二区三区毛片日本 | www.成人免费视频 | 久久精品视频在线免费观看 | 国产69精品99久久久久久宅男 | 免费的性生活视频 | www.av520 | 亚洲四播房 | 美女黄网站免费观看 | 国产久草视频在线 | 在线观看第一区 | 久久精品女人天堂av | 日韩在线观看免费 | 日本a在线观看 |