2014-12-04 4 views
0

나는 Vagrant 1.6.5 및 Docker 버전 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 공식 우분투 도커 레지스트리에서 구축하는 데 사용하는 것입니다 :

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

내가 방랑하면, 의사 ker 컨테이너는 항상 즉시 존재하며 docker ps -a의 출력은 우분투 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 

내가 누락 된 것이 있습니까? 내가 우분투 이미지를 사용할 수 있어야하고 내 자신의 CMD 옵션을 무시하고 임의의 명령을 실행할 수 있어야한다고 생각합니까?

감사 플로

답변

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 

이 명령으로 모든 것이 잘 작동합니다. 참고하시기 바랍니다. 나는 usr Docker with non-root access