Поставщик и провайдер Vagrant docker, не использующий cmd: вариант

У меня есть Vagrant 1.6.5 и Docker версии 1.3.2.

Если я использую либо провайдера Docker, либо поставщика, я не могу переопределить CMD своим собственным.

Пример конфигурации провайдера, который я пробовал:

config.vm.provider :docker do |d|
   d.image = 'ubuntu'
   d.remains_running = true
   d.has_ssh = false
   d.ports = ["8080:8080"]
   d.volumes = ["/tmp/:/tmp"]
   d.cmd = ["ping", "-c 50", "127.0.0.1"]
end

Пример конфигурации поставщика, который я пробовал:

config.vm.provision "docker" do |d|
    d.run "ubuntu",
    args: '-v /tmp:/tmp -p 2222:22',
    cmd: "/bin/sh -c 'ping -c 10 127.0.0.1; touch /tmp/hello_world'"
end

Это Dockerfile, который официальный реестр Ubuntu Docker использует для сборки:

https://github.com/tianon/docker-brew-ubuntu-core/blob/b3d5822d7fa42d27cbf32e5fcc0b97b02c007618/trusty/Dockerfile

Когда я запускаю vagrant, контейнер докеров всегда существует немедленно, а вывод docker ps -a всегда просто показывает, что команда соответствует той, которая указана в Dockerfile ubuntu.

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                          PORTS               NAMES
bb6922063bfe        ubuntu:14.04        "/bin/bash"            12 minutes ago      Exited (0) 6 seconds ago                            root_default_1417660734

Я что-то упускаю? Думаю, я должен иметь возможность использовать образ Ubuntu и переопределять параметры CMD своими собственными для запуска произвольных команд?

спасибо фло


person Flo Woo    schedule 04.12.2014    source источник


Ответы (1)


Я использую Vagrant 1.6.5 и Docker 1.3.1 и этот файл Vagrant:

Vagrant.configure("2") do |config|
  config.vm.provider :docker do |d|
     d.image = 'ubuntu'
     d.remains_running = true
     d.has_ssh = false
     d.ports = ["8080:8080"]
     d.volumes = ["/tmp/:/tmp"]
     d.cmd = ["ping", "-c 51", "127.0.0.1"]
  end
end

с помощью следующей команды:

vagrant up --provider=docker

Мой вывод:

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                    NAMES
700bea5ec611        ubuntu:latest       "ping '-c 50' 127.0.   5 minutes ago       Up 2 seconds        0.0.0.0:8080->8080/tcp   vagrant_default_1417725827   

У меня все отлично работает с этой командой. К вашему сведению, я использую Docker с доступом без полномочий root.

person joh.scheuer    schedule 04.12.2014