一文带你读懂Docker容器 3

电子说

1.2w人已加入

描述

七、Docker实战

这里我使用之前的软件实践项目来进行Docker从构建到部署一整套实验。

Step1:Maven打包

进入项目目录,在Terminal运行Maven命令,通过Maven构建SpringBoot Web项目,将其打成Jar包。

mvn package -Dmaven.test.skip=true

Docker

image-20220616094117236

发现项目目录下生成了一个可执行Jar包,这里我们可以通过jar包来测试。

Step2:上传Jar包

将Jar包通过FTP工具上传到服务器~/healthySystem目录下

Step3 :编写Dockerfile

~/healthySystem目录下,使用vim Dockerfile创建一个Dockerfile文件,然后在文件编辑如下内容:

#根据Java15为基础镜像
FROM openjdk:11.0.15-oraclelinux7


MAINTAINER tyf


#RUN yum install redis && yum install mysql


#将当前目录下jar包复制到Docker镜像中
#将需要额外加载的配置文件加入镜像
COPY *.jar /app.jar
COPY *.yml /application.yml


#暴露出的端口
EXPOSE 8079


ENTRYPOINT ["java", "-jar", "/app.jar"                                                                                                                                              ~

修改完毕后,保存退出。

Step4:构建Docker镜像

~/healthySystem目录下执行:

docker build -t healthy:1.0 .

Docker

结果显示Successfully built ......,构建Images成功

Step5: 测试镜像

docker run --name healthy --network host healthy:1.0 #执行新实例

Docker

image-20220617195045392

执行docker ps查看容器状态

Docker

image-20220617195129284

打开服务器防火墙,访问http://81.68.239.206:8093/welcome.htm,正常启动。

Docker

image-20220617195245538

Step5: 上传至阿里云仓库

这里使用我们上述使用的阿里云镜像仓库和中心仓库,在阿里云镜像仓库创建完成相应的远程仓库后,按照官方操作步骤来完成镜像推送。

  1. 登陆至阿里云 Docker Registry

    docker login --username=谭永锋nb registry.cn-shanghai.aliyuncs.com
    

    Docker

    image-20220617201312628

  2. 更改镜像Tag

    #docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/sleepytans/webapp:[镜像版本号]
    docker tag 9e78dbdd6dd8 registry.cn-shanghai.aliyuncs.com/sleepytans/webapp:1.0
    

    Docker

    image-20220617201707730

  3. 上传镜像

    #docker push registry.cn-shanghai.aliyuncs.com/sleepytans/webapp:[镜像版本号]
    docker push registry.cn-shanghai.aliyuncs.com/sleepytans/webapp:1.0
    

Docker

image-20220617201954652

  1. 登陆阿里云查看远程镜像仓库,显示上传成功。
    Docker

    image-20220617202025429

Step6:测试部署

网站部署步骤:https://github.com/TanYongF/healthyDay

基本流程:

  • 安装Mysql、Redis
  • 配置项目配置文件
  • 执行下面命令
  • 访问 http://ip:8093
docker run --name healthy --network host registry.cn-shanghai.aliyuncs.com/sleepytans/webapp:1.0

八、实验总结

本次大作业通过学习Docker基本安装、数据管理、网络等基础知识,对Docker的诞生由来以及解决了多依赖项目部署复杂的问题,同时针对特定内容对Docker例如网络模式,其基于底层隔离和资源限制的基础——CGroup以及Namespace技术有了一定的理解。

同时又对之前的软件实习项目的部署引入Docker进行改造,通过编写Dockerfile以及Docker-compose文件构建出了项目对应的镜像并且上既然到了云端,从实践方面体会到了Docker对实际项目运维部署方面带来的巨大便捷。

由于自身的学习方向是Java后端方向,对于现在接触比较多的微服务、集群来讲,Docker等云原生工具大大降低配置部署难度,同时也让我对DevOps开发流程的理解逐渐加深,也促使我将将传统的开发思想逐渐转变成容器化思想。但是鉴于时间紧迫,对Docker底层原理的细节了解还不是很充分,同时对于业界比较流行的Kubernetes(k8s)等Docker容器编排工具还没有具体的体验学习,但是学无止境,未来我也会继续加深对其中云原生技术的深入学习,努力将自己打造成为新一代DevOps工程师。

参考资料

  1. Docker docs
  2. Docker访问宿主机
  3. Docker基本指令使用.菜鸟教程
  4. Docker入门.Meituan Tech
  5. https://www.xmind.net/m/RHSz/
  6. https://yeasy.gitbook.io/docker_practice/advanced_network
  7. iptables详解
  8. Docker.Wiki百科
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分