diff --git a/.DS_Store b/.DS_Store index 398e349..6a02b5c 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/Assignment2.md b/Assignment2.md index 934a6d6..fe9b120 100644 --- a/Assignment2.md +++ b/Assignment2.md @@ -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 +
This is being served from a docker container running Nginx.
+my id is xxxx,my name is xxx
+This is being served from a docker container running Nginx.
+my id is xxxx,my name is xxx
+