2014-12-04 80 views
0

我有Vagrant 1.6.5和碼頭版本1.3.2。Vagrant碼頭供應商和供應商不使用CMD:選項

如果我使用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 

例provisoner配置我想:

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官方泊塢註冊表使用從建:

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

當我跑迷路時,文檔ker容器總是立即存在,並且docker ps -a的輸出始終只顯示該命令是在Ubuntu Dockerfile中指定的命令。

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選項來運行我認爲的任意命令?

感謝 FLO

回答

0

我使用的流浪1.6.5和1.3.1泊塢窗和這個流浪的文件:

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 

使用此命令,一切正常。 FYI I usr Docker with non-root access