2015-01-21 2 views
3

Я довольно новичок в Vagrant и Docker. То, что я пытаюсь сделать здесь, - это получить контейнер, предоставленный через докер в Vagrant, и установить небольшой webapp с помощью средства обеспечения оболочки.не может ssh Докер поставляется контейнер с бродягой. Vagrant ssh тоже не работает

Вот мой 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, но он не запустил часть подготовки. Я предполагаю, что это происходит потому, что 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... 

Может кто-то дайте мне знать, где я мог бы быть неправильно? Я тоже пытался изменить изображение, но безуспешно.

ответ

3

Сначала загрузите небезопасный ключ, предоставленный Phusion от:

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

* Помните небезопасный ключ должен использоваться только в целях развития ,

Теперь вам нужно включить SSH, добавив следующее в ваш Dockerfile:

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

Круто, это работает! Не могли бы вы немного рассказать о том, что происходит в этих первых докерных линиях? ... и есть ли у вас какие-либо советы о том, как использовать мои собственные сгенерированные ключи? –

+2

Изображение phusion docker по умолчанию отключает ssh-сервер. В dockerfile мы включаем его, удаляя/etc/service/sshd/down. Вторая строка настраивает SSH-сервер, а последняя включает небезопасный ключ в /root/.ssh/authorized_keys. Вы можете проверить выполненные сценарии по адресу: https://github.com/phusion/baseimage-docker/blob/master/image/00_regen_ssh_host_keys.sh и https://github.com/phusion/baseimage-docker/blob/master/ изображение/бен/enable_insecure_key. –

+0

Я стараюсь точно следовать этому руководству, но, в конце концов, я все еще получаю 'phusion: Warning: Connection отказано. Повторная ... '. Любые идеи, как это исправить? –

0

phusion/baseimage не имеет незащищенного закрытого ключа, разрешенного default. Вы должны создать свой собственный базовый образ FROM phusion/baseimage со следующим:

RUN /usr/sbin/enable_insecure_key 
+0

Я попробовал его с использованием centos: 7 или изображения Ubuntu: 14.04, запустив команду ping вместо включения небезопасного ключа. По умолчанию бродяга должна использовать небезопасные ключи по умолчанию, поставляемые с бродягой, и подключаться к только что предоставленному контейнеру? Я не вижу, связано ли это с проблемой? Это правильная оценка? – Hrishikesh

+0

Докерные контейнеры по умолчанию ** только ** запустить один процесс. Поэтому, если вы используете ubuntu или centos, вы не сможете использовать ssh, если вы не установите демона ssh как 'ENTRYPOINT'. 'phusion/baseimage' обходит это, создавая сложную точку входа, которая запускает другие службы, используя' runit'. –

Смежные вопросы