Docker

简介: 本文介绍Docker基础操作,涵盖镜像打包、容器管理及Dockerfile编写。通过实例演示如何构建镜像、运行容器并验证服务,适合初学者快速掌握Docker核心技能。

对于docker知识体系还不熟悉的可以参照:Docker教程,涉及知识点如下

  • 镜像知识:打包镜像、查看镜像
  • 容器知识:查看容器、启动容器、查看日志
  • dockerfile知识:编写dockerfile,自定义构建镜像

1.镜像打包

1.工程打jar包

步骤同:Linux打包部署,这里我直接提供打好的jar包以节约时间:📎linuxDemo.jar

2.编写dockerfile文件

dockerfile文件的编写原理:Docker教程 中的“3.DockerFile自定义镜像”,这里我们编写如下:

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/tmp/linux
# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./linuxDemo.jar /tmp/app.jar
# 安装JDK
RUN cd $JAVA_DIR \
 && tar -xf ./jdk8.tar.gz \
 && mv ./jdk1.8.0_144 ./java8
# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

2.生成镜像

完整文件如下:📎jdk8.tar.gz📎linuxDemo.jar

这里我因为基础版本拉取失败,所以将JDK一起打包进去了,所以文件比较大

  • 注意:上述命令执行路径:在对应DockerFile所在路径

3.运行容器

  • 这里必须做端口映射,否则容器内端口我们是无法访问到,必须映射到宿主机

4.验证心跳


相关文章
|
1天前
|
安全 Java 数据安全/隐私保护
通用权限管理模型
本文介绍了ACL和RBAC两种常见权限模型。ACL通过直接为用户或角色授权实现控制,简单直观;RBAC则基于角色分配权限,支持角色继承与职责分离,更适用于复杂系统。还简要提及DAC、MAC、ABAC等模型,帮助读者建立权限管理的全局认知。
|
1天前
|
存储 缓存 运维
一场FullGC故障排查
本文记录了一次Java应用CPU使用率飙升至104%的问题排查过程。通过分析发现,问题根源并非外部流量激增或系统负载过高,而是由于JVM频繁Full GC导致。进一步借助JProfiler分析堆内存快照,定位到多个大对象(List<Map>)占用近900MB内存,造成老年代迅速填满。根本原因为将Excel数据以低效的Map结构加载至内存且长时间驻留。最终提出“治本”(移出JVM内存)与“治标”(精简数据结构)两类解决方案,并总结了从监控识别、工具分析到代码修复的完整排查思路,强调应关注JVM层面指标而非仅依赖机器监控。
 一场FullGC故障排查
|
1天前
|
SQL Dubbo Java
线程池:故障梳理总结
本文从故障与技术双视角剖析线程池类问题,总结数据库慢查询、连接池配置不当等常见故障案例,提炼出fast-fail、超时控制、流控背压等关键防护策略,助力开发者提升系统稳定性。
|
1天前
|
XML Java 数据格式
SpringBoot@Configuration
`@Configuration` 注解用于标记配置类,相当于 XML 配置文件。配合 `@Bean` 可注册 Bean 实例,通过注解方式启动 IOC 容器,实现组件的自动加载与管理。
|
1天前
|
存储 缓存 监控
EFC&CTO:缓存引发数据不一致问题排查与深度解析
EFC客户端在NAS场景下因缓存版本号回退,导致读取旧数据并写坏文件系统。通过日志分析发现,慢请求致dv回退,buffer write时读入NULL覆盖正常数据。修复后测试通过,问题源于分布式缓存与pagecache协同异常。
 EFC&CTO:缓存引发数据不一致问题排查与深度解析
|
1天前
|
运维 NoSQL 测试技术
Redis:内存陡增100%深度复盘
本文复盘了一次Redis因大KEY和缓冲区溢出导致的故障。事故中,业务高峰时大KEY调用量激增,占满带宽,引发内存使用率迅速升至100%,最终导致Redis全面超时不可用。分析发现,虽有淘汰机制,但输出/输入缓冲区因客户端连接积压而暴涨,完全占用内存,使SET/GET命令无法执行。根本原因为缓冲区设计与流量控制不当,建议优化Key大小、合理配置缓冲区及加强压测与监控。
 Redis:内存陡增100%深度复盘
|
1天前
|
自然语言处理 fastjson Java
FastJson:大面积故障规避案例
本文记录了一次由Kotlin语法误用引发的FastJson反序列化严重故障。因将 `{}` 错误赋值给Java对象字段,导致FastJson解析时触发静态标记 `kotlin_error` 被置为true,进而使整个应用的Kotlin反序列化链路崩溃。问题隐蔽且影响广泛,凸显多语言混编下对语法细节掌握的重要性,并提醒开发者不可盲目信任框架,需重视灰度发布与代码审查。
 FastJson:大面积故障规避案例
|
1天前
|
存储 SQL 关系型数据库
MySQL篇
本文详解MySQL核心知识点:查询语句的书写与执行顺序、多表连接方式(内连、外连)、索引类型及底层结构(B+树)、聚簇与非聚簇索引区别、回表查询与覆盖索引优化、联合索引左前缀原则、索引失效场景及SQL性能优化策略,涵盖执行计划分析、慢查询定位与超大分页处理,系统提升数据库查询效率与应用设计能力。
MySQL篇
|
1天前
|
安全 Java 数据安全/隐私保护
认识SpringSecurity
Spring Security 是基于过滤器链的成熟安全框架,提供认证、鉴权及防御 CSRF 等攻击的核心功能,支持多种认证方式与灵活的权限控制模型。
|
1天前
|
存储 缓存 Java
自动装配机制2
@EnableAutoConfiguration是SpringBoot自动装配的核心注解,通过@AutoConfigurationPackage和AutoConfigurationImportSelector实现Bean的自动注册与配置。它基于classpath、已定义Bean及配置属性,智能推断并加载所需组件,简化开发配置。
 自动装配机制2