Browse Source

assignment2 modify

merge-requests/1/head
wangyu 4 years ago
parent
commit
c509f14429
9 changed files with 119 additions and 20 deletions
  1. BIN
      .DS_Store
  2. +72
    -20
      Assignment2.md
  3. BIN
      file/.DS_Store
  4. BIN
      file/assignment2/.DS_Store
  5. BIN
      file/assignment2/FoodTrucks.zip
  6. +47
    -0
      file/assignment2/index.html
  7. BIN
      img/.DS_Store
  8. BIN
      img/assignment2/.DS_Store
  9. BIN
      img/assignment2/static-web-2.png

BIN
.DS_Store View File


+ 72
- 20
Assignment2.md View File

@ -33,6 +33,16 @@
#### 请根据Assignment1的要求[创建云主机](Assignment1.md),并使用ssh远程登录(可以直接使用root用户进行后续操作)
#### `Hint:` 本实验需要访问host的端口,请使用`-L `命令将`host`的`32768、32769、8000、8080`四个端口映射到本地,具体命令可以参考如下:
```bash
$ ssh root@113.31.104.108 -L 32769:0.0.0.0:32769 -L 32768:0.0.0.0:32768 -L 8080:0.0.0.0:8080 -L 8000:0.0.0.0:8000
```
### 一)安装Docker并测试
#### 1. Docker是什么?
@ -81,13 +91,28 @@ $ service docker status
└─1954 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
```
## **强烈推荐使用阿里云和三方源加速image下载,不然接下来的实验会进行的异常痛苦**
## **为保证试验正常进行,请根据以下步骤修改docker镜像源为ucloud**
#### 1.登录`ucloud docker hub`
```bash
$ docker login uhub-edu.service.ucloud.cn -u username/email
#### 讲如下内容写入`/etc/docker/daemon.json`中(没有则创建)
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
```
#### 出现`login succeeded`表示登陆成功
#### 2.将如下内容写入`/etc/docker/daemon.json`中(没有则创建. ps: 需保证`docker`已经运行过,否则会出现`/etc/docker`文件夹不存在)
```json
{
"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com"]
"registry-mirrors": ["https://uhub-edu.service.ucloud.cn","https://uhub.service.ucloud.cn","https://registry.docker-cn.com","http://hub-mirror.c.163.com"]
}
```
@ -214,7 +239,7 @@ ff0a5c3750b9
#### 现在使用`ps`命令检查一下是否删除成功吧!
`**************作业2:请手动创建ubuntu:18.04 image的container并将cpu信息截图,并插入实验报告中***************`
`**************作业2:请手动创建centos image的container,将终端命令和`container cpu`信息截图,并插入实验报告中***************`
> Hint: 可以使用**lscpu**命令查看linux的硬件信息,显示界面大致如下
@ -252,7 +277,7 @@ L3 cache: 6144K
#### `docker hub`上有许多开发者们上传的`image`,我们可以自由下载并且使用,这里我们使用到的`image`是`prakhar1989/staticsite`,这是一个搭载了简单的静态单页面的Nginx镜像,让我们来试者运行它:
```bash
$ docker run --rm prakhar1989/static-site
$ docker run --rm cloud_computing/static_site
Nginx is running...
```
@ -273,10 +298,10 @@ Nginx is running...
| -P | 将container所有正在监听的端口全部映射到本地的随机端口 |
| -v local_path:contatiner_path | 将container的某个文件路径映射到本地 |
#### `static-site`默认监听的`80`和`443`端口我们使用上述参数尝试将它映射到本机
#### `static-site`默认监听的`80`和`443`端口我们使用上述参数尝试将它映射到本机
```bash
$ docker run -d -P --name static-site prakhar1989/static-site
$ docker run -d -P --name static_site cloud_computing/static_site
e61d12292d69556eabe2a44c16cbd54486b2527e2ce4f95438e504afb7b02810
```
@ -284,7 +309,7 @@ e61d12292d69556eabe2a44c16cbd54486b2527e2ce4f95438e504afb7b02810
#### 查看docker给我们映射的端口
```
$ docker port static-site
$ docker port static_site
80/tcp -> 0.0.0.0:32769
443/tcp -> 0.0.0.0:32768
@ -292,17 +317,43 @@ $ docker port static-site
#### 可以看到`docker`将`container`的`80`和`443`分别映射到了本机的`32769`和`32768`两个端口上
####.打开浏览器,访问`http://localhost:32769`,得到如下页面:
#### 3.打开浏览器,访问`http://localhost:32769`,得到如下页面:(若`docker`随机映射端口不是`32768/32769`可以无需验证此步骤)
![static-web](img/assignment2/static-web.png)
`**************作业3:尝试使用-v、--rm和-p等参数,创建static-site容器,并以自己的学号命名,将container的/usr/share/nginx/html文件夹映射到当前目录的html文件夹,并修改index.html文件,加入自己的姓名和学号,并将上述步骤和本地目录接口截图插入实验报告中***************`
`**************作业3:尝试使用-v、--rm和-p (请将container的80端口映射到host的8000端口)等参数,创建cloud_computing/static_site容器***************`
#### 具体步骤如下:
> Hint:
>
> 1.若提示continer正在运行中,可以使用`docker stop static-site && docker rm static-site`删除正在使用的容器并重新创建.
>
> 2.-v local_path请使用绝对路径
#### 1.若提示continer正在运行中,可以使用`docker stop static-site && docker rm static-site`删除正在使用的容器并重新创建.
#### 2. 创建`/var/html`文件夹
```bash
mkdir /var/html
```
#### 3.下载[index.html文件](file/assignment2/index.html),使用`scp`命令传输到`host`的`/var/html`文件夹中,并修改一下部分为自己的信息
```html
<div class="container">
<div class="row">
<div class="one-half column" style="margin-top: 25%">
<h4>Hello Docker!</h4>
<p>This is being served from a <strong>docker</strong> container running Nginx.</p>
<p>my id is xxxx,my name is xxx</p>
</div>
</div>
</div>
```
#### 4. 尝试使用`-p、-v、--rm、--name`参数创建`cloud_computing/static_site`的`container`,具体要求为:映射`container`的`80`端口到`host`的`8000`端口,映射`container`的`/usr/share/nginx/html/mypage`路径到`/var/html`文件夹,`container`名称以自己的学号命名
#### 6.访问本地浏览器:`http://localhost:8000/mypage`
#### 7.将浏览器界面包括url截图,将创建container的终端界面截图,并插入到实验报告中 (浏览器界面类似下面图片所示)
![浏览器界面](img/assignment2/static-web-2.png)
### 四) 熟悉Dockerfile的简单使用
@ -332,7 +383,7 @@ Archive: FoodTrucks.zip
```dockerfile
# 基于ubuntu:18.04容器
FROM ubuntu:18.04
FROM cloud_computing/ubuntu:18.04
# 安装相关依赖
RUN apt-get -yqq update
@ -371,12 +422,13 @@ CMD [ "python3", "./app.py" ]
#### 3.打包镜像
#### 在当前目录(`Dockerfile`同级目录),执行如下命令,`docker`会自动将当前环境部署打包为一个`image`
#### 在当前目录(`Dockerfile`同级目录),执行如下命令,`docker`会自动将当前环境部署打包为一个`image`(**请勿执行此步骤,学习命令如何使用即可**)
```bash
$ docker build -t user-name/image-name
$ docker build -t user-name/image-name .
```
#### 这一步可能耗时较长,请耐心等待。。。
**************作业4:利用dockerfile将当前环境打包为 `英文姓名/food` 的`image`,并通过`docker`命令将创建该镜像的`container`,将`5000`端口映射到本地的`8080`端口。将打包命令和浏览器页面截图,并插入实验报告中***************
#### `build`过程可能耗时较长,请耐心等待。。。
**************作业4:利用dockerfile将当前环境打包为 `英文姓名/food` 的`image`,并通过`docker`命令将创建该镜像的`container`,将`5000`端口映射到本地的`8080`端口。将打包命令和浏览器页面截图,并插入实验报告中***************

BIN
file/.DS_Store View File


BIN
file/assignment2/.DS_Store View File


BIN
file/assignment2/FoodTrucks.zip View File


+ 47
- 0
file/assignment2/index.html View File

@ -0,0 +1,47 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Basic Page Needs
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<meta charset="utf-8">
<title>Docker :)</title>
<meta name="description" content="">
<meta name="author" content="">
<!-- Mobile Specific Metas
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- FONT
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<link href="//fonts.googleapis.com/css?family=Raleway:400,300,600" rel="stylesheet" type="text/css">
<!-- CSS
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<link rel="stylesheet" href="../css/normalize.css">
<link rel="stylesheet" href="../css/skeleton.css">
<!-- Favicon
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<link rel="icon" type="image/png" href="../images/favicon.png">
</head>
<body>
<!-- Primary Page Layout
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<div class="container">
<div class="row">
<div class="one-half column" style="margin-top: 25%">
<h4>Hello Docker!</h4>
<p>This is being served from a <strong>docker</strong> container running Nginx.</p>
<p>my id is xxxx,my name is xxx</p>
</div>
</div>
</div>
<!-- End Document
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
</body>
</html>

BIN
img/.DS_Store View File


BIN
img/assignment2/.DS_Store View File


BIN
img/assignment2/static-web-2.png View File

Before After
Width: 1794  |  Height: 958  |  Size: 91 KiB

Loading…
Cancel
Save