不能使用Vagrant ssh Docker提供的容器。 Vagrant ssh也不起作用

时间:2015-01-21 14:15:47

标签: ssh vagrant docker vagrantfile

我对Vagrant和Docker都很新。 我在这里要做的是在Vagrant中通过docker提供一个容器,并使用shell配置器安装一个小的webapp。

这是我的Vagrantfile

Vagrant.configure(2) do |config|

# config.vm.provision :shell, path: "bootstrap.sh"
config.vm.provision :shell, inline: 'echo Hi there !!!'

   config.vm.provider :docker do |d|
     d.name="appEnvironment"
     d.image = "phusion/baseimage"
     d.remains_running = true
     d.has_ssh = true
     d.cmd = ["/sbin/my_init","--enable-insecure-key"]
   end
end

我面临的问题是,在创建容器之后,它会继续运行以下内容并最终停止。 当我输入docker ps但我没有运行配置部件时,我可以看到正在运行的docker容器。我假设这是因为ssh不成功

==> default: Creating the container...
    default:   Name: appEnvironment
    default:  Image: phusion/baseimage
    default:    Cmd: /sbin/my_init --enable-insecure-key
    default: Volume: /home/devops/vagrantBoxForDemo:/vagrant
    default:   Port: 127.0.0.1:2222:22
    default:  
    default: Container created: 56a87b7cd10c22fe
==> default: Starting container...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 172.17.0.50:22
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection refused. Retrying...
    default: Warning: Connection refused. Retrying...
    default: Warning: Connection refused. Retrying...

有人能告诉我可能出错的地方吗?我也试过改变图像,但没有成功。

2 个答案:

答案 0 :(得分:3)

首先下载由phusion提供的不安全密钥:

https://github.com/phusion/baseimage-docker/blob/master/image/insecure_key

*请记住,不安全的密钥只能用于开发目的。

现在,您需要通过在Dockerfile中添加以下内容来启用ssh:

FROM phusion/baseimage
RUN rm -f /etc/service/sshd/down
RUN /etc/my_init.d/00_regen_ssh_host_keys.sh
RUN /usr/sbin/enable_insecure_key

启用ssh并在Vagrantfile中指定密钥文件:

Vagrant.configure("2") do |config|
  config.vm.define "app" do |app|
    app.vm.provider "docker" do |d|
      d.build_dir = "."
      d.cmd = ["/sbin/my_init", "--enable-insecure-key"]
      d.has_ssh = true
    end 
  end
  config.ssh.username = "root"
  config.ssh.private_key_path = "path/to/your/insecure_key"
end

提升环境

vagrant up

现在您应该可以通过ssh

访问您的容器了
vagrant ssh app

答案 1 :(得分:0)

phusion/baseimage没有default启用的不安全私钥。您必须使用以下内容创建自己的基本映像FROM phusion/baseimage

RUN /usr/sbin/enable_insecure_key