目录
•准备工作•虚拟机的安装和使用•虚拟机上安装 Linux 系统(Ubuntu 镜像)•安装 docker
0. 准备工作
本文是给那些准备学习服务器知识,但是没有云服务器类产品,或者服务器配置不高但是需要学习 docker 这样对配置有要求的同学一个解决方案。
至少在学习的初期能帮你拥有一个可以上手的环境。
本教程使用的是 win10,虚拟机使用 Oracle VM VirtualBox(免费 v6.0.14),Linux 系统使用 Ubuntu 镜像(v18.04.3 desktop)。
在开始之前需要确认已经有相关软件和镜像,可以点击下面的链接下载:
Oracle VM VirtualBox[1]
Ubuntu 镜像[2]
1. 虚拟机的安装和使用
首先安装虚拟机,这个软件是傻瓜式的,你可以一路"下一步"把软件安装到你想要安装的硬盘。
对于配置选项,我选中了在"桌面创建快捷方式"和"注册文件关联",你可以按照自己的习惯和需求自行选择。
安装中会有可能会出现网络连接中断的情况,因为虚拟机会安装一个虚拟的网卡(这个虚拟网卡我们后面会碰到),如果这个时候有联网需求,需要特别注意下,如果没有就开始安装吧。
安装结束之后运行,我们就要在这个界面里创建我们的运行环境,并加载 Linux 镜像:
首先点击新建,填写对应的内容:
选择内存大小,对性能有需求的就调整的大一点,但是也需要根据自己电脑的配置来,如果电脑配置不高可能会非常卡:
选择虚拟机的硬盘,硬盘类型选择默认,大小选择固定(使用 docker 或配置网络环境建议 20G 以上):
点击创建之后它就开始去创建空间了,等待它完成。
可以看到主面板上有一个创建好的虚拟机:
选择这个虚拟机,点击右边的启动按钮,然后我们进入 Linux 的安装。
2. 虚拟机上安装 Linux 系统(Ubuntu 镜像)
第一次启动虚拟机之后会弹出一个黑框框,然后告诉你没有盘,这时候选择旁边文件夹的图标,选择下载好的 Linux 镜像。
解释一下我为什么选择使用乌班图 18.04.3 桌面版:因为方便。
选择完之后点击"启动",然后它就开始准备安装了,期间会蹦出 logo 之类的画面,不用管,直到它出现可以选择的页面。这里我选择了中文,因为看着方便,你可以选择其他的英文日文韩文俄文什么的,只要你能看得懂,然后点安装。
键盘我选择的是默认,然后到下一个画面,问你要安装完整版还是最小版,然后还问你是不是要在安装的时候更新,我选择最小版和取消安装时更新。因为,主要是用 Linux 环境,并不是真的使用,所以没必要安装一些不用的 office 套件之类的软件,取消安装时更新是因为安装的时候会连接国外的服务器去更新,速度巨慢,后面会介绍换国内源的方式更新。
下一步后,选择默认的"清除整个磁盘安装 Ubuntu"。然后"现在安装",再点"继续"。
接下来还有一些配置。时区默认就行,用户名密码的地方建议选择自动登录,密码可以设置的短一点,反正是在本地环境运行的,因为就我使用的感觉 Ubuntu 会经常让你输密码,短一点方便,不然输入密码输到崩溃。
再继续就开始安装了,安装需要一点时间,看你机器的配置和网络情况,这期间你可以干点其他的事。
安装的时候,下方进度条前方有个小三角,点击后会展开详细信息。详细信息并不重要,重要的是后会出现一个 skip 的按钮,如果这个按钮处于能点的状态那就点了,让安装快一些:
安装完毕会让你重启,没得选了,只能重启。
之后可能会提示你"移除安装媒体,然后按回车",我们不管什么安装媒介,直接按回车就行。等待重启,就自动进入系统了。第一次进系统会蹦出一堆没什么用的介绍,还有发送系统信息之类的(我选择不发送),总之一路继续就好。
在安装完系统之后更新。更新系统不是必须的,但是推荐这么做。
首先更改系统更新的源到国内,这样做比安装的时候更新快的多,具体步骤看下面的图片:
把下载中的源换成国内大厂的(阿里、华为之类的),选择"其他站点"就会出来对应的列表,(选择的时候可能会让你输入密码,输入你创建账户时候的密码。关闭的时候可能会蹦一个提示,点"重新载入"),反正最终我们要换成想要换的源就行。这个比较重要,因为之后我们在 Linux 中下载软件什么的也会快很多。
然后再自动检查更新,点完就自动检查更新了,然后会弹出更新的包,因为我们换了国内的源,比安装的时候更新快很多(可能会让输入密码,之后所有让输入密码的地方都是输入注册时候填的密码,不再赘述),更新完之后重启:
如果你愿意长期使用这个虚拟机中的 Linux 系统,推荐在虚拟机菜单中找到 设备 -> 安装增强功能,安装完重启,这样你在电脑上看到的 Linux 系统分辨率就是正常的了(这步不操作也行,反正我们后面也基本是本地命令行连接虚拟机中的系统去操作),同样的在这个菜单下有一个"共享粘贴板",设置成双向,这样 window 中的东西可以复制粘贴到虚拟机中:
接下来的操作是让我们可以在 win10 中用命令行窗口连接虚拟机,因为我认为既然是模拟服务器环境,我们操作的时候最好也模拟这样的环境,在本地系统中用命令行来连接这个虚拟机。当然如果你觉得这样做多此一举不做也行,Linux 安装的部分就结束了,可以直接跳到下一节中。如果你觉得这样操作有必要,就往下看。
虚拟机中开一个命令行窗口(Ctrl+Alt+T),为了方便操作,我们先切换到 root 权限:
sudo su -
输入如下命令:
ssh localhost
如果这时候报错了,说明 ssh 没开,再输入(没有 root 权限自行加 sudo):
apt-get install openssh-server
然后会进行安装(需要输 yes 的地方输 yes,需要输密码的地方输密码),安装之后再试 ssh localhost,如果不报错,让输入确认或者密码之类的了,就 OK 了。
接下来的操作就是把虚拟机中的 22 端口开放出来。
关掉 Linux 系统(不关也行,但保险起见最好先关闭),然后找到我们创建的虚拟机镜像,点击"设置":然后选择 网络 -> 网卡 1 -> 连接方式选择"网络地址转换 NAT" -> 高级 -> 端口转发,在打开的窗口中,名称随便填,两个端口号填 22:
下面在 Windows 中找到虚拟机安装的网卡,看看 ip 地址。路径:控制面板 -> 网络和 Internet -> 网络和共享中心 -> 更改适配器配置
你不会看也没事,我直接告诉你,地址是 192.168.56.1,这个地址是默认的,记住这个地址。
然后我们就可以在本地开一个命令行窗口然后输入:
ssh 你注册的用户名@192.168.56.1
第一次连接可能会让你确认是不是要连接,输入 yes,然后输入密码,就可以本地连接虚拟机的系统了:
3. 安装 docker
已经有一个 Linux 系统环境了,你可以用它来做练习或者学习使用 Linux。
接下来的内容是关于怎么在这个系统中安装 docker,切换 docker 的下载为国内源,以及简单的使用。
这里只是一些简单的介绍,如果想要更详细的上手指南,比如不同系统的安装以及更详细的操作,推荐这里: Docker — 从入门到实践[3]
3.1 卸载旧版本
没有安装过可以跳过,但是为了文章的完整性,贴在这里:(没有权限的自行加 sudo,要么像上文提到的切换到 root,下同)
apt-get remove docker \ docker-engine \ docker.io
3.2 使用 APT 安装
# 更新apt-get update# 添加使用 HTTPS 传输的软件包以及 CA 证书。apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common# 为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。(国内源,下同)curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -# 向 source.list 中添加 Docker 软件源add-apt-repository \ "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \ $(lsb_release -cs) \ stable"
3.3 安装 Docker
apt-get install docker-ce
3.4 启动 Docker
# 添加自启动systemctl enable docker# 启动dockersystemctl start docker# 测试docker启动是否成功 其实就是去下一个官方的提供的hello worlddocker run hello-world
运行完最后一行命令,之后显示出"Hello from Docker!This message shows that your installation appears to be working correctly…bulabulabula"的一堆废话,就说明 docker 安装成功并启动了,而且你还下载了一个测试的镜像并运行成功了。
3.5 切换 docker 下载镜像为国内的源
因为 docker 下载镜像默认是国外,所以下载起来会非常慢,最好在之后操作之前,先把下载源改成国内的。
在进行下个步骤之前,我强烈建议你给 Linux 安装个 vim。
apt-get install vim
用 Linux 编辑器打开/etc/docker/daemon.json 文件,然后写入下面的内容,保存退出(注意,这必须是一个标准的 json):
{ "registry-mirrors": [ "https://mirror.ccs.tencentyun.com", "http://hub-mirror.c.163.com" ]}
说明一下:
第一个是腾讯的源,第二个是网易的,速度都很快。不知道现在 docker-cn 是否恢复,如果没恢复写大厂的镜像源就可以了。
写完保存之后重载配置然后重启 docker,如果上面配置写的不对,会报错。
systemctl daemon-reloadsystemctl restart docker
重启后没有报错说明生效了。
下载个 MySQL 试一下:
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d -p 39000:3306 --restart=always mysql
稍微解释一下:
•-d 后台运行•–name 自定义容器名称•-p 指定端口,前面是映射端口,后面是容器运行端口•MySQL 启动时会要求输入密码,这里就是 123456 前面的-e 是设置环境变量•–restart 容器开机运行
不出意外的话,运行后你会发现换国内源之后下载镜像的速度变快了(当然,到底快不快还是要看自己的网速)。
3.6 下面是一些简单的 docker 操作
3.6.1 查看容器、删除容器以及删除镜像
我们可以使用 docker ps -a 查看所有的容器(包括没有运行的)。应该会看到刚才我们下载的那个测试镜像"hello-world"还有"MySQL"。
hello-world 这个镜像已经没用了我们删除它:
如果要删除一个正在运行的镜像,需要用 docker stop 名称/id 让容器停止运行,然后再用 docker rm 名称/id 进行删除,这个 hello-world 并没有在运行,所以我们直接输入:docker rm d74199ead137 删除它。
想要硬盘删除这个镜像,用docker images
查看有哪些镜像,然后 docker rmi 镜像id
就可以了(要删除镜像首先得删除容器,也就是上一步操作,否则会报错告诉你删不了)。
3.6.2 连接 MySQL
然后我们用 Navicat 来连接一下这个镜像中的 MySQL(相当于远程连接服务器上的 MySQL)。
现在命令行中进行如下操作:
1.进入容器: docker exec -it mysql bash
2.用刚才创建的密码登录 mysql:mysql -uroot -p123456
3.查看一下 root 等用户信息:select user,host,plugin from mysql.user;
。如果发现 root 后面是’caching_sha2_password’,那么执行下面两条命令
ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';FLUSH PRIVILEGES;
在 Navicat 中设置如下,密码填你刚才用 docker 运行 MySQL 时候设置的密码,我设置的是 123456:
不出意外的话,点击连接测试是连不上的。
这个时候需要用上文提到的方法,在虚拟机中进行端口转发,把我们设置安装 MySQL 时设置的对外端口 39000 添加进去(图就不截了)。
然后再连接,就可以连接上了:
3.6.3 其他的 docker 常用命令
# 查看运行的镜像docker ps# 启动一个已经停止的容器docker start 名称/ID# 重启一个容器docker restart 名称/ID# 查看docker版本docker --version# 查看docker系统信息docker info
OK,这样 win10 下安装虚拟机、虚拟机中安装 Linux 系统、Linux 系统中安装 docker 并安装 MySQL 容器外加 Navicat 连接测试的一条龙上手说明到这里就全部讲解完毕了。
References
[1]
Oracle VM VirtualBox: https://download.virtualbox.org/virtualbox/6.0.14/VirtualBox-6.0.14-133895-Win.exe[2]
Ubuntu 镜像: https://ubuntu.com/download/desktop[3]
Docker — 从入门到实践: https://yeasy.gitbooks.io/docker_practice/