无法使用Vagrant对Docker提供的容器进行ssh。流浪汉ssh也不起作用

无法使用Vagrant对Docker提供的容器进行ssh。流浪汉ssh也不起作用,ssh,vagrant,docker,vagrantfile,Ssh,Vagrant,Docker,Vagrantfile,我对流浪汉和码头工人都是新手。 我在这里尝试的是通过Vagrant中的docker获得一个容器,并使用shell provisioner安装一个小的webapp 这是我的档案 Vagrant.configure(2) do |config| # config.vm.provision :shell, path: "bootstrap.sh" config.vm.provision :shell, inline: 'echo Hi there !!!' config.vm.provide

我对流浪汉和码头工人都是新手。 我在这里尝试的是通过Vagrant中的docker获得一个容器,并使用shell provisioner安装一个小的webapp

这是我的档案

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...
有人能告诉我哪里错了吗?我也尝试过更改映像,但没有成功。

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

RUN /usr/sbin/enable_insecure_key

首先从以下位置下载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并在文件中指定密钥文件:

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

我也尝试过使用centos:7或Ubuntu:14.04映像,通过运行ping命令而不是启用不安全密钥。默认情况下,vagrant应该使用vagrant附带的默认不安全密钥,并连接到刚刚提供的容器,对吗?我不知道这是否与手头的问题有关,对吗?这是正确的评估吗?Docker容器默认情况下只运行一个进程。因此,如果您使用ubuntu或centos,除非将ssh守护进程设置为入口点,否则将无法使用ssh。phusion/baseimage通过设置一个复杂的入口点来解决这个问题,该入口点使用runit运行其他服务!你能解释一下第一批码头工人的情况吗。。。您对如何使用我自己生成的密钥有什么建议吗?默认情况下,phusion docker image会禁用ssh服务器。在dockerfile中,我们启用它,删除/etc/service/sshd/down。第二行配置SSH服务器,最后一行将不安全的密钥包含到/root/.SSH/authorized_密钥中。您可以在:和处检查已执行的脚本。我正试图精确地遵循此指南,但最终我仍然得到phusion:Warning:Connection-densed。重试。。。。有没有办法解决这个问题?我能想到的第一件事是关于你不安全的密钥文件。您是否下载了它并将路径设置为config.ssh.private_key_path=path/to/your/unsecure_key?非root用户是否可以访问该文件?我还不断收到应用程序:警告:连接被拒绝。重试。。。我非常确定不安全的密钥文件具有正确的权限。有什么想法吗?