制作docker镜像

1. 什么是Docker镜像

Docker镜像是Docker容器的模板,是Docker容器运行的基础。

2. 制作docker镜像的方式与流程

2.1 基于Dockerfile制作镜像

2.1.1 Dockerfile的基本语法
# 指定基础镜像
FROM <image>
# 维护者信息
MAINTAINER
# 指定镜像标签
LABEL <key>=<value>
# 复制文件到镜像中
COPY <src> <dest>
# 定义一个用户
USER <user>
# 定义环境变量
ENV <key> <value>
# 添加文件到镜像中
ADD <src> <dest>
# 在容器中执行linux命令
RUN <command>
# 设置工作目录
WORKDIR <path>
# 挂载位置
VOLUME <path>
# 运行一个命令
CMD <command>
# 或者
ENTRYPOINT <command>
2.1.2 Dockerfile制作镜像的一些思考

如果我们使用dockerfile制作镜像,必须要有的就是指定一个基础镜像。当通过From指定了基础镜像后,
可以理解为你有了一个标准的linux环境,比如说,你要在镜像中包含一个java服务,那么你可以通过add命令,或者copy命令
将jar包添加到镜像中,当然可以指定文件的位置,如果文件不存在,就可以通过 RUN语法来创建一个目录: RUN mkdir -p /usr/local/
那如果你恰好还想在容器启动的时候就运行这个java服务,就可以通过 CMD命令 或者 ENTRYPOINT 命令实现。以下是一个简单的例子

FROM java:8# 指定工作目录
WORKDIR /home/admin/holems-web-qiye# 复制jar包
ADD core/target/java-web.jar ./# 设置运行时暴露的端口
EXPOSE 9001# 启动服务
CMD ["/bin/bash", "-c" ,"java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar java-web.jar --server.port=9001" ]
2.1.3 CMD 命令与 ENTRYPOINT 命令的区别
  1. CMD 可由 docker run 后的命令覆盖,同时覆盖参数
  2. ENTRYPOINT必然生效,docker run 后的命令追加到ENTRYPOINT 尾部
2.1.4 分层次构造镜像

假如说,我们有想给上面那个含有java-web服务的镜像中再加入nginx, 我们当然可以简单粗暴的将nginx安装的命令添加到镜像中

FROM java:8# 指定工作目录
WORKDIR /home/admin/java-web# 复制jar包
ADD core/target/java-web.jar ./RUN apt-get update && apt-get install -y nginx
ADD nginx.conf /etc/nginx/nginx.confEXPOSE 8080# 启动服务
CMD ["/bin/bash", "-c" ,"nginx & java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar java-web.jar --server.port=9001" ]

但是,看下面这种方式,我们先将java-web服务打成镜像,它的dockerfile中只有

FROM java:8# 指定工作目录
WORKDIR /home/admin/java-web# 复制jar包
ADD core/target/java-web.jar ./

然后我们运行

docker build -t 127.0.0.1:5000/java-web:v1.0 .

如上我们就得到了一个 127.0.0.1:5000/java-web:v1.0的镜像, 我们再以这个镜像为基础镜像,进行第二次构建

FROM 127.0.0.1:5000/java-web:v1.0RUN apt-get update && apt-get install -y nginx
ADD nginx.conf /etc/nginx/nginx.confEXPOSE 8080# 启动服务
CMD ["/bin/bash", "-c" ,"nginx & java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar java-web.jar --server.port=9001" ]

这样我们也得到了一个带有nginx和java-web的镜像。这样构造的好处是,假如下次项目变更需求,java-web不需要使用nginx代理了
但是需要将mysql也打成镜像,那我们只需要以127.0.0.1:5000/java-web:v1.0为基础镜像,再次进行镜像制作即可。

2.2 从运行中的容器制作镜像

2.2.1 导出容器
docker export <container_id> > <image_name>.tar
2.2.2 导入镜像
docker import <image_name>.tar <image_name>
2.2.3 镜像打包
docker save -o <image_name>.tar <image_name>

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

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

相关文章

Android frameworks 开发总结之十(lock screen message Battery Last full charge)

1.設置lock screen message後不显示 XXXt設備設置lock screen message後&#xff0c;發現鎖頻界面不顯示內容&#xff0c;像時間日期都不顯示。只在右上角顯示一個鎖圖標&#xff0c;需要向下滑動一下才能顯示出來。布局文件位置: frameworks/base/packages/SystemUI/res-keygu…

原生实现底部弹窗效果 h5 小程序

<template><div class"home"><div class"btn" click"showPopupshow">弹出底部蒙层</div><div class"popup " catchtouchmove"true" :class"showPopup" ><div class"mask&q…

element使用小结

1、tabel表头文字自定义效果&#xff08;换行&#xff0c;不同颜色&#xff09; 换行&#xff1a; // 方法一 <el-table-columnprop"otherCost":label"本期累计\n(元)"> // 通过:label添加\n </el-table-column>.xx .cell {white-space: pre-…

城市NOA加速落地,景联文科技高质量数据标注助力感知系统升级

当前&#xff0c;自动驾驶技术的演进正在经历着从基础L2到L3过渡的重要阶段&#xff0c;其中NOA&#xff08;自动辅助导航驾驶&#xff09;扮演着至关重要的角色。城市NOA&#xff08;L2.9&#xff09;作为城市场景下的NOA&#xff0c;被看作是车企向更高阶自动驾驶迈进的必经之…

无线网络下VMWare+CentOS7使用桥接模式无法联通网络问题

因为最近新配了台带无线网卡的主机&#xff0c;所以准备把所有的内容都转移到新电脑上&#xff0c;其中就包括虚拟机 安装好VMWareCentOS7选择桥接模式 然后我们去修改一下网络配置 cd /etc/sysconfig/network-scripts/进入这个ifcfg-ens33文件 我们修改箭头所示内容&#xff…

Eclipse安装EvoSuite插件

Eclipse安装EvoSuite插件 EvoSuite自动为Java类生成JUnit测试套件,针对分支覆盖率等代码覆盖率标准。为了提高可读性,生成的单元测试被最小化,并且捕获被测试类的当前行为的回归断言被添加到测试中。 EvoSuite的GitHub地址:https://github.com/EvoSuite/evosuite 📕Ecl…

BART - 磁共振重建库 linux系统安装 MATLAB 使用

本文主要介绍如何在linux系统中安装伯克利大学的磁共振重建库BART 和在matlab中的配置使用。 安装必要的库 (linux 命令行) $ sudo apt-get install make gcc libfftw3-dev liblapacke-dev libpng-dev libopenblas-dev 下载编译BART 文件 (官网链接:BART Toolbox) 命令行下…

UML建模图文详解教程08——部署图

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl本文参考资料&#xff1a;《UML面向对象分析、建模与设计&#xff08;第2版&#xff09;》吕云翔&#xff0c;赵天宇 著 部署图概述 部署图(deployment diagram)也被译作配置…

深入浅出 Linux 中的 ARM IOMMU SMMU II

SMMU 驱动中的系统 I/O 设备探测 要使系统 I/O 设备的 DMA 内存访问能通过 IOMMU&#xff0c;需要将系统 I/O 设备和 IOMMU 设备绑定起来&#xff0c;也就是执行 SMMU 驱动中的系统 I/O 设备探测。总线发现系统 I/O 设备并和对应的驱动程序绑定&#xff0c;与 IOMMU 设备驱动程…

腾讯云被打黑洞了怎么办

前两天有个客户联系我说他在腾讯云的服务器被攻击了&#xff0c;进了黑洞&#xff0c;需要好几个小时才给解&#xff0c;当时为了业务能正常运转狠心上了腾讯云的DDOS高防&#xff0c;事后整理下成本支出&#xff0c;发现好几月都白干了&#xff0c;哭诉着说有没有什么便宜好用…

LSTM模型预测时间序列:根据历史销量数据预测商品未来销量

经常会遇到一些需要预测的场景&#xff0c;比如预测品牌销售额&#xff0c;预测产品销量。 时间序列 今天分享一波使用 LSTM 进行端到端时间序列预测的完整代码和详细解释。 我们先来了解两个主题&#xff1a; 什么是时间序列分析&#xff1f; 什么是 LSTM&#xff1f; 时…

盘点60个Python爬虫源码Python爱好者不容错过

盘点60个Python爬虫源码Python爱好者不容错过 爬虫&#xff08;Spider&#xff09; 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 链接&#xff1a;https://pan.baidu.com/s/1JWrDgl46_ammprQaJiKqaQ?pwd8888 提取码&#xff…

External model DLL ”ADC083XDLL“ not found_proteus仿真报错解决方法

仿真运行报错 External model DLL ”ADC083XDLL“ not found 原因 是proteus仿真软件缺少ADC083X.DLL文件或者ADC083X.DLL文件损坏。 解决方法 1.下载没问题的ADC083x.DLL ADC083X.DLL下载链接&#xff1a; 2.找到库文件夹&#xff0c;替换库文件ADC083X.DLL 库文件夹位置…

【送书福利-第二十八期】《从概念到现实:ChatGPT和Midjourney的设计之旅》

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&#xff1a;程序员洲洲。 &#x1f388; 本文专栏&#xff1a;本文…

浅析智能电能表远程费控的推广及应用

安科瑞 华楠 摘 要: 电力资源是我国社会发展中一种必不可少的资源,随着我国经济的不断发展和人们生活水平的不断提升,对电力行业的要求也不断提升。因此,电力企业应该不断提升自身的服务水平和服务质量,强智能电能表远程费控的推广与应用,提升电力计量和收费工作的效率,提高电…

模拟退火算法应用——求解二元函数的最小值(极小值)

仅作自己学习使用 一、问题 二、代码 clear clcT1 cputime; xmax 5; xmin -5; ymax 5; ymin -5; L 20; % 马尔科夫链长度 dt 0.998; % 降温系数 S 0.02; % 步长因子 T 200; % 初始温度 TZ 1e-8; % 容差 Tmin 0.01;% 最低温度 P 0; % Metropolis接受…

研习代码 day40 | 完全背包 多重背包的应用(一维滚动数组)

一、单词拆分&#xff08;完全背包&#xff09; 1.1 题目 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用。 示例 1&am…

接收网络包的过程——从硬件网卡解析到IP层

当一些网络包到来触发了中断&#xff0c;内核处理完这些网络包之后&#xff0c;我们可以先进入主动轮询 poll 网卡的方式&#xff0c;主动去接收到来的网络包。如果一直有&#xff0c;就一直处理&#xff0c;等处理告一段落&#xff0c;就返回干其他的事情。当再有下一批网络包…

SUM()用法,C# ??用法,强制转换为Int类型错误

错误写法: 报错:到值类型“System.Int32”的强制转换失败&#xff0c;因为具体化值为 null。 int a mesPend.Where(p > p.PendStartTime.Month a && p.PendStartTime.Day < d). Select(p > DbFunctions.DiffSeconds(p.PendStartTime, p.PendEndTime.Value…

基于51单片机的交通信号灯系统【程序+proteus仿真+参考论文+AD原理图等16个文件夹资料】

一、项目功能简介 整个设计系统由STC89C52单片机数码管显示模块LED指向灯模块三线八线译码器模块按键模块组成。 具体功能&#xff1a; 1、东西向、南北向依次进行周期通行&#xff0c;默认设置为&#xff1a;东西向直行&#xff08;绿灯&#xff09;时间30秒&#xff0c;左转…