虚拟机相关

文章发布时间:

最后更新时间:

使用Vagrant快速创建虚拟机

1
vagrant init centos/7
1
2
vagrant up
vagrant up --provider=vmware_desktop

若提示找不到provider则需要安装对应的utility:

列如:这里的provider是VMware,参考步骤:

  1. 安装Download Vagrant VMWare Utility
  2. 运行vagrant plugin install vagrant-vmware-desktopvagrant plugin install vagrant-vmware-workstation

如果还是搞不好的话就还是用Vagrant默认支持的VirtualBox吧Download

如果出现如下下载慢的情况的话可以使用链接手动下载然后导入:

1
2
3
4
5
6
7
8
9
10
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'centos/7' could not be found. Attempting to find and install...
default: Box Provider: virtualbox
default: Box Version: >= 0
==> default: Loading metadata for box 'centos/7'
default: URL: https://vagrantcloud.com/centos/7
==> default: Adding box 'centos/7' (v2004.01) for provider: virtualbox
default: Downloading: https://vagrantcloud.com/centos/boxes/7/versions/2004.01/providers/virtualbox.box
Download redirected to host: cloud.centos.org
Progress: 0% (Rate: 0/s, Estimated time remaining: 94:22:44)

先查看本地安装的box:

1
vagrant box list

再将得到的box文件手动添加进去:

1
vagrant box add --name centos/7 D:\VirtualMachine_centerOS7\virtualbox.box

添加完之后再run一下命令vagrant up

当虚拟机安装完成之后会自动启动,启动完成会出现以下提示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
==> default: Importing base box 'centos/7'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: VirtualMachine_centerOS7_default_1594193913731_41252
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default:
default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default:
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
default: No guest additions were detected on the base box for this VM! Guest
default: additions are required for forwarded ports, shared folders, host only
default: networking, and more. If SSH fails on this machine, please install
default: the guest additions and repackage the box to continue.
default:
default: This is not an error message; everything may continue to work properly,
default: in which case you may ignore this message.
==> default: Rsyncing folder: /cygdrive/d/VirtualMachine_centerOS7/ => /vagrant

使用ssh连接虚拟机:

1
vagrant ssh

查看当前用户:whoami

退出ssh连接:exit;

端口转发

可以直接在VirtualBox设置->网络->连接方式:网络地址转换(NAT)->端口转发 里面设置

也可通过修改Vagrantfile配置文件来改

通过修改Vagrantfile配置文件来配置虚拟机IP

1
2
3
4
5
6
7
8
9
ipconfig

以太网适配器 VirtualBox Host-Only Network #2:

连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::8c1a:1f35:e70:a9%25
IPv4 地址 . . . . . . . . . . . . : 192.168.33.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
1
2
3
4
5
6
7
8
9
10
11
12
config.vm.network "private_network", ip:"192.168.33.10"
vagrant reload
vagrant ssh
ip addr

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 100
0
link/ether 08:00:27:f2:b4:fb brd ff:ff:ff:ff:ff:ff
inet 192.168.33.10/24 brd 192.168.33.255 scope global noprefixroute eth1
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fef2:b4fb/64 scope link
valid_lft forever preferred_lft forever

可以看到IP地址已经是192.168.33.10了

ping 192.168.33.10
ping 192.168.2.148

测试一下都可以ping通即可

配置Docker

安装docker engine

Install Docker Engine on CentOS

按照官方文档配即可,不再赘述

设置Docker开机自启动

1
2
[vagrant@localhost ~]$ sudo systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

配置镜像加速

登录阿里云,然后访问容器镜像服务->镜像中心->镜像加速器

eg: https://sb0h74rp.mirror.aliyuncs.com

1
2
3
4
5
6
7
8
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://sb0h74rp.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Dock安装镜像(mysql)

1
2
3
4
5
6
7
8
9
10
sudo docker pull mysql:5.7

sudo docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/var/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

sudo docker ps

-p表示端口映射

-v挂载docker容器内部目录到外部目录

-d表示后台运行

进入mysql容器内部

1
sudo docker exec -it mysql /bin/bash

配置一下utf8 encoding

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
vi /mydata/mysql/conf/my.cnf

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

Dock安装镜像(redis)

1
2
3
4
5
6
7
8
9
10
11
12
docker pull redis

mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf

docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf

docker start c24743e3c322
docker rm -f c24743e3c322

-d后面的是启动额外命令,表示以该配置文件启动

快速调用redis cli工具来运行redis命令

1
2
3
4
5
docker exec -it redis redis-cli
127.0.0.1:6379> set a b
OK
127.0.0.1:6379> get a
"b"

docker开机自动启动容器

1
2
sudo docker update redis --restart=always
sudo docker update mysql --restart=always