не может использовать ssh предоставленный Docker контейнер с Vagrant. Vagrant ssh тоже не работает

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

Вот мой 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...

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


person Hrishikesh    schedule 21.01.2015    source источник


Ответы (2)


Сначала загрузите небезопасный ключ, предоставленный 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
person Fábio Gibson    schedule 27.02.2015
comment
Круто, это работает! Не могли бы вы немного объяснить, что происходит в этих первых строках докера? ... и есть ли у вас какие-либо советы о том, как использовать мои собственные сгенерированные ключи? - person Samuel Lampa; 02.03.2015
comment
phusion docker image по умолчанию отключает ssh-сервер. В dockerfile включаем его, удаляя /etc/service/sshd/down. Вторая строка настраивает SSH-сервер, а последняя включает незащищенный ключ в /root/.ssh/authorized_keys. Вы можете проверить выполненные скрипты по адресу: github.com/phusion/ baseimage-docker/blob/master/image/ и github.com/phusion/baseimage-docker/blob/master/image/bin/. - person Fábio Gibson; 03.03.2015
comment
Я пытаюсь точно следовать этому руководству, но в итоге все равно получаю phusion: Warning: Connection refused. Retrying.... Любые идеи, как это исправить? - person Andrey Mikhaylov - lolmaus; 23.05.2015
comment
Первое, о чем я могу подумать, это ваш файл insecure_key. Вы загрузили его и указали путь в config.ssh.private_key_path = path/to/your/insecure_key? Доступен ли файл пользователям без полномочий root? - person Fábio Gibson; 08.06.2015
comment
Я также продолжаю получать приложение: Предупреждение: в соединении отказано. Повторная попытка... Я почти уверен, что файл insecure_key имеет правильные разрешения. Есть мысли по этому поводу? - person medina; 11.08.2015

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

RUN /usr/sbin/enable_insecure_key
person Abdullah Jibaly    schedule 21.01.2015
comment
Я попробовал это с использованием образа centos: 7 или Ubuntu: 14.04, запустив команду ping вместо включения небезопасного ключа. По умолчанию vagrant должен использовать небезопасные ключи по умолчанию, поставляемые с vagrant, и подключаться к только что предоставленному контейнеру, верно? Я не вижу, связано ли это с рассматриваемой проблемой, верно? Это правильная оценка? - person Hrishikesh; 21.01.2015
comment
Контейнеры Docker по умолчанию только запускают один процесс. Поэтому, если вы используете Ubuntu или Centos, вы не сможете подключиться по ssh, если не установите демон ssh как ENTRYPOINT. phusion/baseimage обходит это, настраивая сложную точку входа, которая запускает другие службы, используя runit. - person Abdullah Jibaly; 21.01.2015