启动Docker时如何连接到当前容器?

基本上,我试图通过使用mongodump和mongorestore使用Docker将其转换为初始化mongo数据库。 mongorestore失败,因为它无法连接到容器的主机名。 任何帮助,将不胜感激。 我已经尝试了localhost ,而且也不起作用。

我的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 

我正在使用Vagrant来引导Docker。 我的stream浪文件:

 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 

最后,我的主机虚拟机的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 

mongo容器将mongod设置为它的命令CMD["mongod"] ,这意味着它不会运行,直到您实际执行docker run ...

我通常总是在我的ADD init.sh容器中包含一个脚本ADD init.sh来处理任何在构build时没有意义的configuration任务。