Dockerfile的使用,怎样制作镜像

Docker 提供了一种更便捷的方式,叫作 Dockerfile

        docker build命令用于根据给定的Dockerfile构建Docker镜像。

docker build命令参数:

--build-arg,设置构建时的变量
--no-cache,默认false。设置该选项,将不使用Build Cache构建镜像
--pull,默认false。设置该选项,总是尝试pull镜像的最新版本
--compress,默认false。设置该选项,将使用gzip压缩构建的上下文
--disable-content-trust,默认true。设置该选项,将对镜像进行验证
--file, -f,Dockerfile的完整路径,默认值为‘PATH/Dockerfile’
--isolation,默认--isolation="default",即Linux命名空间;其他还有process或hyperv
--label,为生成的镜像设置metadata
--squash,默认false。设置该选项,将新构建出的多个层压缩为一个新层,但是将无法在多个镜像之间共享新层;设置该选项,实际上是创建了新image,同时保留原有image。
--tag, -t,镜像的名字及tag,通常name:tag或者name格式;可以在一次构建中为一个镜像设置多个tag
--network,默认default。设置该选项,Set the networking mode for the RUN instructions during build
--quiet, -q ,默认false。设置该选项,Suppress the build output and print image ID on success
--force-rm,默认false。设置该选项,总是删除掉中间环节的容器
--rm,默认--rm=true,即整个构建过程成功后删除中间环节的容器

示例一个简单的源码安装的nginx的镜像创建过程带大家了解Dockerfile

1、环境准备

使用软件  VS code

在VS code的商城里 下载docker插件

连接到我们的虚拟机 47.99.103.75

2、要使用Dockerfile创建镜像首先需要创建一个独立的镜像目录

mkdir nginx_docker (目录名可根据镜像自定义方便识别)

 

3、进入目录创建文件dockerfile

cd nginx_dockertouch dockerfile

注:

这里的文件名必须是dockerfile才能被创建时的docker build识别到

dockerfile模块介绍

我们首先介绍一下dockerfile编写当中常用的几个模块以及他们的用途

FROM         首行,依赖的基础镜像也叫父镜像LABEL         次行,可以定制,像作者名,创建时间,邮 箱,用途等(比行非必须)RUN         shell命令COPY         拷贝本地文件至镜像ADD          可以将本地文件拷贝至镜像,也可以直接添加网络源至镜像,还可以添加压缩包至镜像并且在添加的时候就完成解压的动作WORKDIR         相当于shell的cd,用来切换所在位置VOLUME         数据映射目录定义,映射到宿主机的哪个位置ENV         设置环境变量(环境变量具有继承性)EXPOSE         指定端口CMD         模块内的内容会被启动docker后面添加的参数所覆盖ENTRYPOINT        模块内的内容会追加启动docker后面添加的参数

这里需要注意一下其中 ADD模块和COPY模块的区别 CMD模块和ENTRYPOINT模块的区别

这里我整理了一下,大家可以作为参考

COPY和ADD模块的区别

COPY 拷贝本地文件至镜像

ADD  将本地文件拷贝至镜像
          可以直接添加网络源至镜像
          可以添加压缩包至镜像并且在添加的时候就完成解压的动作

CMD模块和ENTRYPOINT模块的区别

CMD     模块里面的内容会被启动docker镜像时后面添加的参数所覆盖

ENTRYPOINT     模块里面的内容后面会追加启动docker镜像时后面添加的参数

并且CMD可以作为ENTRYPOINT的参数

4、编写dockerfile

OK,现在我们开始编写nginx的镜像内容

#父镜像为centos7
FROM centos:7  
#定义作者创建时间
LABEL  name="zaotounan"  date="2024-03.07-21:00"
#安装编译 Nginx 依赖包
RUN  yum -y install gcc gcc-c++ make zlib-devel pcre pcre-devel openssl-devel perl-devel perl-ExtUtils-Embed gd-devel

这里我们在本地终端操作

在nginx找到对应版本,这里我们使用的是nginx1.25.4

下载源码包到当前面目录

继续编写nginx的镜像内容

#父镜像为centos7
FROM centos:7  
#定义作者创建时间
LABEL  name="zaotounan"  date="2024-03.07-21:00"
#安装编译 Nginx 依赖包
RUN  yum -y install gcc gcc-c++ make zlib-devel pcre pcre-devel openssl-devel perl-devel perl-ExtUtils-Embed gd-devel
#将源码包传入镜像/usr/local目录下同时解压
ADD ./nginx-1.25.4.ta.gz /usr/local

本地在当前目录创建脚本

vim  nginx.sh

#!/bin/bash
#创建 Nginx 运行用户
useradd -s /sbin/nologin -M nginx
#Nginx 编译安装
cd /usr/local/nginx-1.25.4/
./configure \
--user=nginx \
--group=nginx \
--prefix=/usr/local/nginx \
--conf-path=/etc/nginx/nginx.conf \
--sbin-path=/usr/sbin/nginx \
--error-log-path=/var/log/nginx/nginx_error.log \
--http-log-path=/var/log/nginx/nginx_access.log \
--pid-path=/usr/local/nginx/run/nginx.pid
make && make install#启动Nginx
/usr/sbin/nginx
tail -f /var/log/nginx/*

继续编写nginx的镜像内容

#父镜像为centos7
FROM centos:7  
#定义作者创建时间
LABEL  name="zaotounan"  date="2024-03.07-21:00"
#安装编译 Nginx 依赖包
RUN  yum -y install gcc gcc-c++ make zlib-devel pcre pcre-devel openssl-devel perl-devel perl-ExtUtils-Embed gd-devel
#将源码包传入镜像/usr/local目录下同时解压
ADD ./nginx-1.25.4.ta.gz /usr/local
#将创建好的脚本传入镜像/目录
COPY ./nginx.sh /
#执行脚本
CMD ["sh","nginx.sh"]

5、构建

docker build -t nginx:V1.15.4.1  .

6、查看镜像

docker  images

7、启动镜像测试

页面访问

希望能够帮助到大家!!

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

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

相关文章

地球系统模式(CESM)

目前通用地球系统模式(Community Earth System Model,CESM)在研究地球的过去、现在和未来的气候状况中具有越来越普遍的应用。CESM由美国NCAR于2010年07月推出以来,一直受到气候学界的密切关注。近年升级的CESM2.0在大气、陆地、海…

23.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-实现配置工具数据结构

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 内容参考于:易道云信息技术研究院VIP课 上一个内容:22.加载配置文件…

QML | 在QML中导入JavaScript资源、导入JavaScript资源、包含一个JavaScript 资源

01 在QML中导入JavaScript资源 JavaScript资源可以被QML文档和其他JavaScript通过相对或者绝对路径进行导入。如果使用相对路径,位置解析需要相对于包含import语句的QML文档或JavaScript资源的位置。如果JavaScript需要从网络资源中进行获取,组件的status属性会被设置为Loadi…

Extended Feature Pyramid Network for SmallObject Detection

摘要 各种尺度的特征耦合会削弱小对象的性能,本文中,我们提出了具有超高分辨率金字塔的扩展特征金字塔网络(EFPN ),专门用于小目标检测。具体来说,我们设计了一个新模块,称为特征纹理转移&#…

【C++】vector的使用及其模拟实现

这里写目录标题 一、vector的介绍及使用1. vector的介绍2. 构造函数3. 遍历方式4. 容量操作及空间增长问题5. 增删查改6. vector二维数组 二、vector的模拟实现1. 构造函数2. 迭代器和基本接口3. reserve和resize4. push_back和pop_back5. insert和erase5. 迭代器失效问题5. 浅…

Oracle.xs.dll‘ for module DBD::Oracle: load_file:找不到指定的模块

安装Ora2pg时,碰到 异常现象 D:\ProgramFiles\ora2pg>ora2pg -t show_report --estimate_cost -c ora2pg_conf.dist install_driver(Oracle) failed: Cant load D:/ProgramFiles/strawberry/perl/site/lib/auto/DBD/Oracle/Oracle.xs.dll for module DBD::Oracle: load_fil…

聊聊python中面向对象编程思想

面向对象编程思想 1、什么是面向过程 传统的面向过程的编程思想总结起来就八个字——自顶向下,逐步细化! → 将要实现的功能描述为一个从开始到结束按部就班的连续的“步骤” → 依次逐步完成这些步骤,如果某一个步骤的难度较大&#xff…

JavaScript基础6之执行上下文、作用域链、函数创建、函数激活、checkScope的执行过程、闭包、this

JavaScript基础 执行上下文执行上下文中的属性变量对象全局上下文的变量对象函数上下文执行过程进入执行上下文代码执行思考题 作用域链函数创建函数激活checkScope的执行过程总结 闭包分析闭包 this 执行上下文 执行上下文中的属性 每一个执行上下文都有三个核心属性 变量对…

数据库查询操作

数据库查询操作 数据准备查询的基本操作查询部分字段的值取别名去重 条件查询比较运算符逻辑运算符模糊查询范围查询为空判断 排序分组聚合count(*) : 求表的总的记录数max(字段名): 查询对应字段的最大的值min(字段名): 查询对应字段的最小的值sum(字段名): 查询对应字段的值的…

分布式之Ribbon使用以及原理

Ribbon使用以及原理 1、负载均衡的两种方式 服务器端负载均衡 传统的方式前端发送请求会到我们的的nginx上去,nginx作为反向代理,然后路由给后端的服务器,由于负载均衡算法是nginx提供的,而nginx是部署到服务器端的,所…

vue-cli自定义创建项目-eslint依赖冲突解决方式

创建项目步骤 概览: 在安装 npm安装时会报错 npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: vue/eslint-config-standard6.1.0 npm ERR! Found: eslint-plugin-vue8.7.1 npm ERR! node_modules/eslint-plugin…

C++面试宝典一部分

今天整理书籍资料时,发现多年前打印的面试资料,拍照分享给大家。

Unity ShaderGraph实现地面积水效果

先看看效果 右侧参数,能够控制水高,波纹的速度等,但是这个效果需要修改高度图和凹凸图,毕竟有些模型并不是平面,对于具有斜面的模型就需要修改贴图。 ShaderGraph如下

掌握React中的useCallback:优化性能的秘诀

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

window Zookeeper 启动;

文章目录 前言一、Zookeeper 介绍:二、window 使用:2.1 下载:2.2 启动2.3 连接: 总结 前言 本文对window Zookeeper zk 启动 进行介绍; 一、Zookeeper 介绍: ZooKeeper 是一个开源的分布式协调服务&#…

C 嵌入式系统设计模式 24:安全性和可靠性介绍

本书的原著为:《Design Patterns for Embedded Systems in C ——An Embedded Software Engineering Toolkit 》,讲解的是嵌入式系统设计模式,是一本不可多得的好书。 本系列描述我对书中内容的理解。本文章描述嵌入式安全性和可靠性模式之一…

数据分析-Pandas如何画图验证数据随机性

数据分析-Pandas如何画图验证数据随机性 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表…

Redis核心数据结构之字典(一)

字典 概述 字典又称为符号表(symbol table)、关联数组(associative array)或映射(map),是一种保存键值对(key-value pair)的抽象数据结构,在字典中,一个键(key)可以和一个值(value)进行关联(或者说将键映射为值),这些关联的键和…

大数据 - Spark系列《十三》- spark集群部署模式

Spark系列文章: 大数据 - Spark系列《一》- 从Hadoop到Spark:大数据计算引擎的演进-CSDN博客 大数据 - Spark系列《二》- 关于Spark在Idea中的一些常用配置-CSDN博客 大数据 - Spark系列《三》- 加载各种数据源创建RDD-CSDN博客 大数据 - Spark系列《…

Docker 配置阿里云镜像加速器

一、首先需要创建一个阿里云账号 二、登录阿里云账号 三、进入控制台 四、搜索容器镜像服务,并选择 五、选择镜像工具中的镜像加速 六 、配置镜像源 注意:有/etc/docker文件夹的直接从第二个命令开始