容器化技术实验报告

本文是一份Docker实验报告,详细介绍了从Docker的安装配置到运行镜像、基本操作,以及结合MySQL进行容器化的实践。内容涵盖Docker的介绍、在Ubuntu上的安装步骤、配置用户、运行测试镜像、Docker基本操作教程,以及如何使用Docker运行MySQL。

服务计算 容器化技术与容器服务


在上次的作业中,我们体验了使用API先行的理念,搭建前后端分离开发的应用。而本周我们学习了关于docker的相关知识,对照着课件我们进行了相关的部署配置实验,下面是我的实验报告。


一、Docker介绍

在我们日常的学习中,docker是一个耳熟能详的词汇,但是具体docker是什么,我们确似乎从来不知道,只是简单的知道在现在的企业开发中,docker的应用非常广。因此,在开始本次的正式试验之前,我想对docker的定义进行一个大致的阐述。

Docker是一个开放源代码软件项目,让应用程序部署在容器化下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制。

Docker利用Linux核心中的资源分离机制,例如cgroups,以及Linux核心namespace,来创建独立的容器。这可以在单一Linux实体下运作,避免引导一个虚拟机造成的额外负担。Linux核心对名字空间的支持完全隔离了工作环境中应用程序的视野,包括行程树、网络、用户ID与挂载文件系统,而核心的cgroup提供资源隔离,包括CPUblock I/O与网络。

——节选自Wiki百科

简单点来说,docker的作用是打包应用程序及其虚拟容器,使应用程序可以在任何平台上运行,包括公有云、私有云、单机等等。

至于为什么要使用docker,潘老师的课件中有一张图,我觉得可以放在这里。
在这里插入图片描述


二、Docker的安装配置

使用系统:Ubuntu 19.04

因为之前把Centos的虚拟机搞崩了的缘故,又懒得再重装了,所以我们本次的实验直接基于ubuntu进行。因为课件上并没有对安装这个部分多说太多,所以我们主要通过查找资料来完成这个部分,下面是详细的安装流程。

1. 使用APT安装
A. 添加相关软件包

因为使用APT来进行安装的过程中,为了防止下载过程不被篡改,所以需要使用https。因为这一特性,我们需要先一步添加HTTPS传输所需要的软件包以及CA证书。

当然在开始之前,需要update一下:

sudo apt-get update

然后执行下面的指令,进行相关包的安装:

sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common

在这里插入图片描述

B. 添加GPS密钥

为了确保所使用软件包的合法性,我们需要添加先关软件源的GPS密钥。

tips:

因为网络的问题,我们本次使用的是中科大的源,而不是官方的源。

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

### 一、实验目的 本次实验旨在深入理解 Servlet 容器模型的工作原理,掌握 Servlet 的开发、部署和运行机制,熟悉 Servlet 与 Servlet 容器之间的交互过程,通过实际操作加深对 Java Web 开发中核心概念的理解,提高运用 Servlet 技术解决实际问题的能力。 ### 二、实验环境 - **操作系统**:Windows 10 - **开发工具**:IntelliJ IDEA 2023.1 - **Servlet 容器**:Apache Tomcat 9.0 - **JDK 版本**:JDK 1.8 ### 三、实验原理 Servlet 是运行在服务器端的 Java 小程序,用于处理客户端的请求并生成响应。Servlet 容器是 Servlet 的运行环境,负责加载、实例化、管理和调用 Servlet。当客户端向服务器发送请求时,Servlet 容器接收请求,根据请求的 URL 找到对应的 Servlet,并调用其相应的方法(如 doGet 或 doPost)来处理请求,最后将处理结果返回给客户端。 ### 四、实验步骤 #### 4.1 创建 Servlet 项目 在 IntelliJ IDEA 中创建一个新的 Maven Web 项目,添加 Servlet API 依赖到 `pom.xml` 文件中: ```xml <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> ``` #### 4.2 编写 Servlet 代码 创建一个简单的 Servlet 类,处理客户端的 GET 请求并返回一个简单的响应: ```java import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; @WebServlet("/hello") public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=UTF-8"); PrintWriter out = resp.getWriter(); out.println("<html>"); out.println("<head><title>Hello Servlet</title></head>"); out.println("<body>"); out.println("<h1>Hello, World!</h1>"); out.println("</body>"); out.println("</html>"); } } ``` #### 4.3 部署项目到 Servlet 容器 将项目打包成 WAR 文件,然后将 WAR 文件复制到 Tomcat 的 `webapps` 目录下。启动 Tomcat 服务器,Tomcat 会自动解压 WAR 文件并部署项目。 #### 4.4 测试 Servlet 打开浏览器,访问 `http://localhost:8080/项目名/hello`,如果看到页面显示 “Hello, World!”,则说明 Servlet 部署和运行成功。 ### 五、实验结果与分析 当在浏览器中输入 `http://localhost:8080/项目名/hello` 并回车后,浏览器显示了一个包含 “Hello, World!” 标题的 HTML 页面。这表明 Servlet 容器成功接收到客户端的请求,根据请求的 URL 找到了对应的 `HelloServlet` 并调用了其 `doGet` 方法,最后将处理结果返回给客户端。 ### 六、实验结论 通过本次实验,成功实现了一个简单的 Servlet,并将其部署到 Servlet 容器中运行。实验结果验证了 Servlet 容器模型的工作原理,即 Servlet 容器负责管理 Servlet 的生命周期,接收客户端请求并调用相应的 Servlet 方法来处理请求。同时,对 Servlet 的开发、部署和运行机制有了更深入的理解,为进一步学习 Java Web 开发奠定了基础。 ### 七、实验总结与改进 在实验过程中,遇到了一些问题,如依赖配置错误、项目部署失败等。通过查阅资料和调试,最终解决了这些问题。在后续的学习中,可以进一步深入研究 Servlet 的高级特性,如过滤器、监听器等,以及如何优化 Servlet 的性能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值