如何从ISO镜像在Virtualbox上安装Coreos

时间:2020-03-05 15:27:51  来源:igfitidea点击:

在本文中,我将展示如何在VirtualBox上安装CoreOS。
CoreOS是完全与容器有关的Linux发行版。
CoreOS背后的想法是OS本身没有任何软件包管理器,而是当需要某些软件时,我们为其制作一个容器并将其安装在该容器中。
目前,CoreOS支持Docker和rkt容器,将来可能会添加更多格式。
安装过程与正常的Linux发行版完全不同,因此在本文中,我们将对屏幕截图进行详细的演练。
首先要做的是下载CoreOS ISO

安装Virtual Box并制作VM

我们将使用虚拟盒子图像。
首先安装Virtual Box

sudo apt install virtualbox

安装VirtualBox后,请从Ubuntu菜单中启动它并创建新的VM。

我们可以根据需要命名虚拟机,但“版本”应为“其他Linux”。
之后,我们需要设置内存和磁盘的大小

最小内存为1GB,但通常更好。
制作完虚拟机之后,我们需要进行设置并将CoreOS的ISO挂载到虚拟DVD驱动器上。

设置完成后,我们可以启动虚拟机,并且我们将获得以下内容:

准备安装

在安装CoreOS之前,我们需要做一些准备。
移至以root用户身份登录的主机后,我们需要获取公钥并将其复制到我们的VM可以使用wget获取它的某个位置。
这是必需的,因为在安装后,仅允许使用公共密钥的ssh登录,而不允许使用密码的ssh登录。
我的选择地点将是Dropbox,因此我将在Thinkpad中将其复制到Dropbox中,如下所示:

cat ~/.ssh/id_rsa.pub > ~/Dropbox/cloud-config.yml

将其复制到Dropbox之后,好主意是使用tinyurl缩短url,因为我们需要在CoreOS中手动键入该url。

回到CoreOS,我们需要使用wget获取此文件。

wget tinyurl.com/yoururl

然后我们需要添加密码并创建配置文件

sudo openssl passwd -1 > cloud_config.yml

执行此命令后,输入密码,该密码将以加密形式显示在cloud_config.yml文件中。
我们还需要将公钥添加到我们之前从Dropbox获得的文件中

cat dropboxfile >> cloud_config.yml

现在,我们编辑cloud_config.yml,那里已经有两个长哈希,一个用于密码,另一个甚至更长,它是公钥。
我们需要将那些文件的其余上下文放在那里

vi cloud_config.yml

在那里,我们需要将文件设置为如下所示:

#cloud-config
users:
- name: miki
passwd: yourencryptedpassword2121wdeksda
groups:
- sudo
- docker
ssh-authorized-keys:
- "ssh-rsa AAAdadasadadaxvnazxcfgaxcbzxzgzcxApublickey...."

编辑文件后,我们需要对其进行验证:

coreos-cloudinit -validate --from-file cloud_config.yml

如果未显示任何错误行,则表示文件格式正确,我们可以移至安装部分

安装CoreOS并使用SSH登录到系统

完成所有准备工作后,我们可以继续安装CoreOS:

sudo coreos-install -d /dev/sda -C stable -c cloud_config.yml

这将下载并安装最新的CoreOS稳定镜像。
完成此操作后,从驱动器上卸载CoreOS的ISO,然后重新启动VM。
我们还需要在Virtual Box上设置Bridge网络,如下图所示:

重新启动后,我们可以登录Virtual Box

或者我们可以从主机上ssh

miki@ThinkPad-X220T:~$ssh 192.168.1.6
The authenticity of host '192.168.1.6 (192.168.1.6)' can't be established.
ECDSA key fingerprint is SHA256:8g/RnlQ0Gs1XsT99jnblbfuCnNXjHHH25DevN0dmUXY.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.6' (ECDSA) to the list of known hosts.
Last login: Sat Nov 26 13:58:42 UTC 2015 on tty1
CoreOS stable (1185.3.0)
miki@localhost ~ $

就像我们看到的那样,没有提示输入密码,公用密钥SSH登录正常。

运行以下命令以检查coreos,docker和rkt版本的堆栈。

miki@localhost ~ $rkt version
rkt Version: 1.14.0
appc Version: 0.8.7
Go Version: go1.7.1
Go OS/Arch: linux/amd64
Features: -TPM +SDJOURNAL
miki@localhost ~ $docker -v
Docker version 1.11.2, build bac3bae
miki@localhost ~ $uname -r
4.7.3-coreos-r2
miki@localhost ~ $cat /etc/motd 
CoreOS stable (1185.3.0)
miki@localhost ~ $

命令以粗体字母表示,前两个命令用于rkt和docker版本,uname -r提供内核版本,/etc/motd存储CoreOS版本。