在阿里云申请 配置一台CentOS 7.7的ECS实例 云服务器 。基于ECS实例快速搭建一个Docker环境 并在Docker环境中部署一个Nginx服务 再将CounterWebApp制作镜像并发布到DockerHub 然后部署上线。
2.涉及的相关知识1 容器技术
容器是一个允许我们在资源隔离的过程中 运行应用程序和其依赖项的 、轻量的 、操作系统级别的虚拟化技术 运行应用程序所需的所有必要组件都打包为单个镜像 这个镜像是可以重复使用的。当镜像运行时 它是运行在独立的环境中 并不会和其他的应用共享主机操作系统的内存、CPU或磁盘。这保证了容器内的进程不会影响到容器外的任何进程。
2 Docker的原理
Docker 容器的实质就是一个虚拟环境 容器内包含单一应用程序和它所需的全部依赖环境 相当于最小化的虚拟机。它的状态不会影响到宿主机 反过来宿主机的状态也不会影响到容器。只有容器预先设置好的端口和存储卷才能与外界环境通信 除此之外 对外界而言容器就是一个黑箱 外界看不到它的内在 也不需要关心。
Docker 的部署较简单 容器从镜像创建 而镜像内包含所需的全部依赖环境 做到了一个镜像直接部署 不再需要修改服务器的系统配置。注意 Docker 镜像 Image 是无状态的 而容器 Container 是有状态的 容器在运行时生成的数据是被保存在容器内的 这就是说容器内的进程生成的临时文件仍然被存放在容器内 并且当整个容器被删除时也会跟着被删除。如果生成的文件包含重要资料 则需要把对应生成的目录指向宿主机目录或者数据卷容器。数据卷容器与普通容器没有区别 只不过里面不包含应用进程 只为了保存数据而存在的容器。不要在容器内保存重要数据 除已挂载的数据卷位置 也就是说 容器的内部状态应该是不重要的 容器可以随时删除随时新建。不应在容器内部保存配置文件 而应将调试确认好的配置文件移出容器并妥善保存。
3 一个完整的Docker 以下几个部分组成
Docker Client客户端硬件 PC 微型计算机、1G以上内存 40G以上硬盘
系统环境:Window、Linux
软件 阿里云服务器、FinalShell
三、实验准备1.申请阿里云账号
申请阿里云账号并领取学生优惠
登录阿里云 https://help.aliyun.com/learn/getting-started.html 官网完成阿里云的注册——实名认证——学生认证——专享优惠购买 需要完成模拟使用与成长计划考试
2.下载SSH工具 这里我下载的是FinalShell。
四、实验步骤第一步 连接ECS服务器1.打开FinalShell 新建SSH连接 Linux 填写信息后点击确认
2.在终端中连接ECS 用户名以及ip为创建ECS服务器的登录名和公网Ip
登陆成功后会显示如下信息
第二步 安装Docker CEDocker有两个分支版本 Docker CE和Docker EE 即社区版和企业版。本教程基于CentOS 8安装Docker CE。
1.安装Docker的依赖库
yum install -y yum-utils device-mapper-persistent-data lvm2
输入结果如下
2.添加Docker CE的软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
输入结果如下
3.安装Docker CE
yum makecache fast
yum -y install docker-ce
输入结果如下
4.启动Docker服务
systemctl start docker
第三步 使用Docker安装Nginx服务1.查看Docker镜像仓库Nginx的可用版本
docker search nginx
命令输出结果如下所示
2.拉取最新版的Nginx镜像
docker pull nginx:latest
命令输出结果如下所示
3.查看本地镜像 我们可以看见nginx
docker images
命令输出结果如下所示
4.运行容器
docker run --name nginx-test -p 8080:80 -d nginx
命令参数说明
--name nginx-test 容器名称。5.在浏览器访问Nginx
1 换到实列列表 点击管理
2 点击安全组
3 点击配置规则——快速添加增加选择HTTP 8080
添加成功显示如下
4 配置完成后 访问公网IP 即可访问nginx
第四步 在本地虚拟机制作镜像1.从gitlab上拉取已经开发好的CounterWebApp项目
git clone https://gitlab.com/bobyuan/20190224_cloudappdev_code.git
cd 20190224_cloudappdev_code/spring_maven_webapp/CounterWebApp
输出结果如图下
2.将项目打包成war文件
mvn package
输出结果如下
打包成功结果输出如下
3.查看是否打包成功
ls -l target/CounterWebApp.war
4.在war包相同路径创建一个Dockerfile文件写以下语句
from tomcat
MAINTAINER pinkxu 2247818785 qq.com
COPY CounterWebApp.war /usr/local/tomcat/webapps
输入结果如下 这里的pinkxu 和邮箱是申请Dockerhub账号的用户名和邮箱
5.构建自己的镜像
docker build .
输出结果如图下
可以看到已经构建成功 只是没有给镜像命名 执行以下命令给镜像命名以及指定版本并重新构建
docker build -t pinkxu:latest .
输出结果如下
第五步 将镜像发布到DockerHub1.在docker上登Dockehub
docker login --username pinkxu
输出显示结果如下
2.在dockerhub上创建仓库
结果如图下所示
3.给镜像打tag 一定要在tag前面加上用户名
docker tag pinkxu pinkxu/cloudxu:v1
输出显示结果如下
4.上传镜像到Dockerhub
docker push pinkxu/cloudxu:v1
输入结果如下
5.在Dockerhub中看见上传的镜像
第六步 在阿里云上部署镜像1.从dockerhub上拉取counterwebapp镜像到阿里云服务器上
docker pull pinkxu/cloudxu:v1
输出结果如图下
2.通过端口运行镜像
docker run -d -p 8080:8080 pinkxu
输出结果如下
3.在浏览器输入120.79.178.135 8080/war包名 运行war包
输出结果如下
本文转载自微信公众号「crossoverJie」,作者crossoverJie。转载本文请联系cross...
//通常情况下,应该使用double型,因为它比float型更精确。 //[举例说明]double ...
TOP云 1月13日讯,不知是受股市影响还是怎么着,最近 域名 圈似乎达成了广泛的共...
随着业务数据的增加,原有的数据库性能瓶颈凸显,以此就需要对数据库进行分库分...
1. 接口描述 接口请求域名: cvm.tencentcloudapi.com 。 本接口 (ModifyInstanc...
云点播支持多种方式,播放上传及转码后的视频。其中,播放主要分为以下三类场景...
作者|弈川 ? 海底小纵队学英语隶属于成都创感时代科技有限公司,是万达宝贝王全...
想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区 https://...
作者 焦方飞 这几年大家会发现 业界频繁提到可观测 很多人会问可观测跟之前传统...
专属主机(Dedicated Host,DeH),是指用户可独享的专属物理主机资源。您可以将...