web-dev-qa-db-ja.com

DockerをVagrantにインストールする最良の方法

dockerがプリインストールされているVMをいくつか作成したいと思います。

これを行うための最良の/推奨される方法は何ですか?

a)Dockerがインストールされるように、Dockerプロビジョナーにダミーの処理を実行させます。

  mymachine.vm.provision "docker" do |docknode|
      # do something pointless
  end

b)シェルプロビジョナースクリプトを介してDockerインストールを実行しますか?

mymachine.vm.provision "Shell", path: "docker-installation-script.sh"

c)DockerがプリインストールされているVagrantイメージを使用しますか?

7
pkaramol

Dockerプロビジョナー サポート付きのかなり最近のVagrantを使用している場合(たとえば、以下の手順は2.2.6を使用してテストされています)、-なしで非常に単純な1つまたは2つのワンライナーでDockerをインストールできます。 d.runまたは同様のハック

Vagrant.configure(2) do |config|
  config.vm.box = "generic/ubuntu1904"

  # Install Docker
  config.vm.provision :docker

  # Install Docker Compose
  # First, install required plugin https://github.com/leighmcculloch/vagrant-docker-compose:
  # vagrant plugin install vagrant-docker-compose
  config.vm.provision :docker_compose

end

実行vagrant provisionまたはvagrant upそしてこの出力を観察してください:

==> default: Running provisioner: docker...
    default: Installing Docker onto machine...
==> default: Running provisioner: docker_compose...
    default: Checking for Docker Compose installation...
    default: Getting machine and kernel name from guest machine...
    default: Downloading Docker Compose 1.24.1 for Linux x86_64
    default: Uploading Docker Compose 1.24.1 to guest machine...
    default: Installing Docker Compose 1.24.1 in guest machine...
    default: Symlinking Docker Compose 1.24.1 in guest machine...

最後に、 vagrant sshをVMに移動し、デプロイされたDockerインフラストラクチャのバージョンを確認します。

$ docker --version
Client: Docker Engine - Community
 Version:           19.03.3
 API version:       1.40
 Go version:        go1.12.10
 Git commit:        a872fc2f86
 Built:             Tue Oct  8 01:00:44 2019
 OS/Arch:           linux/AMD64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.3
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.10
  Git commit:       a872fc2f86
  Built:            Tue Oct  8 00:59:17 2019
  OS/Arch:          linux/AMD64
  Experimental:     false
 containerd:
  Version:          1.2.10
  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
 runc:
  Version:          1.0.0-rc8+dev
  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
6
mloskot

私もこの質問への答えを探していましたが、StackOverflowで この答え を見つけました。あなたは正しかったようです。最新バージョンのDockerをインストールするには、ダミーイメージを実行するのが最善の方法です。

  config.vm.provision "docker" do |d|
      d.run "hello-world"
  end

From このStackOverflowの回答 :特定のバージョンのDockerをインストールする場合は、Dockerプロビジョナー(プロビジョナーが順番に実行される)の前にシェルプロビジョナーを実行して、特定のバージョンのDockerをインストールする必要があります。

3
tdensmore

docker-machine as "Machineを使用して、ローカルのMacまたはWindowsボックス、会社のネットワーク、データセンター、またはAzure、AWSなどのクラウドプロバイダーにDockerホストを作成できます。 、またはデジタルオーシャン」。これは、Dockerを内部に使用してVMを起動する簡単で迅速な方法です。

0
Miguel A. C.

公式の説明はこちらです: https://www.vagrantup.com/docs/provisioning/docker.html

例えば:

Vagrant.configure("2") do |config|
  config.vm.provision "docker" do |d|
    d.build_image "/vagrant/app"
  end
end

または

Vagrant.configure("2") do |config|
  config.vm.provision "docker" do |d|
    d.run "rabbitmq"
  end
end
0
frops