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 +
+
+
+

Hello Docker!

+

This is being served from a docker container running Nginx.

+

my id is xxxx,my name is xxx

+
+
+
+``` + +#### 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`端口。将打包命令和浏览器页面截图,并插入实验报告中*************** \ No newline at end of file diff --git a/file/.DS_Store b/file/.DS_Store index 65fd59c..e971352 100644 Binary files a/file/.DS_Store and b/file/.DS_Store differ diff --git a/file/assignment2/.DS_Store b/file/assignment2/.DS_Store index 818501a..280acd9 100644 Binary files a/file/assignment2/.DS_Store and b/file/assignment2/.DS_Store differ diff --git a/file/assignment2/FoodTrucks.zip b/file/assignment2/FoodTrucks.zip index 0f16f57..3bde1d9 100644 Binary files a/file/assignment2/FoodTrucks.zip and b/file/assignment2/FoodTrucks.zip differ diff --git a/file/assignment2/index.html b/file/assignment2/index.html new file mode 100644 index 0000000..2d857df --- /dev/null +++ b/file/assignment2/index.html @@ -0,0 +1,47 @@ + + + + + + + Docker :) + + + + + + + + + + + + + + + + + + + + +
+
+
+

Hello Docker!

+

This is being served from a docker container running Nginx.

+

my id is xxxx,my name is xxx

+
+
+
+ + + + diff --git a/img/.DS_Store b/img/.DS_Store index d4ad99e..48393c8 100644 Binary files a/img/.DS_Store and b/img/.DS_Store differ diff --git a/img/assignment2/.DS_Store b/img/assignment2/.DS_Store new file mode 100644 index 0000000..17c4103 Binary files /dev/null and b/img/assignment2/.DS_Store differ diff --git a/img/assignment2/static-web-2.png b/img/assignment2/static-web-2.png new file mode 100644 index 0000000..f9cfef0 Binary files /dev/null and b/img/assignment2/static-web-2.png differ