云计算课程实验
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

6.8 KiB

Assignment 2 指南

******注意,实验结束请立即删除云主机,节省费用******

******注意2,实验未结束且短期内不会继续实验,也请删除云主机。下次实验时重新创建******

实验内容

  • 安装Docker并测试:实验步骤 一)
  • 了解并学习简单的Docker指令:实验步骤 二)
  • 利用Docker部署一个简单的静态网页App :实验步骤 三)
  • 使用Dockerfile完成复杂应用的搭建:实验步骤 四)

实验要求(仔细看)

  • 完成所有步骤,并在实验报告(模板下载)中完成穿插在本指南中的作业1~作业4(只需要截图)。实验报告转成“学号-实验二.pdf”,并上传至http://113.31.104.68:3389/index.htm

  • 实验报告上传deadline:10月xx日

使用产品

云主机uhost, 私有网络vpc,基础网络unet, Docker相关技术

需要权限

云主机uhost, 基础网络unet

实验步骤

零)前期工作

请根据Assignment1的要求创建云主机,并使用ssh远程登录(可以直接使用root用户进行后续操作)

一)安装Docker并测试

1. Docker是什么?

一个开放源代码项目,通过在Linux上提供OS级虚拟化的附加抽象层和自动化层,使容器内软件应用程序的部署自动化。

简单来说,Docker是一种工具,它使开发人员,系统管理员等可以轻松地在沙盒(称为容器)中部署其应用程序,以在主机操作系统(即Linux)上运行。Docker的主要好处是,它允许用户将具有所有依赖关系的应用程序打包到用于软件开发的标准化单元中。与虚拟机不同,容器不具有高开销,因此可以更有效地利用基础系统和资源。

2. 在Linux上安装Docker环境

直到几个版本之前,在OSX和Windows上运行Docker还是很麻烦的。但是,最近,Docker已投入大量资金来改善其用户在这些OS上的入职体验,因此,现在运行Docker是一个轻而易举的事。

这里只介绍如何在Linux上安装和运行Docker, 如果同学们想要在其他系统上尝试使用Docker,可以参考Docker官网给出的教程(如何在MacLinux或Windows上使用Docker)

a) 安装docker

b) 测试Docker是否安装成功

当你的按照上述步骤安装完docker之后,可以通过运行如下命令来测试docker是否安装成功

$ docker run hello-world

Hello from Docker.
This message shows that your installation appears to be working correctly.
...

3. 尝试使用busybox

到此为止,你的docker环境已经安装完成并且正常运行,接下来我们尝试一些更加复杂的工作

在这个部分,我们将要通过docker run命令去开启一个BusyBox container

a) 首先,我们通过运行如下命令从互联网拉取BusyBox Image:

$ docker pull busybox

如果运行过程中遇到 permission denied 此类的错误,可以尝试在命令前加入 sudo 命令

b) pull 命令可以将busybox image从docker仓库中拉取到本地,你可以使用docker image命令查看系统上目前已有的image.

$ docker images

REPOSITORY 	TAG 		IMAGE ID 			CREATED 			VIRT
busybox 	latest 	c51f86c28340 	4 weeks ago 	1.10

c) 我们接下来继续尝试使用docker run命令来运行busybox

$ docker run busybox
$

d) 可以发现命令运行完,什么也没有发生。这不是bug,当我们执行docker run命令时,docker会从本地查找image,然后加载image并在容器中运行command。让我们加入自定义的command再试一次

$ docker run busybox echo "hello from busybox"
hello from busybox

**************作业1:请将上述涉及docker run/image的操作界面截图,并插入实验报告中***************

二) 熟悉Docker指令

让我们来尝试不同的docker command

1. docker ps

docker ps 命令可以查看当前正在运行的所有容器的状态,包括CONTAINER IDIMAGECOMMANDCREATE (创建时间)STATUS (容器状态)

让我们查看目前有哪些容器正在运行

$ docker ps

CONTAINER ID 	IMAGE 	COMMAND 	CREATED	 STATUS

可以看到控制台输出了了一个空的列表,这是正常的,因为目前没有容器正在运行。如果需要查看包括不在运行的所有容器,我们可以加入 -a 参数

$ docker ps -a

CONTAINER ID 			IMAGE 					COMMAND 			CREATED 				STATUS
305297d7a235 			busybox 				"uptime" 			11 minutes ago 		Exited (
ff0a5c3750b9 			busybox 				"sh" 				12 minutes ago 		Exited (
14e5bd11d164 			hello-world 			"/hello" 			2 minutes ago 		Exited (

Wow~ 之前运行过的容器全部都出现在输出中了~

2. docker run -it

docker run -it 可以在我们创建 container 的同时,以交互式的形式获取到 container shell 的控制权. 我们可以在docker run 命令中使用--name custom_name 来指定container的名称,若不指定,docker会为我们随机生成一个名字

接下来我们使用 run -it 命令来创建一个 busybox container:

$ docker run -it busybox sh


/ # ls
bin dev etc home proc root sys tmp usr var
/ # uptime
05:45:21 up 5:58, 0 users, load average: 0.00, 0.01, 0.04

3. docker rm

docker rm -args 可以删除不在运行的containerargs可以是container name/id (可以不写完整,但必须保证唯一)

下面让我们尝试删除上面的两个busybox container

$ docker rm 305297d7a235 ff0a5c3750b9

305297d7a235
ff0a5c3750b9

也可以通过如下命令删除

$ docker rm 305 ff
305297d7a235
ff0a5c3750b9

现在使用ps命令检查一下是否删除成功吧!

**************作业2:请手动创建ubuntu:18.04 image的container并将cpu信息截图,并插入实验报告中***************

Hint: 可以使用lscpu命令查看linux的硬件信息,显示界面大致如下`

$ lscpu

Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              4
On-line CPU(s) list: 0-3
Thread(s) per core:  1
Core(s) per socket:  1
Socket(s):           4
Vendor ID:           GenuineIntel
CPU family:          6
Model:               158
Model name:          Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
Stepping:            9
CPU MHz:             2800.000
BogoMIPS:            5616.00
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            6144K
...