无法 ssh Docker 提供了 Vagrant 容器。 Vagrant ssh 也不起作用
cannot ssh Docker Provided Container with Vagrant. Vagrant ssh doesnt work too
我对 Vagrant 和 Docker 都很陌生。
我在这里要做的是在 Vagrant 中获取通过 docker 提供的容器,并使用 shell 配置器安装一个小型 Web 应用程序。
这是我的 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
时,我可以看到一个 运行ning 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
没有 default 启用的不安全私钥。您必须使用以下内容创建自己的基础映像 FROM 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 并在 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
我对 Vagrant 和 Docker 都很陌生。 我在这里要做的是在 Vagrant 中获取通过 docker 提供的容器,并使用 shell 配置器安装一个小型 Web 应用程序。
这是我的 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
时,我可以看到一个 运行ning 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
没有 default 启用的不安全私钥。您必须使用以下内容创建自己的基础映像 FROM 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 并在 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