如何从ISO镜像在Virtualbox上安装Coreos
在本文中,我将展示如何在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版本。