使用Vagrant在Mac上创建CentOS7的虚拟机镜像(BOX)

总结

关于CentOS7的BOX,已经在VagrantCloud等多个平台上有大量的发布。
但是,由于不知道安装了什么,我感到不安,所以尝试了自己制作。
下面是我制作时的操作记录。

预先准备

让我们完成下面的准备工作并开始工作。

VirtualBox のインストール

Vagrant のインストール
CentsOS7(CentOS-7-x86_64-Minimal-1611.iso)をダウンロード

创建虚拟机

使用VirtualBox创建虚拟机。

请选取「新建」选项来创建「虚拟机」。

vm-01.png
    • 名前     :vagrant-centos-7

 

    • タイプ    :Linux

 

    • バージョン  :Red Hat (64-bit)

 

    • メモリーサイズ:1024MB

 

    ハードディスク:仮想ハードディスクを作成する
vm-02.png
    • ファイルの場所          :vagrant-centos-7

 

    • ファイルサイズ          :40.00GB

 

    • ハードディスクのファイルタイプ  :VDI (VirtualBox Disk Image)

 

    物理ハードディスクにあるストレージ:可変サイズ

虚拟机的设置

vm-03.png

设置启动顺序

vm-04.png

存储设置

vm-05.png

音频设置

vm-06.png

端口设置

vm-07.png

网络设置

vm-08.png
vm-09.png

点击“确定”按钮来关闭设置界面,上述设置就完成了。

安装 CentOS 7

启动虚拟机

vm-10.png

引导选择

vm-11.png

语言选择

vm-12.png

安装概述

vm-13.png

设置根路径密码

vm-14.png
vm-15.png

安装

vm-16.png

重新开机

vm-17.png

对于CentOS7的配置。

CentOS7的启动

vm-18.png

登入

通过root登录。

CentOS Linux 7 (Core)
Kernel 3.10.0-514.el7.x86_64 on an x86_64

localhost login: root
Password:
Last login: Tue Jul  4 12:50:07 on tty1
[root@localhost ~]# 

网络设置

确认接口名称

# nmcli c s
NAME    UUID                                  TYPE            DEVICE
enp0s3  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  802-3-ethernet  --

当将ONBOOT设置为yes时,同时会使用DHCP连接到网络。

# nmcli c m enp0s3 connection.autoconnect yes

增加vagrant用户

创建名为”vagrant”的用户,并将密码设为”vagrant”。

# groupadd -g 1000 vagrant
# useradd -g vagrant -u 1000 vagrant
# passwd vagrant

请将密码设置为”vagrant”。

设置sudo和Requiretty。

# visudo

附加以下内容

# Vagrant User Setting
Defaults:vagrant !requiretty
vagrant         ALL=(ALL)       NOPASSWD: ALL

vagrant用户的设置

SSH连接

在启动Mac终端时,使用以下命令进行连接。

$ ssh -p 2222 vagrant@localhost

如果出现「警告:远程主机标识已更改!」并且无法连接,请调整”known_hosts”文件。

配置Vagrant ssh

$ install -m 0700 -d ~/.ssh
$ echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==" > ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

安装GuestAdditions

准备好了

$ sudo yum -y install epel-release
$ sudo yum -y install -y bzip2 gcc make kernel-devel-`uname -r` dkms gcc-c++
vm-20.png

安装客户机附加组件。

$ sudo mount -r /dev/cdrom /mnt
$ sudo /mnt/VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 5.1.22 Guest Additions for Linux...........
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
vboxadd.sh: Starting the VirtualBox Guest Additions.

客座增加性CD的卸载

$ sudo umount /mnt

关闭虚拟机。

将盒子尺寸最小化并关闭。

$ sudo yum clean all

# Log削除
$ sudo rm -rf /var/log/*
$ sudo rm -rf /tmp/*

# 圧縮
$ sudo dd if=/dev/zero of=/0 bs=4k
$ sudo rm /0

# コマンド履歴をクリア
$ sudo rm /root/.bash_history
$ history -c

# シャットダウン
$ sudo shutdown -h now

创建一个盒子

在Mac的终端上,使用vagrant命令创建一个BOX文件。

$ vagrant package --base vagrant-centos7
==> vagrant-centos7: Clearing any previously set forwarded ports...
==> vagrant-centos7: Exporting VM...
==> vagrant-centos7: Compressing package to: /Users/hoge/package.box

$ ls -l package.box
-rw-r--r--  1 hoge  staff  621394873  7  4 15:34 package.box

添加盒子

将已创建的package.bxo注册到vagrant中。

$ vagrant box add local/centos7 package.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos7' (v0) for provider:
    box: Unpacking necessary files from: file:///Users/uemura/package.box
==> box: Successfully added box 'centos7' (v0) for 'virtualbox'!
$ vagrant box list
local/centos7     (virtualbox, 0)

创建虚拟机并登录

使用已创建的盒子创建虚拟机并尝试登录。

$ mkdir -p ~/Document/Vagrant/centos7
$ cd ~/Document/Vagrant/centos7
$ vagrant init local/centos7
$ vagrant up
$ vagrant ssh

参考文献

ISO

CentOS7(iso)

BOX作成

CentOS 7のVagrant BOXを新規にインストールして作成する
CentOS7の綺麗なboxを自作する

その他

rootだけtty無しのsudoを許可
VirtualBoxの仮想ディスクを圧縮したい
Linuxで入力したコマンドの履歴を消去する方法

广告
将在 10 秒后关闭
bannerAds