2014-09-12 57 views
0

基本上,我想通過使用mongodump和mongorestore將其與Docker一起旋轉後初始化一個mongo數據庫。 mongorestore失敗,因爲它無法連接到容器的主機名。任何幫助,將不勝感激。我試過localhost,而且它也不起作用。如何在啓動Docker時連接到當前容器?

我Dockerfile:

FROM mongo 

RUN mongodump --host merchdev02.bcinfra.net --port 27017 --db ap 
RUN mongorestore --host $(hostname) --port 27017 --db ap 

錯誤:

A Docker command executed by Vagrant didn't complete successfully! 
The command run along with the output from the command is shown 
below. 

Command: "docker" "build" "/mnt/docker_build_52c7cc3c5608022927f471820455e02b" 

Stderr: Sending build context to Docker daemon 26.62 kB 
Sending build context to Docker daemon 
2014/09/12 12:32:46 The command [/bin/sh -c mongorestore --host $(hostname) --port 27017 --db ap] returned a non-zero code: 255 

Stdout: Step 0 : FROM mongo 
---> 37ee18fca8d2 
Step 1 : RUN mongodump --host merchdev02.bcinfra.net --port 27017 --db ap 
---> Using cache 
---> 176612e279d2 
Step 2 : RUN mongorestore --host $(hostname) --port 27017 --db ap 
---> Running in 365bd8348ed1 
2014-09-12T12:32:46.444+0000 warning: Failed to connect to 172.17.0.25:27017, reason: errno:111 Connection refused 
couldn't connect to [5d533df6cbc4:27017] couldn't connect to server 5d533df6cbc4:27017 (172.17.0.25), connection attempt failed 

我用流浪來引導多克。我Vagrantfile:

VAGRANTFILE_API_VERSION = "2" 

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 

    config.vm.provider "virtualbox" do |v| 
    v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] 
    end 
    # Setup docker 
    config.vm.define "mongo" do |v| 
    v.vm.synced_folder "logs", "/var/log/mongodb" 
    v.vm.provider "docker" do |d| 
     d.vagrant_vagrantfile = "../host-vm/Vagrantfile" 
     d.build_dir = "." 
     d.ports = ['27017:27017'] 
     d.remains_running = true 
     d.name = "mongo" 
    end 
    end 
end 

最後我的主機VM的Docker容器使用方法:

VAGRANTFILE_API_VERSION = "2" 

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
    config.vm.box = "hashicorp/precise64" 
    config.vm.provision "docker" 
    config.vm.provision "shell", inline: 
    "ps aux | grep 'sshd:' | awk '{print $2}' | xargs kill" 

    config.vm.network :forwarded_port, guest: 27017, host: 27017 
end 
+0

你試過'mongorestore --host 127.0.0.1 --port 27017 --db ap'嗎? – 2014-09-12 17:01:58

+0

@ BenWhaley是的。沒有運氣。 – 2014-09-12 17:56:05

+1

你確定Mongo正在運行嗎?我不認爲這會是,它在Dockerfile – 2014-09-12 18:00:15

回答

1

蒙戈容器套的mongod作爲其命令CMD["mongod"]這意味着它不運行,直到你真正做docker run ...

我通常總是在腳本容器中包含一個腳本ADD init.sh來處理任何在構建時沒有意義的配置任務。

+0

init.sh會自動執行還是必須添加CMD才能在啓動時運行它? – 2014-09-12 19:10:08

+0

您必須添加CMD – 2014-09-12 20:29:31

相關問題