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イメージを使用しますか?
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
私もこの質問への答えを探していましたが、StackOverflowで この答え を見つけました。あなたは正しかったようです。最新バージョンのDockerをインストールするには、ダミーイメージを実行するのが最善の方法です。
config.vm.provision "docker" do |d|
d.run "hello-world"
end
From このStackOverflowの回答 :特定のバージョンのDockerをインストールする場合は、Dockerプロビジョナー(プロビジョナーが順番に実行される)の前にシェルプロビジョナーを実行して、特定のバージョンのDockerをインストールする必要があります。
docker-machine as "Machineを使用して、ローカルのMacまたはWindowsボックス、会社のネットワーク、データセンター、またはAzure、AWSなどのクラウドプロバイダーにDockerホストを作成できます。 、またはデジタルオーシャン」。これは、Dockerを内部に使用してVMを起動する簡単で迅速な方法です。
公式の説明はこちらです: 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