在Vagrant上安装Docker的最佳方法

pka*_*mol 7 vagrant docker vagrant-provision

我要创建几个已docker预安装的VM 。

最好/推荐的方法是什么?

a)让Docker Provisioner做一些虚拟的事情,只是为了安装Docker,例如

  mymachine.vm.provision "docker" do |docknode|
      # do something pointless
  end
Run Code Online (Sandbox Code Playgroud)

b)通过外壳配置程序脚本运行docker安装?

mymachine.vm.provision "shell", path: "docker-installation-script.sh"
Run Code Online (Sandbox Code Playgroud)

c)使用预装Docker随附的Vagrant映像?

mlo*_*kot 7

如果您正在使用具有Docker 配置器支持的最新 Vagrant (例如,以下步骤使用 2.2.6 进行了测试),那么您可以使用非常简单的一两个单行程序安装 Docker,而无需d.run 或类似的 hacks

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
Run Code Online (Sandbox Code Playgroud)

运行vagrant provisionvagrant 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...
Run Code Online (Sandbox Code Playgroud)

最后,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
Run Code Online (Sandbox Code Playgroud)


Lev*_*von 7

这里更加用户友好Vagrantfile(在 Vagrant 2.2.7 上测试)

Vagrant.configure("2") do |config|

  config.vm.box = "ubuntu/bionic64"

  # require plugin https://github.com/leighmcculloch/vagrant-docker-compose
  config.vagrant.plugins = "vagrant-docker-compose"

  # install docker and docker-compose
  config.vm.provision :docker
  config.vm.provision :docker_compose

  config.vm.provider "virtualbox" do |vb|
    vb.customize ["modifyvm", :id, "--ioapic", "on"]
    vb.customize ["modifyvm", :id, "--memory", "2048"]
    vb.customize ["modifyvm", :id, "--cpus", "2"]
  end

end

Run Code Online (Sandbox Code Playgroud)

如此处所述您可以要求从内部安装插件Vagrantfile

这是步骤

$ vagrant up
Vagrant has detected project local plugins configured for this
project which are not installed.

  vagrant-docker-compose
Install local plugins (Y/N) [N]: y
Installing the 'vagrant-docker-compose' plugin. This can take a few minutes...
Fetching: vagrant-docker-compose-1.5.1.gem (100%)
Installed the plugin 'vagrant-docker-compose (1.5.1)'!

Vagrant has completed installing local plugins for the current Vagrant
project directory. Please run the requested command again.

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu/bionic64'...
...
==> 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: Downloaded Docker Compose 1.24.1 has SHA256 signature cfb3...
    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
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-88-generic x86_64)
vagrant@ubuntu-bionic:~$ docker -v
Docker version 19.03.8, build afacb8b7f0
vagrant@ubuntu-bionic:~$ docker-compose -v
docker-compose version 1.24.1, build 4667896b
Run Code Online (Sandbox Code Playgroud)


小智 0

我将使用docker-machine作为“您可以使用 Machine 在本地 Mac 或 Windows 机器、公司网络、数据中心或 Azure、AWS 或 Digital Ocean 等云提供商上创建 Docker 主机”。这是启动内置 Docker 的虚拟机的一种简单快捷的方法。