10.dockerfile自动构建镜像

news2024/12/24 6:25:42

dockerfile自动构建镜像

类似ansible剧本,大小几kb
手动做镜像:大小几百M+

首先创建一个dockerfile的路径,便于在路径下存在多个路径每个路径下都是dockerfile命名的脚本
注释:文件必须为:dockerfile或者Dockerfile
在这里插入图片描述

因我这里要构建一个sshd服务的dockerfile,所以操作形式以上图为例子

dockerfile 支持自定义容器的初始命令
注释:构建文件内指令每一步都会启动以临时的容器ID,执行完后将该临时容器ID删除,下一步又启一个临时容器ID依次类推
dockerfile主要组成部分:

基础镜像信息       FROM  centos:6.9
制作镜像操作指令   RUN yum install openssh-server -y
容器启动时执行指令 CMD ["/bin/bash"]

dockerfile常用指令:

FROM 这个镜像的妈妈是谁?(指定基础镜像)
MAINTAINER 告诉别人,谁负责养它?(指定维护者信息,可以没有)
LABLE      描述,标签
    
RUN 你想让它干啥(在命令前面加上RUN即可)
ADD 给它点创业资金(会自动解压tar)  制作docker基础的系统镜像;从宿主机向容器发送文件
WORKDIR 我是cd,今天刚化了妆(设置当前工作目录)
VOLUME 给它一个存放行李的地方(设置卷,挂载主机目录)
EXPOSE 它要打开的门是啥(指定对外的端口)(-P 随机端口)
CMD 奔跑吧,兄弟!(指定容器启动后的要干的事情)(容易被替换)

dockerfile其他指令:

COPY 复制文件(不会解压)rootfs.tar.gz
ENV  环境变量
ENTRYPOINT (与CMD一样用法)容器启动后执行的命令(无法被替换,启容器的时候指定的命令,会被当成参数)

参考其他的dockerfile
官方dockerfile或者时速云镜像广场

制作dockerfile镜像,如nginx镜像
制作之前需要注意事项:
1.构建镜像文件必须是"dockerfile"或者"Dockerfile"为名的文件
2.提前准备压缩包或者用到的文件:发送到容器里
构建命令:

[root@docker-lb ~]# docker build --network -t 起一个名字:标签 .
#注释--network  是为了加速用到的,不然就很慢

dockerfile单服务ssh自动构建

构建脚本:

[root@yunlong /data/dockerfile/centos6.9-ssh]# cat dockerfile  
#!/bin/bash
FROM centos:6.9
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo
RUN yum install openssh-server -y
RUN /etc/init.d/sshd restart
RUN echo 123456 | passwd --stdin root

CMD ["/usr/sbin/sshd","-D"] #逗号表示中间有空格

执行docker构建命令

docker build --network=host -t centos6.9-ssh:v1 .

在这里插入图片描述

下图构建成功
在这里插入图片描述

ssh镜像构建完成
在这里插入图片描述

基础构建完成后的镜像启动容器

docker run -d -p 2022:22 centos6.9-ssh:v1

在这里插入图片描述

测试ssh连接成功
在这里插入图片描述

dockerfile双服务ssh、nginx自动构建

复制之前的dockerfile脚本加路径;
编辑构建脚本内容

[root@yunlong /data/dockerfile/centos6.9-ssh-nginx]# cat dockerfile
#!/bin/bash
FROM centos:6.9
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo
RUN curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-archive-6.repo
RUN yum install openssh-server nginx  -y
RUN /etc/init.d/sshd restart
RUN echo 123456 | passwd --stdin root
ADD init.sh /init.sh
CMD ["/bin/bash","/init.sh"]

添加一个init.sh启动服务脚本,服务中并且能夯筑容器的脚本

[root@yunlong /data/dockerfile/centos6.9-ssh-nginx]# cat init.sh 
#!/bin/bash
service sshd restart
nginx -g 'daemon off;'

操作如下图
在这里插入图片描述

开始在当前路径下进行构建镜像

docker build --network=host -t centos6.9-ssh-nginx:v3 .

在这里插入图片描述

构建成功
在这里插入图片描述

镜像已经存在
在这里插入图片描述

根据构建完成的镜像启动容器

docker run -d -p 3022:22 -p 80:80 centos6.9-ssh-nginx:v3

容器启动成功,容器一直存活
在这里插入图片描述

测试验证,ssh连接和访问nginx成功。
在这里插入图片描述

dockerfile自动构建kod服务

编辑kod构建脚本

[root@yunlong /data/dockerfile/kod]# cat dockerfile 
#!/bin/bash
FROM centos:6.9
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo
RUN curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-archive-6.repo
RUN yum install  nginx php-fpm php-gd php-mbstring unzip -y
ADD kodexplorer4.40.zip /opt/
WORKDIR /opt/
RUN unzip kodexplorer4.40.zip
RUN chown -R nginx:nginx .
ADD nginx.conf /etc/nginx/nginx.conf
ADD www.conf /etc/php-fpm.d/www.conf
ADD init.sh /init.sh
CMD ["/bin/bash","/init.sh"]

编辑容器中启动服务脚本

[root@yunlong /data/dockerfile/kod]# cat init.sh 
#!/bin/bash 
service php-fpm restart
nginx -g 'daemon off;'

编辑好的nginx配置文件,便于发送到容器中去

[root@yunlong /data/dockerfile/kod]# cat nginx.conf  
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
            root   /opt;
            index  index.php index.html index.htm;
        location / {
        }
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /opt$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

因为安装php服务,所以要将php配置文件中用户修改为nginx即可,www.conf配置需要到有php服务的系统取,我为了方便就不取了。
还要有kodexplorer文件包,也是一并发送到容器中去
在这里插入图片描述

一起准备就绪,开始构建镜像

[root@yunlong /data/dockerfile/kod]# docker build --network=host -t kod:v2 .

在这里插入图片描述

构建镜像成功
在这里插入图片描述

查看构建完成镜像
在这里插入图片描述

根据构建镜像启动容器
在这里插入图片描述

测试验证服务,宿主机ip地址成功查看kod服务
在这里插入图片描述

nginx编译安全构建脚本:

[root@docker-lb ~]# cat dockerfile
#!/bin/bash
## cd /usr/local/
## cat Dockerfile
FROM centos:7
LABEL maintainer="Quyunlong <yunlong.qu@riversecurity.com>"
RUN yum install -y epel-release && yum install -y vim wget pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop gcc

# 提前下载好nginx安装包,放到/usr/local目录下
ADD nginx-1.16.0.tar.gz /usr/local/src
# 进入到容器指定目录,执行编译安装
RUN cd /usr/local/src/nginx-1.16.0 && ./configure --prefix=/apps/nginx && make && make install && rm -rf nginx-1.16.0

# 在/usr/local目录下编辑好nginx.conf文件,添加到容器内nginx服务安装位置
ADD nginx.conf /apps/nginx/conf/

EXPOSE 80 443

CMD ["/apps/nginx/sbin/nginx", "-g", "daemon off;"]

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

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

相关文章

解决linux系统求前N月月份的bug

日常工作中&#xff0c;需要获取某个日期&#xff08;20240531&#xff09;的前N个月&#xff0c;通常会写命令 date -d "20240531 last-month" %Y%m 我期望得到202404 但是很意外&#xff1a; 经过几轮测试&#xff0c;发现只要月内天数超过30天&#xff0c;即所有…

基于Zero-shot实现LLM信息抽取

基于Zero-shot方式实现LLM信息抽取 在当今这个信息爆炸的时代&#xff0c;从海量的文本数据中高效地抽取关键信息显得尤为重要。随着自然语言处理&#xff08;NLP&#xff09;技术的不断进步&#xff0c;信息抽取任务也迎来了新的突破。近年来&#xff0c;基于Zero-shot&#x…

代码随想录——修建二叉搜素树(Leetcode669)

题目链接 递归 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

【算法每日一练】新月轩就餐

思路&#xff1a; 其实很容易想到是双指针或者双端队列。 我们设置一个type表示当前区间已经有了多少种厨师&#xff0c;同时还需要记录区间中每个元素出现的次数&#xff0c;然后比较棘手的是移动问题了&#xff0c;什么时候移动呢&#xff1f; 我们可以发现当区间当队头元…

AI数据分析:用deepseek根据Excel数据绘制分裂饼形图

工作任务&#xff1a;要绘制下面表格中月活用户占比的分裂饼形图 在deepseek中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个Python脚本编写的任务&#xff0c;具体步骤如下&#xff1a; 读取Excel文件"F:\AI自媒体内容\AI行业数据分析\poetop5…

Polar Web 【简单】- 被黑掉的站

Polar Web 【简单】- 被黑掉的站 Contents Polar Web 【简单】- 被黑掉的站思路EXP运行&总结 思路 如题目所述&#xff0c;这是一个被黑掉的站点&#xff0c;由此不禁要了解该黑客发现了哪些可以入手的路径&#xff0c;或是留下了什么样的文件供持续访问。 目录扫描该站点发…

软件测试--Linux快速入门

文章目录 软件测试-需要掌握的Linux指令Linux命令操作技巧Linx命令的基本组成常用命令 软件测试-需要掌握的Linux指令 Linux命令操作技巧 使用Tab键自动补全上下键进行翻找之前输入的命令命令执行后无法停止使用CtrC,结束屏幕输出 Linx命令的基本组成 命令 [-选项] [参数] …

Attention注意力机制:理论基础、核心架构、应用领域及最新研究动态

Attention机制源于对序列建模中长期依赖关系的有效捕获需求&#xff0c;其理论基础在于让模型动态分配权重以聚焦于输入序列中与当前任务相关的关键部分。核心架构包括Query-Key-Value三元组计算、Softmax归一化的注意力得分、加权求和生成上下文向量&#xff0c;以及扩展至多头…

Unity3d简单对话系统的实现——使用Dialogue editor完成对话系统

目录 前言 使用方法 1.下载dialogue editor 2.新建空物体 3.对对话内容进行编辑 4.对话画布建立 5.触发对话框代码 结束语 前言 今天是坚持写博客的第21天&#xff0c;很高兴自己可以坚持&#xff0c;也希望能与大家一起进步。我们今天来看unity3d当中的一个可以轻松实…

Python易错点总结

目录 多分支选择结构 嵌套选择 用match模式识别 match与if的对比 案例&#xff1a;闰年判断 三角形的判断 用whlie循环 高斯求和 死循环 用for循环 ​编辑continue​编辑 whlie与else结合 pass 序列 列表&#xff08;有序&#xff09; 元组&#xff08;有序&…

高防CDN是如何应对DDoS和CC攻击的

高防CDN&#xff08;内容分发网络&#xff09;主要通过分布式的网络架构来帮助网站抵御DDoS&#xff08;分布式拒绝服务&#xff09;和CC&#xff08;挑战碰撞&#xff09;攻击。 下面是高防CDN如何应对这些攻击的详细描述&#xff1a; 1. DDoS攻击防护 DDoS攻击通过大量的恶…

数智融通 创新发展|亚信科技携AntDB、Data OS与隐私计算产品,赋能企业高质量发展

5月21日&#xff0c;亚信科技在云端举办了一场别开生面的研讨会——“数智融通 创新发展”&#xff0c;聚焦企业数智化升级的前沿话题。资深产品经理和技术架构师们面对面深入交流&#xff0c;分享创新成果与实战案例&#xff0c;共同探索企业数智化转型的新路径。 图1&#xf…

2024华为数通HCIP-datacom最新题库(变题更新③)

请注意&#xff0c;华为HCIP-Datacom考试831已变题 请注意&#xff0c;华为HCIP-Datacom考试831已变题 请注意&#xff0c;华为HCIP-Datacom考试831已变题 近期打算考HCIP的朋友注意了&#xff0c;如果你准备去考试&#xff0c;还是用的之前的题库&#xff0c;切记暂缓。 1、…

Erlang

官网地址&#xff1a; Index - Erlang/OTP windows环境变量配置 创建新系统变量 ERLANG_HOME 在path加入上述配置

Golang使用讯飞星火AI接口

一、API申请 https://www.bilibili.com/video/BV1Yw411m7Rs/?spm_id_from333.337.search-card.all.click&vd_source707ec8983cc32e6e065d5496a7f79ee6 注册申请&#xff0c;需要在此页面获取appid、apisecret、apikey https://www.xfyun.cn/ https://console.xfyun.cn/ser…

正确挑选百兆超薄款工业级网络/脉冲变压器(网络隔离滤波器)

Hqst华强盛&#xff08;石门盈盛电子&#xff09;导读&#xff1a;工业级百兆超薄款网络变压器的生产要特殊的超薄磁芯配正确线径的铜线&#xff0c;使用符合相应防潮标准的凝固胶水。 一 ̖ 首先来看下商业级的超薄款的百兆网络变压器&#xff1a; 商业级&#xff08;消费级&…

先求生存,再谋发展:俞敏洪的创业哲学与产品创新之路

引言&#xff1a; 在创业的道路上&#xff0c;每一个创业者都面临着无数的挑战和选择。俞敏洪&#xff0c;新东方教育科技集团的创始人&#xff0c;以其独特的创业哲学和坚韧不拔的精神&#xff0c;带领新东方从一个小小的培训机构成长为全球知名的教育品牌。他的成功经验告诉…

成都代理记账公司排名,专业度、服务质量与客户口碑的较量

随着社会经济的发展和市场竞争的加剧&#xff0c;越来越多的企业和个人选择寻求专业的财务咨询服务&#xff0c;在这个过程中&#xff0c;选择一家信誉良好、服务优质、具有丰富经验和高度专业知识的代理记账公司显得尤为重要&#xff0c;下面&#xff0c;我们就来探讨一下在成…

LeetCode 7- 整数反转

给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [-231, 231 - 1] &#xff0c;就返回 0。 假设环境不允许存储 64 位整数&#xff08;有符号或无符号&#xff09;。 示例 1&#xff1a; 输入&…

什么是虚拟局域网?快解析有哪些的虚拟化应用功能?

什么是虚拟局域网&#xff1f;从字面上理解就是不是真实存在的局域网。虚拟局域网是将网络用户和设备集中在一起&#xff0c;从而可以对不同地域和商业的需要有一定的支持性。虚拟局域网有它的优点&#xff0c;在使用过程中可以为企业提供更安全、更稳定、更灵活的服务保障体系…