我有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
示例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
这是官方Ubuntu Docker注册表用于构建的Dockerfile:
当我运行vagrant时,docker容器总是立即存在,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 :(得分:0)
我正在使用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
使用此命令,一切正常。仅供我使用non-root access
的Docker