公网情况

0.Dockerfile关键字

关键字作用一句话出现位置
FROM指定基础镜像(任何 Dockerfile 必须且首行)全局
RUN在镜像构建阶段执行命令(常用来安装软件)构建期
COPY把宿主机文件/目录复制进镜像构建期
ADD类似 COPY,但额外支持远程 URL 与自动解压 tar构建期
WORKDIR设定后续指令的工作目录(不存在会自动创建)构建/运行
ENV设定环境变量构建+运行
EXPOSE声明容器对外监听端口(仅文档作用,仍需 -p)文档
CMD容器启动时的默认命令(可被 docker run 覆盖)运行期
ENTRYPOINT容器启动时的主进程(与 CMD 组合使用)运行期
VOLUME声明挂载点,匿名或具名卷运行期
USER切换后续指令的执行用户 / UID构建/运行
LABEL给镜像打键值对元数据(维护者、版本等)文档
ARG声明构建参数(docker build --build-arg)构建期
ONBUILD触发器:以此镜像作为基础镜像时自动执行构建期
STOPSIGNAL指定 docker stop 时发给容器的信号运行期
HEALTHCHECK定义容器健康检查命令运行期
SHELL更改 RUN/CMD 的默认 shell(Windows 常用)构建期
MAINTAINER已废弃,被 LABEL 替代历史遗留

最小可运行示例

# 关键字示例
FROM alpine:3.19
LABEL maintainer="you@example.com"
WORKDIR /app
COPY . .
RUN apk add --no-cache python3
EXPOSE 8000
CMD ["python3", "-m", "http.server", "8000"]

以上代码用到了 8 个关键字,足够覆盖 90% 的日常需求。

1.创建Dockerfile

# 使用 OpenJDK 8 官方镜像
FROM openjdk:8-jre# 设置工作目录
WORKDIR /app# 暴露端口
EXPOSE 5086# 使用 Shell 格式(注意:不要用方括号)
CMD java -Xms2g -Xmx2g -XX:+UseParallelGC -XX:ParallelGCThreads=4 -jar app.jar > /app/app.log 2>&1

2.build镜像

docker build -t java_image .

3.启动容器

docker run -d --restart always --name twin_java -p 8080:8080 -v /home/java:/app java_image

图中可以看到,容器已经启动,并且容器的监控线程已经由/bin/bash变成了/bin/bash -c 'java -X..",可见,当容器重启的时候,容器中的jar包也会一起重启

4.更新jar包

当java项目逻辑有修改的时候,都需要重新打包,重新启动项目,容器中的jar包冲抵方式是:

刚刚启动容器的时候,已经通过命令挂载了容器的工作目录到宿主机,即容器中/app和宿主机/home/java的目录是互通的,所以只需要将宿主机上的jar更新,又因为在Dockerfile中定义启动的jar包名称为app.jar,所以后续更新jar包时,需要将最新的jar包改名为app.jar,然后重启项目即可

重启容器命令:

docker restart twin_java

补充:

想在容器内看java运行状态,报bash: ps: command not found
可以通过命令安装(因为这个容器是Debian 容器,又因为UbuntuDebian的命令很多都一样)

apt update && apt install procps -y

查看jar包运行日志,可以在宿主机上使用tail命令进行查看,不需要进入容器

tail -100f app.log

内网环境

0.准备工作

将刚刚在公网环境下创建的镜像进行打包

docker save -o java_image.tar java_image

然后将tar包放在内网电脑上进行载入,启动即可

1.载入并启动

载入命令:

docker load -i java_image.tar

启动命令同上,更新jar包步骤同上

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/95201.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/95201.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/95201.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud与Dubbo深度对比:架构、性能与生态全解析

引言在微服务架构盛行的今天,服务治理框架的选择成为企业技术栈决策的关键环节。Spring Cloud和Dubbo作为Java生态中最具代表性的两大微服务框架,各自拥有独特的优势和适用场景。本文将从架构设计、服务治理、性能表现、生态系统等多个维度进行深度对比&…

简历书写---自我评价怎么写

前言 今天一对一辅导了很多同学做简历,看到很多同学简历上都有一栏:自我评价 那我们就要思考一下,我们搞技术的,一份技术简历,自我评价上怎么写,才能算一个加分点呢? 观点分享 首先,…

嵌入式Linux学习 - 数据库开发

目录 一. 在终端的使用 1. 下载 2. 操作 3. 相关函数 1.增 2. 删 3. 改 4. 查 5. 补充函数 二. 在软件的使用 1. 下载 2. 操作 三. 在编程的使用 1. 下载 2. 相关函数 1. 打开 2. 读写执行sql语句 3. 关闭 一. 在终端的使用 1. 下载 sudo apt-get install …

产品运营必备的职场通用能力有哪些?如何一步步提升?

在流量红利消退的存量竞争时代,产品运营岗位正经历价值重构。单纯的活动策划与用户维护已无法满足发展需求,数据驱动的精细化运营成为行业分水岭。面对这场变革,复合能力建设与前瞻工具掌握是运营人突破天花板的密钥。推荐考取CDA数据分析师&…

ESPTimer vs GPTimer:ESP32 定时器系统深度解析

第十五章和第十六章分别学习了​​ESPTimer​​ 和 ​​GPTimer​​ ,那这两种定时器有什么区别,如何使用呢,下面探讨下。1. 两种定时器对比介绍1.1 两种定时器设计在 ESP32 开发中,​​ESPTimer​​ 和 ​​GPTimer​​ 是两种完…

【70页PPT】WMS助力企业数字化转型(附下载方式)

篇幅所限,本文只提供部分资料内容,完整资料请看下面链接 https://download.csdn.net/download/2501_92808811/91806268 资料解读:【70页PPT】WMS助力企业数字化转型 详细资料请看本解读文章的最后内容。仓储管理在企业运营中占据关键地位&a…

[光学原理与应用-337]:ZEMAX - 自带的用于学习的样例设计

ZEMAX(OpticStudio)内置了大量样例设计文件,这些文件覆盖了从基础光学原理到复杂系统设计的全场景,是学习光学设计、掌握软件操作、理解像差理论的绝佳资源。以下是ZEMAX自带样例设计的详细分类、使用方法及学习价值分析&#xff…

下一波红利:用 #AI编程 闯入小游戏赛道,#看广告变现 模式正在崛起!

文章标题(可选,均包含核心关键词) 【主推标题】 #AI编程制作小游戏 的终极 #变现 指南:如何通过 #看广告变现 轻松赚钱 【疑问式标题】 #AI制作小游戏 真的能赚钱吗?揭秘 #AI编程赚钱 的四大核心路径与广告变现策略 【趋势型标题】 下一波红利:用 #AI编程 闯入小游戏赛道…

【git】add后不想commit怎么实现pull

本地有改动已 git add 到暂存区(stage),但是还没 commit,同时远端有 28 个新提交需要拉取。 直接 git pull 会冲突或被拒绝,因为你本地有 staged 修改。 处理步骤有几种方案,我给你推荐最稳妥的几种:✅ 方法 1&#xf…

Unable to establish SSL connection. curl静态编译

博主有个老RHEL系统,内核2.6.18;ssl不管用了,最简单的wget也不行,下面编个静态编译的新版 curl 用用(不影响yum源,不然的话系统自带的旧版 OpenSSL 受影响得得不偿失),来最优化解决下…

Redis-08 SpringBoot集成Redis常见问题

SpringBoot集成Redis的教程网上很多,总体来说就是三个步骤:添加依赖、修改配置文件、自定义Redis配置类(自定义序列化器),具体步骤可自行搜索,本文主要解惑集成中的常见疑问。 1,选择什么依赖&…

数据结构:选择排序 (Selection Sort)

目录 从学生排队开始 算法的初始状态和核心操作 代码的逐步完善 第一阶段:定义函数框架和外层循环 第二阶段:实现“寻找最小元素”的逻辑(内层循环) 第三阶段:完成“交换”操作 复杂度与特性分析 时间复杂度 (…

Django Admin 管理工具

一、简介Django Admin 是 Django 框架最受欢迎和强大的特性之一。它是一个自动生成的管理后台,允许开发者无需或仅需编写少量代码,就能对网站的数据模型(数据库中的表)进行直观的增、删、改、查(CRUD)操作。…

园区智慧水电管理系统:让能源管理从“成本黑洞”变“利润引擎”

园区智慧水电管理系统,是一套专为产业园区、科技园、企业总部等大型空间设计的集智能计量、远程管控、自动计费、能耗分析于一体的数字化能源解决方案。它用技术手段解决水电管理中的“抄表难、收费乱、浪费多、数据缺”四大顽疾,真正实现降本、提效、控…

DeepSeek应用技巧-通过MCP打造数据分析助手

本文章将通过MCP服务来打造一个数据分析助手,可以直接读取本地的excel或csv的文件,然后生成可视化的报告并保存在本地,十分有应用和实践的价值,话不多说,我们开始手把手搭建。一、知识应用(1)Fu…

React Hooks 完全指南:从基础到高级的实战技巧

概述 React Hooks 是 React 16.8 引入的新特性,允许在函数组件中使用状态和其他 React 特性。根据数据的使用场景和更新机制,可以将 Hooks 分为三大类: 1. 保存只读数据 useMemo 用途: 缓存计算结果,避免重复计算 …

PCIe 6.0 vs 5.0:带宽翻倍背后的技术革命

PCIe 6.0 vs 5.0:带宽翻倍背后的技术革命在数据中心、AI计算和高速存储需求爆炸式增长的今天,传统接口带宽已成为系统性能提升的瓶颈。PCIe 6.0的推出正是为了解决这一挑战,它通过革命性的技术创新,在保持向后兼容的同时实现了带宽…

突破传统企业组网瓶颈:某科技公司智能组网服务项目深度解析

在现代企业的数字化转型过程中,稳定、高效、安全的网络基础设施已成为业务发展的关键。然而,传统组网方案往往面临诸多挑战,如网络性能不足、组网复杂度高、扩展性不佳、以及安全防护薄弱等问题。为了解决这些痛点,某科技公司通过…

ubuntu单机实现10000个连接同时在线测试

连接前 成功连接后 前端测试连接脚本: c_5k.sh !/bin/bash ulimit -n 100000 # client_simulator.sh SERVER_IP="192.168.0.106" SERVER_PORT=8080 MAX_CLIENTS=5000 BATCH_SIZE=100echo "Starting $MAX_CLIENTS clients to $SERVER_IP:$SERVER_PORT"…

防护墙技术(一):NAT

###源NAT基本原理 NAT(Network Address Translation)网络地址转换技术 源NAT技术对IP报文的源地址进行转换,将私有IP地址转换为公网IP地址,使大量私网用户可以利用少量公网IP地址访问internet,大大减少对公网IP的消耗 …