Docker

简介: 本文介绍Docker基础操作,涵盖镜像打包、容器管理及Dockerfile编写。通过示例演示如何基于Ubuntu镜像构建Java运行环境,打包Spring Boot应用(linuxDemo.jar),并实现容器化部署与端口映射,最终验证服务运行状态,适合初学者快速掌握Docker核心技能。(239字)

对于docker知识体系还不熟悉的可以参照:Docker教程,涉及知识点如下
镜像知识:打包镜像、查看镜像
容器知识:查看容器、启动容器、查看日志
dockerfile知识:编写dockerfile,自定义构建镜像
1.镜像打包
1.工程打jar包
步骤同:Linux打包部署,这里我直接提供打好的jar包以节约时间:
linuxDemo.jar
(16.7 MB)
2.编写dockerfile文件
dockerfile文件的编写原理:Docker教程 中的“3.DockerFile自定义镜像”,这里我们编写如下:
XML
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

指定基础镜像

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
(176.9 MB)
linuxDemo.jar
(16.7 MB)
这里我因为基础版本拉取失败,所以将JDK一起打包进去了,所以文件比较大
注意:上述命令执行路径:在对应DockerFile所在路径image.png

3.运行容器
这里必须做端口映射,否则容器内端口我们是无法访问到,必须映射到宿主机image.png

4.验证心跳image.png

相关文章
|
1天前
|
jenkins 持续交付 调度
项目《神领物流》
本项目为自研物流系统,基于微服务架构实现智能调度与管控,涵盖用户、快递员、司机多端应用。采用GitFlow管理代码,通过Jenkins实现持续集成,提交后自动构建,保障开发效率与系统稳定,类似顺丰速运模式,面向C端提供高效快递服务。(239字)
|
1天前
|
设计模式 Java 程序员
推荐书籍
推荐多本Java经典书籍:《Head First Java》适合入门,《Java核心技术》深入巩固基础,《Java编程思想》整合设计模式,适合进阶。并发方面有《Java并发编程之美》等,JVM推荐《深入理解Java虚拟机》与《实战JVM》。体系全面,适合不同阶段学习。
|
1天前
|
负载均衡 算法 Java
微服务篇
SpringBoot核心原理是自动装配,通过@SpringBootApplication注解实现配置类、组件扫描与自动配置。其启动流程包括环境初始化、上下文创建与自动化配置。常用起步依赖如web、redis等;支持properties、YAML等配置文件,后加载的覆盖先加载的。项目通过Feign、Ribbon实现服务通信与负载均衡,使用Nacos做注册与配置中心,Sentinel或Hystrix实现限流熔断,Gateway实现网关限流与CORS跨域控制,结合Spring Cloud五大组件构建微服务架构。
|
1天前
|
消息中间件 存储 缓存
MQ篇
本项目采用RabbitMQ、Kafka和EMQ实现异步通信与数据采集。RabbitMQ用于服务解耦、流量削峰,支持多种消息模式与高可用集群;Kafka处理高吞吐用户行为数据,保障实时推荐与数据同步;EMQ基于MQTT协议实现物联网设备与服务器间可靠通信,支持QoS分级与延迟发布,确保消息不丢不重。三者协同提升系统性能与稳定性。
|
1天前
|
数据可视化 数据挖掘 BI
性能优化专题
两幅图像展示了数据可视化图表,包含柱状图与折线图的组合,呈现清晰的趋势分析与对比数据,适用于业务报表、数据分析等场景,助力直观理解关键指标变化。
|
1天前
|
存储 缓存 安全
Java基础篇
本文简要介绍了Java核心知识,涵盖final关键字、重载与重写、==与equals区别、反射机制及应用、String类对比、集合框架、线程安全类、ArrayList与LinkedList差异、HashMap原理及扩容、ConcurrentHashMap实现、线程创建与线程池使用、JVM组成与运行时数据区、类加载器与双亲委派模型、Stream流及JDK8新特性等内容,系统梳理了Java开发中的重点概念与实战应用。
|
1天前
|
Java 大数据
ArrayList扩容机制
ArrayList 添加元素时,先调用 `ensureCapacityInternal` 检查容量,首次添加时默认扩容至 10。`grow()` 方法实现扩容,新容量为旧容量的 1.5 倍(通过位运算 `>>` 提升效率),确保数组动态扩展性能。`length` 用于数组长度,`length()` 是字符串方法,`size()` 用于集合元素计数。
|
1天前
|
Arthas 监控 Java
jvm相关
本节介绍Arthas常用命令:实时监控系统数据(dashboard)、查看JVM线程、内存、系统属性(sysprop)、环境变量(sysenv)、性能计数器(perfcounter)、日志配置(logger)及静态属性(getstatic)等,支持动态修改与诊断,助力Java应用排查问题。
|
1天前
|
存储 SQL 关系型数据库
MySQL篇
MySQL查询语句书写顺序为:SELECT、FROM、JOIN、WHERE、GROUP BY、HAVING、ORDER BY、LIMIT;实际执行顺序则不同,从FROM开始,最后执行SELECT和LIMIT。多表查询主要通过内连接(显式/隐式)和外连接(左、右)实现。内连接仅返回匹配行,外连接保留驱动表全部记录。CHAR固定长度,VARCHAR可变长度;索引类型包括单列、组合及全文索引,底层多用B+树结构。InnoDB使用聚簇索引,数据存于主键索引叶节点;MyISAM为非聚簇索引,叶节点存指针。查询非主键索引需回表二次查找,覆盖索引可避免回表提升性能。
|
1天前
|
存储 关系型数据库 MySQL
事务控制篇
关系型数据库基于表结构,支持事务与复杂查询,适用于强一致性场景;非关系型数据库灵活高效,适合高并发、海量数据场景。索引提升查询速度,常用B+树实现,因遍历、IO性能更优。MySQL通过redo log、undo log保障ACID,利用分库分表、读写分离应对高并发。