2016-07-26 3 views
2

Docker as providerhow to provision a VM using Dockerを使用するVMを起動する方法については、Vagrantのマニュアルで説明しています。ただし、両方を組み合わせて使用​​できるかどうかについての情報はありません。DockerでVagrantをプロバイダANDプロダクタとして実行できますか?

私がこれをやりたい理由は、私がDocker経由で展開されるPython Webアプリケーションを開発しているからです。いくつかの依存関係(システムとDockerファイルを介してインストールされたPythonライブラリ)と、別のコンテナで実行されているRedisデータベースが付属しています。

私は今、さらに容器(例えばRedisの)でこのマシンを、私はPython /のWebapp Dockerfileに基づいてドッカープロバイダとベイグラントVMを作成し、提供することができれば、その後、

  • 私は非常に高速であるVMを持っているでしょう
  • は、私は、デバッグなど、これが機能するために

、コード補完からこのマシンと利益にPythonインタプリタに接続するためにPyCharm IDE's remote interpreter functionalityを使用することができ、スピンアップ、まだほぼ完全に私のデプロイメント環境を模倣するために、 DockerベースのVMがDockerプロビジョナを介してより多くのコンテナを回転できるように、おそらくDocker in Dockerのようなものが必要になります。

このアプローチは一般的に可能ですか、またはどこかで利用可能な実例がありますか?そうでない場合、それを達成するための良い選択肢は何でしょうか?

+0

ドッカーを実行するVMが必要ですか? – CMPS

答えて

0

DockerでVagrantをプロバイダANDプロビジョナリとして実行することはできますか?

はいあなたがすることができます - 私は、最新の放浪のバージョンでチェックしませんでしたが、これは浮浪者まで働いていた1.8.1

あなたは基本的にしたいことは、あなたがしたい場合はVM(実行中のUbuntuまたはcoreOSをスピンすることです速くスピンして最小限に走る)、複数のドッカーコンテナを走らせる。

迷惑メール・ドッカー・プロバイダを実行しても、独自のVagrantファイルを管理できます。

ので、あなたがメインVagrantfile(通常はプロジェクトのルートとして座っ)

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

Vagrant.configure(2) do |config| 
    ... 
    config.vm.provider "docker" do |docker| 
    docker.vagrant_vagrantfile = "host/Vagrantfile" 
    end 
    ... 
end 

を必要とし、あなたにhost/Vagrantfileあなたは

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

# Create and configure the VM(s) 
Vagrant.configure(2) do |config| 

    config.vm.hostname = "docker-host" 

    # Spin up your own box (or one from Atlas) 
    # and then provision it with Docker 
    config.vm.box = "ubuntu/trusty64" 
    config.vm.provision "docker" 

    ... 
end 

のようなものを持っているでしょう、これはどの別の典型的なVagrantfileです最小限のOSが必要な場合はubuntu、centos、またはcoreOSになることができるボックスを指し、ドッカーをプロビジョニングします(つまり、ボックスにインストールされていない場合はドッカーをインストールします)。

OKこの段階では、dockerのプロバイダを持つVMを持っているプロバイダが、ドッカーをプロビジョニングするVMを指しています。今、あなたはあなたの2つのコンテナあなたの主なVagrantfile追加します2つのコンテナで

、セットアップにこれはあなたの2ドッカプロバイダ/コンテナパイソンとRedisのをスピンアップします

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

Vagrant.configure(2) do |config| 
    ... 
    config.vm.provider "docker" do |docker| 
    docker.vagrant_vagrantfile = "host/Vagrantfile" 
    end 
    ... 
    config.vm.define "python" do |python| 
    python.vm.provider "docker" do |docker| 
     ... 
     docker.image = "xxx" 
     docker.ports = [80:80] 
     docker.name = "python-system" 
    end 
    end 
    config.vm.define "redis" do |redis| 
    redis.vm.provider "docker" do |docker| 
     ... 
     docker.image = "xxx" 
     docker.ports = [80:80] 
     docker.name = "redis" 
    end 
    end 
end 

ような何かをしたいです。

関連する問題