总结:docker 文档

article/2025/3/11 3:26:16

1绪论

1.1课题研究背景与意义

1.1.1课题的背景

使用Docker的原因:

1、首先docker很实在的一个应用便是开发工具直接通过安装一个docker就可以了,不必再繁复的来搞环境的问题了。这样针对于新人乃至开发人员来说直接分析业务上手代码就好了,节省了时间提高了开发的效率;

 2、可移植性,docker的兼容性很好。比如后台所使用的是centOS前端同事使用的是Ubuntu,这样在进行调试项目或上线部署项目的时候就可能产生兼容性问题,而将项目由docker打包部署就可以避免这个问题。为什么这么说呢?docker就相当于一个平台,我们所打包的项目便相当于上面的一个个物件,这样物件在一个统一的平台上便不会产生这样的问题了;

 3、与自动化技术相结合,实现程序的自动化。就好比我们的服务器架构突然有一台机器宕机了。docker会通过实时的一个检测,将这种情况进行处理,将这个服务器的所负责的工作任务嫁接转移到另一个平台上,然后给我们发起通知进行修复;

 4、减少基础设施的开支,将项目分模块,进行微服务开发应用。最基础的前后端所应用的环境不一样我们需要分别部署不同的环境,但是我们在docker这里我们可以直接将其部署到docker上,然后对这两端进行搭配就好了(也就是一个代码库多重部署)这样在很大程度上就节省了开支;

5、固有的安全性,具有“隔离”的特性将程序中不安全的内容进行隔离,这样集装箱化的环境有助于减少攻击面。

 

 

2相关技术简介

2.1 关键技术介绍 

2.1.1 JSP

JSP的原型是 Servlet[3-4]。Jsp简单的说就是含有java代码的html[5-7],在html中嵌入部分java代码使得静态的html页面获得动态的数据,从而实现动态页面。其基本的工作原理服务器再前端页面中被请求后对页面中的java代码进行处理,然后把生成的网页返回给客户端从而达到一个数据与页面的完美结合。JSP的工作原理如图2-1所示:

 

图0–1 JSP工作原理图

2.1.2 Spring

Struts2在传统的MVC模式中扮演着重要的角色,其主要功能是实现了MVC中的C即“control”。它将拦截器拦截到的URl分配给相应的action去处理,程序员可通过配置文件配置相应的路径,也可使用注解的方式,简单快捷的去配置路径,此路径就是去其它层寻找协助,这样的话减少耦合性,便于代码的修改和维护。处理完成后根据其配置文件中路径由控制器转发到浏览器[8]。

2.1.3 SpringMVC

springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。

springmvc是一个基于mvc的web框架。

 

如图 2-2 SpringMVC处理流程所示:

 

 

 

图 2-2 SpringMVC处理流程

 

2.1.4 Mybatis

Mybatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。Mybatis避免了几乎所有的JDBC代码和手动

设置参数以及获取结果集。Mybatis可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJOs(Plain Oldjava Objects,普通的Java对象)映射成数据库中的记录。

 

执行流程如图 3所示:

 

 

 

图 3

2.1.5 JQuery

jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

 

jQuery 的核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制 和丰富的插件。jQuery兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等。

2.2开发工具

Spring Tool Suit是一个开源的开发工具,其体积小功能大,深受开发者的喜爱[11]。在Spring Tool Suit中开发javaEE,方便快捷。在Spring Tool Suit的第一个主页面,左侧边框有一个工作区,在工作区内存放开发人员的资源,其独特的结构展示,让程序员在繁杂的目录中可以快速定位到方法的位置。结合本次研究课题的开发需求,该开发工具可以完成胜任,Spring Tool Suit是在eclipse的基础上集成了spring产生的一款IDE工具。

Eclipse的工作原理如图 4所示。

 

图 4

2.3 本章小结

在本章中,主要从技术方面入手,确定了实现本项目使用到的开发环境,Spring Tool Suit开发工具以及所使用到的关键开发技术JSP、Spring、Spring Web MVC、MyBatis和关系型数据库Mysql。

 

3系统分析

创建一个系统,该用户可以通过游客的身份进行浏览图书商品,如果将商品加入购物车或者购买,必须注册一个有效的用户,注册信息通过邮箱进行激活,注册之后能够通过账号登陆在图书商城在线浏览,买书等功能。

3.1 可行性分析 

本此系统的开发使用的是Spring Tool Suit开发环境,Spring Tool Suit是免费的,而且功能强大。对于本此系统的研究,该系统的模块众多,因此使用ssm开发框架的mvc模式进行管理。数据库方面则采用mysql简小的关系型数据库,免费的数据库。

所以在技术上是可行的。

这个系统可以应用于个人图书商城,方便进行网上交易。

通过对以上两个方面的可行性分析,确定系统可以进行开发。

3.2 主要功能分析

3.2.1  会员登录功能

通过前端页面提交的数据与数据库数据进行验证,验证成功即可登录;否则,无法登录。

 

3.2.2  会员注册功能

会员通过提交账户信息,然后进行邮箱验证,会员即注册成功。

3.2.3  普通查询功能

通过查询框,输入想要查询的书籍名称,即可查询出结果。

3.2.4  高级查询功能

通过使用高级查询,输入想要查询的书籍名称、作者、出版社进行查询,即可查询出结果。

3.2.5  添加购物车功能

选择想要的商品,通过点击购物车按钮,提前存放在购物车,方便之后进行查看。

 

3.2.6  支付功能功能

功能描述如图 5所示:

 

  1. 客户在商户下单购买商品,点击立即购买。
  2. 从购买页面跳转到支付收银台页面。
  3. 选择xx网银支付。下面是跳转中后台系统做的事情 ↓
  4. 商户后台组装form表单,包含订单信息、和签名信息等。(表单见下节)
  5. 跳转到网银页面,显示订单信息
  6. 输入账号密码,支付。
  7. 支付成功。
  8. 页面跳转(回调商户页面)。
  9. 商户支付成功页面。(更新订单状态)
  10. 客户支付成功!

 

 

 

图 5

3.2.7  分页显示功能

从数据库中将所有数据查询出来,分页显示在前端页面上,每页显示若干条数据,并实现"首页","上一页","下一页","尾页","跳转至指定页码","显示当前页码"等功能

4系统设计

本章将阐述本系统的总体设计思路,将系统的设计思路以更加清晰的方式呈现出来。主要从本系统的整体设计框架、如何设计并实现UI视图和系统各个模块的主要功能方面进行说明。

4.1概要设计

本系统设计的主要功能模块有会员登录、普通查询、高级查询、添加购物车、支付功能、会员注册、

邮箱激活、分页显示的整体功能模块如图 6所示:

 

 

图 6

 

4.2详细设计

本系统的核心功能是支付,通过银行第三方集成的支付进行支付功能实现。同时为提高用户体验,会对软件的功能进行设计。

4.2.1支付功能

支付功能详解:

 

  1. 用户在商城选购商品并发起支付请求;

 

  1. 商城将支付订单通过B2C网关收款接口传送至支付网关;

 

  1. 用户选择网银支付及银行,支付平台将订单转送至指定银行网关界面;

 

  1. 用户支付完成,银行处理结果并向平台返回处理结果;

 

  1. 支付平台接收处理结果,落地处理并向商户返回结果;

 

  1. 商城接收到支付公司返回结果,落地处理(更改订单状态)并通知用户。

 

一般而言支付系统会给商户设置有“可用余额”账户、“待结算”账户;系统在接收到银行返回支付成功信息会进行落地处理,一方面更改对应订单状态,另一方面在商户待结算账户记入一笔金额;该笔金额,系统会根据结算周期从待结算账户--->“可用余额”账户。

 

 

 

图 7 支付流程

 

 

 

 

图 8  支付详情

 

 

系统总流程如 9所示:

图 9

 

 

   

4.3本章小结

本章我们对该应用系统的总体设计进行了介绍。既介绍了应用总体的设计框架,又分析了支付功能模块的设计思想。在分析过程中,我们通过图文结合的方式使得阐述过程更加清晰易懂。

 

5.系统实现

本章根据上一章的总体设计通过代码来实现本系统的相应功能,采用Java面向对象的。。。

5.1项目部署

5.1.1 环境

两台虚拟机:

 

都需要安装docker、docker-compose

 

 

5.1.2 安装Docker

  1. 由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:

 

$ sudo apt-get remove docker docker-engine docker-ce docker.io

 

  1. 更新apt包索引:

$ sudo apt-get update 

 

  1. 安装以下包以使apt可以通过HTTPS使用存储库(repository):

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

 

  1. 添加Docker官方的GPG密钥:

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 

 

  1. 使用下面的命令来设置stable存储库:

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 

 

  1. 再更新一下apt包索引:

$ sudo apt-get update

 

  1. 安装特定版本的Docker CE,请列出repo中的可用版本,然后选择并安装: 列出您的仓库中可用的版本:

sudo apt-cache madison docker-ce 

 

  1. 按其完全限定的包名称安装特定版本,例如,包名称( )=版本字符串(第2列)

$ sudo apt-get install docker-ce=<VERSION>

 

如:

 

$ sudo apt-get install docker-ce=17.03.0~ce-0~ubuntu-xenial

https://img-blog.csdnimg.cn/20190511092210882.png

 

  1. 验证docker

 

    • 查看docker服务是否启动:

         $ systemctl status docker

 

    • 若未启动,则启动docker服务:

        $ sudo systemctl start docker

 

 

5.1.3 Harbor仓库搭建

1.   安装docker(同5.1.1安装docker)

2.   用pip安装docker-compose

# apt install python-pip

# pip install  docker-compose

测试:

# docker-compose version

3.   下载Harbor离线包

安装有两种方式,一种是off-line ,一种是on-line,即离线和在线安装,离线安装需要下载的安装包较大,在线安装下载的安装包很小,我选择的是离线版本v1.4.0-rc1。

 

 # wget http://harbor.orientsoft.cn/harbor-v1.4.0/harbor-offline-installer-v1.4.0.tgz

 

4. 解压,进入安装包

# tar xf harbor-offline-installer-v1.4.0-rc1.tgz

# cd /opt/harbor

5.   修改配置文件

修改配置文件为:/opt/harbor/harbor.cfg,内容为:

 

 

6.   配置docker

#因为docker默认使用的是https连接,而harbor默认使用http连接,所以需要修改docker配置标志insecure registry不安全仓库的主机!

 

第一种方法:(我的使用)

#vim /etc/docker/daemon.json

 

     第二种方法;

 #vim /etc/systemd/system/multi-user.target.wants/docker.service

 ExecStart=/usr/bin/dockerd --insecure-registry=192.168.186.120

#只加上--insecure-registry这个参数即可。

 

两种都重启docker

#systemctl daemon-reload

#systemctl restart docker.service

 

7.   执行安装脚本:

#会拉取好几个镜像下来,及检查环境:

#./install.sh

 

 

 

8.   Harbor启动和停止

Harbor 的日常运维管理是通过docker-compose来完成的,Harbor本身有多个服务进程,都放在docker容器之中运行,我们可以通过docker ps命令或docker-compose ps命令来查查看。

 

进入Harbor目录执行如下命令即可:

① 启动Harbor

# docker-compose start

② 停止Harbor

# docker-comose stop

    •  重启Harbor

# docker-compose restart

 

9.   访问测试

在浏览器输入192.168.186.120/harbor。请大家根据自己的配置情况输入访问的域名;

默认账号密码: admin / Harbor12345 登录后修改密码

 

 

 

登录后进入harbor操作界面

 

 

 

5.1.4 部署项目

本项目采用Docker-compose与Docker结合的方式进行部署JavaWeb项目。

 

  1. Ubuntu  DockerFile 文件

 

#使用的基础镜像

FROM ubuntu:14.04

#作者信息

MAINTAINER xxj "1521107575@qq.com"

#安装vim

RUN apt-get update && apt-get install -y vim && apt-get install -y curl

#创建目录

RUN mkdir -p /docker/jdk1.8

#把当前目录下的jdk文件夹添加到镜像

ADD jdk1.8  /docker/jdk1.8

#创建目录

RUN mkdir -p /docker/tomcat7

#把当前目录下的jdk文件夹添加到镜像

ADD tomcat7  /docker/tomcat7

 

#添加环境变量

ENV JAVA_HOME /docker/jdk1.8

ENV TOMCAT_HOME /docker/tomcat7

ENV PATH $PATH:$JAVA_HOME/bin:$TOMCAT_HOME/bin

#暴露8080端口

EXPOSE 8080

#启动时运行tomcat

CMD ["/docker/tomcat7/bin/catalina.sh","run"]

 

  1. docker-compose.yml 文件

 

 

version: '2.2'

services:

  ubuntu:

    restart: always

    build: ./ubuntu

    image: ubuntu

    container_name: xxj2

    hostname: xxj2

    ports:

     - "9000:8080"

    volumes:

     - "$PWD/webapps:/docker/tomcat7/webapps"

    

    networks:

      webnet:

        ipv4_address: 172.19.0.13

  mysql:

    image: mysql:5.7

    ports:

     - "5000:3306"

    environment:

      - MYSQL_ROOT_PASSWORD=123456

    volumes:

      - "./mysql:/var/lib/mysql"

      - "/etc/mysql/mysql.conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf"

      - "./init:/docker-entrypoint-initdb.d/"

    networks:

      webnet:

        ipv4_address: 172.19.0.12

    container_name: "ssm_mysql"

hostname: ssm_mysql

 

 

networks:

  webnet:

    driver: bridge

    ipam:

      config:

        - subnet: 172.19.0.0/24

          gateway: 172.19.0.2

 

  1. 相关目录结构

 

 

  1. 启动

使用docker-compose up –d在docker-compose.yml目录下启动项目。

  1. 销毁、停止、重启容器

 

    • 销毁

docker-compose down

    • 停止

docker-compose stop

    • 重启

docker-compose restart

 

5.2图书商城系统展示

5.2.1首页展示

展示图 10图书商城系统首页

 

 

 

 

图 10图书商城系统首页


http://chatgpt.dhexx.cn/article/kMRLIAVM.shtml

相关文章

Docker学习中文文档大全、dockerdocker-compose实战

文章目录 Docker1.什么是 Docker1.1 官方定义1.2 Docker的起源 2.为什么是Docker3.Docker和虚拟机区别4.Docker的安装4.1 安装docker(centos7.x)4.2 bash安装(通用所有平台) 5.Docker 的核心架构6. Docker 配置阿里镜像加速服务6.1 docker 运行流程6.2 docker配置阿里云镜像加速…

Docker官方文档学习笔记(二):Docker Desktop入门

文章目录 下载并启动教程镜像Docker Dashboard&#xff08;Docker仪表板&#xff09;体验示例APP下载APP代码创建APP的容器镜像不使用代理的话&#xff0c;下载起来可能会很慢&#xff0c;两种办法&#xff0c;换源或者使用代理 启动APP容器更新APP更新源代码删除旧容器启动刚才…

Docker中文文档 分享

Docker中文文档 https://dockertips.readthedocs.io/en/latest/ 感谢 麦兜搞IT 老师的Docker中文笔记 我是正版付费用户&#xff0c;购买了老师相关的课程以及捐赠 受益匪浅&#xff0c;在此宣传一下

Docker帮助文档

盗图一张&#xff1a; 帮助文档 $ docker --help用法: docker COMMAND A self-sufficient runtime for containers …

Docker官方文档阅读笔记

文章目录 Dockerfile的书写Dockerfile常见问题RUN 和CMD的区别 通过Dockerfile构建应用启动应用利用Volume持久化Container数据到宿主机上(named volume)创建volume启动容器时候使用-v参数volume所同步的容器数据在宿主机哪里? 利用bind mounts将宿主机的数据同步至Container如…

深入浅出Docker文档,学习Docker神器

前言 随着k8s 作为容器编排解决方案变得越来越流行&#xff0c;有些人开始拿 Docker 和 k8s进行对比&#xff0c;不禁问道&#xff1a;Docker 不香吗&#xff1f; k8s 是kubernets的缩写&#xff0c;’8‘代表中间的八个字符。 其实 Docker 和 k8s 并非直接的竞争对手&#x…

windows系统部署docker文档

#windows系统部署docker文档 一. 安装docker对系统版本的不同要求 1.对于win7、8及部分win10版本 win7、win8、win10的专业版或企业版&#xff08;内部版本15063之前&#xff09;及win10家庭版&#xff08;内部版本19018之前&#xff09;需要利用docker toolbox来安装。查看对…

Docker安装文档

目录 1.什么是Docker? 2.Docker是干嘛的&#xff1f; 3.Docker基本组成 3.1.docker流程 4.Docker安装 4.1.环境准备 4.2.卸载Docker 4.3.需要的安装包 4.4.设置镜像仓库 4.5.更新yum索引 4.6.安装docker &#xff08;docker-ce 社区版免费 docker-ee 企业版&…

docker学习文档

目录 一、docker安装&#xff08;环境&#xff1a;Centos&#xff09;&#xff08;一&#xff09;、在线安装1、docker官网2、找到在CentOS中安装docker的文档3、判断安装docker的CentOS环境是否符合要求4、卸载旧版本5、安装gcc相关工具5.1、判断CentOS是否能上外网5.2、安装g…

docker虚拟化技术文档(自己总结最全版本)

目录 1 使用Docker虚拟化出一个Centos7操作系统&#xff08;140、141机器上执行&#xff09; 2 1.1 Docker安装 3 1.1.1 支持的操作系统 3 1.1.2 前提条件 3 1.1.3 使用yum安装&#xff08;CentOS7下&#xff09; 3 1.1.4 使用脚本安装Docker&#xff08;Centos7下&#xff09…

Docker 详细文档

Docker 文档 目录 ⒈ 简介... 2 1.1什么是容器&#xff1f;... 2 1.2 什么是Docker&#xff1f;... 3 1.3 Doceker的目标... 3 1.4 Docker 的使用场景... 3 ⒉ Docker 的基本组成... 3 2.1 Docker 客户端/守护进程... 3 2.2 Docker 镜像... 4 2.3 Doceker Co…

我的世界数据包制作(一)

我的世界数据包教程(一) 本人一直是minecraft粉丝&#xff0c;最近学习数据包制作&#xff0c;看网络上的中文教程挺少的&#xff0c;决定在学习的同时自己出一个专栏。OK&#xff0c;让我们直接进入专题&#xff01; 一、数据包是什么&#xff1f; 数据包是在java版1.13时添加…

饥荒联机版Mod开发——制作简单的物品(三)

饥荒联机版Mod开发——制作简单的物品&#xff08;三&#xff09; 前言建立文件夹及mod图标把文件夹添加到VS Codemod代码的入口——modmain探寻官方代码看懂官方代码创建动画、贴图动画修改动画相关代码 物品栏贴图修改贴图相关代码 添加物品名字&#xff0c;检查对话传送门 前…

我的世界mod服务器详细搭建

我的世界服务器搭建以及mod安装 服务器准备&#xff08;推荐使用Linux系统&#xff09;阿里云服务器购买xshell、xftp连接服务器1.安装配置java环境&#xff0c;java82.安装虚拟终端screen3.获取mc服务器jar包4.首次启动mc服务器端5.同意最终用户许可协议 EULA6.根据需要修改se…

我的世界在自建的服务器中装mod,《我的世界》中国版服务器MOD添加教程

我的世界中国版怎么加MOD 中国版功能组件怎么安装 《我的世界中国版》加MOD方法详解 1、首先右键你的MC中国版启动器找到打开文件夹位置&#xff0c;(如果右键中没有打开文件夹位置的话可以点击属性-快捷方式-打开文件夹所在位置)。 2、点击进入MCLauncherDownloadGame你需要添…

我的世界javamod怎么装_我的世界MOD安装方法图文教程_我的世界MOD怎么安装_牛游戏网...

【导读】很多玩家不知道我的世界MOD怎么安装&#xff0c;怎么用&#xff0c;今天小编就为你讲解一下我的世界MOD怎么用&#xff1f;一起来了解一下吧&#xff01; 第一部分-安装JAVA7 下载完成后&#xff0c;打开&#xff1a; 安装(别更改目标文件夹) 安装完成 第二部分-选择游…

我的世界制作服务器rj,我的世界星系mod常用工具制作方法

我的世界星系mod中有许多有用的工具&#xff0c;下面小编为大家带来各种工具的详细介绍。 一、常用工具 全星系mod中**的装备系列&#xff0c;耐久度与戴斯系列装备相同 合成&#xff1a;致密钛板木棒 星系mod中装备等级第二高的系列 合成&#xff1a;致密戴斯板戴斯棒 戴斯稿子…

我的世界1.13 mod制作——Item材质及翻译(四)

1.13 游戏改了好多内容&#xff0c;就拿item来说&#xff0c;没有那么多花里胡哨冗余的代码了。 单单是给item上材质&#xff0c;研究老长时间&#xff0c;看了官方的教程&#xff0c;非官方的教程&#xff08;国内的教程&#xff0c;国外的墙的太厉害&#xff0c;英语底子差也…

我的世界自制mod{0}

目录 路径如上 games/com.mojang/rescource_packs 创建一个叫做manifest.json的文件 里面创建叫做functions sounds shaders textures等等的一些名称 打开我的世界 面相国际基岩版 网易版不知道可不可以 我用的是手机编写的mod 其实就是懒 我认为手机写更加简便 用的是m…

【MineCraft】-- Mod制作物品与方块

基于上一文章继续&#xff0c; 下面完成以下功能&#xff1a;制作一个方块和物品&#xff0c;物品有描述信息。 快速指南 &#xff08;第一次看请跳过这步&#xff09; 如何制作物品与方块 1、/resources/assets/xxx/lang/... 添加物品或方块id 例&#xff1a; item.dem…