创建镜像(alpine版)+alpine

podman用脚本和dockerfile做apache编译安装镜像


[root@localhost ~]# mkdir httpd
[root@localhost ~]# cd httpd/
[root@localhost httpd]# touch Dockerfile
[root@localhost httpd]# mkdir files
[root@localhost httpd]# ls Dockerfile files

[root@localhost httpd]# cd files/
[root@localhost files]# wget https://downloads.apache.org/apr/apr-1.7.0.tar.gz https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz https://downloads.apache.org/httpd/httpd-2.4.54.tar.gz
[root@localhost files]# ls
apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.54.tar.gz
[root@localhost files]# vim entrypoint.sh
#!/bin/bash
sed -i '/^#ServerName/s/#//g' /usr/local/apache/conf/httpd.conf
exec "$@"
[root@localhost files]# chmod +x entrypoint.sh

[root@localhost files]# cd ..

[root@localhost httpd]# ls Dockerfile files
[root@localhost httpd]# vim Dockerfile
FROM alpine

LABEL MANTAINER "marui123@qq.com"

ENV apr_version=1.7.0 apr_util_version=1.6.1 httpd_version=2.4.54

ADD files/* /tmp/

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
    apk update && \
    adduser -SHs /sbin/nologin apache && \
    apk add --no-cache -U gcc libc-dev make expat-dev pcre-dev openssl-dev libtool && \
    cd /tmp/apr-${apr_version} && \
    sed -i '/$RM "$cfgfile"/d' configure && \
    ./configure --prefix=/usr/local/apr && \
    make && make install && \
    cd /tmp/apr-util-${apr_util_version} && \
    ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && \
    make && make install && \
    cd /tmp/httpd-${httpd_version} && \
    ./configure --prefix=/usr/local/apache \
    --enable-so \
    --enable-ssl \
    --enable-cgi \
    --enable-rewrite \
    --with-zlib \
    --with-pcre \
    --with-apr=/usr/local/apr \
    --with-apr-util=/usr/local/apr-util/ \
    --enable-modules=most \
    --enable-mpms-shared=all \
    --with-mpm=prefork && \
    make && make install && \
    mv /tmp/entrypoint.sh / && \
    apk del gcc make && \
    rm -rf /tmp/* /var/cache/*

EXPOSE 80
WORKDIR /usr/local/apache
CMD ["/usr/local/apache/bin/httpd","-D","FOREGROUND"]
ENTRYPOINT ["/bin/sh","/entrypoint.sh"]
[root@localhost ~]# podman build -t marui123/httpd:v7.77 httpd/

[root@localhost ~]# podman push marui123/httpd:v7.77
Getting image source signatures
Copying blob 06a1df7414d4 done
Copying blob 91f416cdf481 done
Copying blob 994393dc58e7 skipped: already exists
Copying config 4fedf5ad83 done
Writing manifest to image destination
Storing signatures

创建镜像(alpine版)+alpine

1.0安装介质

计算机硬件,特别是CPU,有几种不同的架构。一种非常常见的消费类架构被称为x86_64 – 传统的英特尔x86架构,带有AMD的64位扩展。如果您要将Alpine安装到传统计算机上,这很可能是您所拥有的。但是,Alpine 支持其他几种体系结构用于磁盘安装目的:
x86_64最常见的台式机、笔记本电脑和服务器架构x86x86_64的旧变体,越来越罕见,并且仅限于4gb的RAMppc64le基于OpenPower的系统,如IBM的POWER8s390xIBM Z(大型机)
在某些情况下,您还可以使用armhf和aarch64架构 – 分别与ARM芯片相关,分别为32位和64位,后者可能支持UEFI。

映像类型Alpine提供各种可下载的图像。
与本手册相关的图像种类如下:
标准最小安装映像。需要联网。扩展标准,但包括其他套餐。可用的体系结构较少,但可能更方便。通常用于非磁盘安装。网靴网络引导映像,旨在与 PXE 一起使用。使用 PXE 不在本手册的讨论范围之内,但可以用它来代替标准映像。虚拟标准映像,但使用不同的内核,针对虚拟环境进行了优化。氙专用映像,旨在用于 xen dom0 安装。
如果不确定要使用哪个映像,则应使用扩展映像,前提是你的体系结构受支持并且启动设备足够大。否则,应使用标准映像。

2.0 特点

alpine系统的特点

  • 小巧:基于Musl libc和busybox,和busybox一样小巧,最小的Docker镜像只有5MB;
  • 安全:面向安全的轻量发行版;
  • 简单:提供APK包管理工具,软件的搜索、安装、删除、升级都非常方便。
  • 适合容器使用:由于小巧、功能完备,非常适合作为容器的基础镜像。

2.0 基础命令

命令 意义 apk update 更新最新镜像源列表 apk search -v 查找所以可用软件包及其描述内容 apk search -v ‘acf* 通过软件包名称查找软件包 apk search -v -d ‘docke’ 通过描述文件查找特定的软件包 apk add openssh 安装一个软件 apk add openssh openntp vim 安装多个软件 apk add –no-cache mysql-client 不使用本地镜像源缓存,相当于先执行update,再执行add apk info 列出所有已安装的软件包 apk info -a zlib 显示完整的软件包信息 apk info –who-owns /sbin/lbu 显示指定文件属于的包 apk upgrade 升级所有软件 apk upgrade openssh 升级指定软件 apk upgrade openssh openntp vim 升级多个软件 apk add –upgrade busybox 指定升级部分软件包 apk del openssh 删除一个软件

3.0 模式

快速模式

  • 设置键盘布局
  • 将您的主机名初始化为默认的”alpine”值
  • 将主(自动检测)接口设置为使用 DHCP,然后开始联网
  • 启用各种相关系统服务,并启动它们
  • 生成有效文件/etc/hosts
  • 启用默认存储库

步骤:

  • 设置 root密码
  • 设置时区
  • 设置可选代理
  • 启用 SSH
  • 启用 NTP 同步
  • 配置磁盘(如果有)
  • 配置 lbu
  • 配置apk的缓存机制

较慢模式

  • 您有一个(当前)物理磁盘,并且想要安装到该磁盘
  • 您的主网络连接是有线的,并且与 DHCP 兼容
  • 您并不关心您使用的引导加载程序或文件系统

Original: https://www.cnblogs.com/marymary/p/16645102.html
Author: 溜溜威
Title: 创建镜像(alpine版)+alpine

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/612554/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 我的创作纪念日

    机缘 2018 年 08 月 07 日是我的创作一周年纪念日。大三刚过完,我还是一名 IT 小白,也并没有考研的想法,当时应该是在实习,偶尔一次上网搜索代码问题的时候看到了 CSD…

    数据库 2023年6月6日
    097
  • 重写Feign编码器

    有个spring cloud 架构的项目需要调用php小组的api接口,但php提供的接口入参大部分是下划线命名,而Java这边的实体类是按照驼峰编写,如果使用Fegin调用会导致…

    数据库 2023年6月6日
    087
  • DRF补充数据库异常和Redis异常

    DRF补充数据库异常和Redis异常 (1)在项目适当位置新建exceptions.py,内容如下: from rest_framework.views import except…

    数据库 2023年6月14日
    062
  • SpringMvc(四)- 下载,上传,拦截器

    1、图片下载 图片下载:将服务器端的文件以流的形式写到客户端,通过浏览器保存到本地,实现下载; 1.1 图片下载步骤 1.通过session获取上下文对象(session.getS…

    数据库 2023年6月16日
    067
  • SqlSessionFactory工具类抽取

    多次SqlSessionFactory创建对象问题解决 SqlSessionFactory工具类抽取 问题描述: 当我们多次使用SqlSessionFactory创建并获取对象时会…

    数据库 2023年6月16日
    076
  • python-django框架中使用docker和elasticsearch配合实现搜索功能

    注意:系统环境为Ubuntu18 一、docker安装 0:如果之前有安装过docker使用以下命令卸载: bash;gutter:true; sudo apt-get remov…

    数据库 2023年6月6日
    0205
  • 工具 | PG 集群复制管理工具 repmgr

    作者:颜博 青云科技数据库研发工程师目前从事 PostgreSQL 产品开发工作,热衷于 PostgreSQL 数据库的学习和研究 | REPMGR 简介 repmgr[1] 是一…

    数据库 2023年5月24日
    0121
  • 处理mysql主从不同步问题

    问题描述:发现主库操作数据从库没有变动问题,可能原因是从库重启导致的无法同步问题。 排查思路: 1、查看主从复制状态 发现从库的IO 和SQL 进程都是no(正常状态应该是yes)…

    数据库 2023年5月24日
    080
  • 慢SQL,压垮团队的最后一根稻草!

    一、什么是慢 SQL 什么是慢SQL? 顾名思义,运行时间较长的 SQL 语句即为慢 SQL! 然后,问题就出现了。需要多长时间才能慢下来? [En] Then the quest…

    数据库 2023年5月24日
    086
  • [编程一生]历史文章分类汇总

    2021年过去了,总结一下我的239篇原创。方便大家利用自带的搜索功能当智能机器人来用。 面试类 方法论 架构类 网络通信与 操作系统原理 稳定性建设 Java 中间件 程序人生 …

    数据库 2023年6月6日
    0100
  • 分享封装好的异步Mysql动态的库(DyNetMysql.dll) + 项目源码

    在做C++项目时,经常会用到Mysql数据库,Mysql接口提供给我们的数据是相当原始的,如:字段名、字段类型,字段长度等等,一般情况我们都想一种更方便获得数据 如: XXXStr…

    数据库 2023年6月14日
    082
  • 必应咋想的

    首页里弄了个阴森的图片,下面有个山洞,里面有白衣女鬼飘过,还有背景音乐。 看右下角的介绍里有名字叫:万圣节之夜在黑暗树篱 Original: https://www.cnblogs…

    数据库 2023年6月9日
    0100
  • Javaweb-Ajax详解

    一、概念 Ajax = Asynchronous JavaScript and XML(异步的JavaScript和XML) Ajax不是一种新的编程语言,而是一种用于创建更好更快…

    数据库 2023年6月16日
    084
  • MySQL max() min() 函数取值错误

    今天日志出现异常,一步一步debug发现SQL语句返回值出错,进一步发现是max()函数返回出错。点击跳转解决办法,赶时间的朋友可以去获得答案。当然我还是希望大伙看看原由。 sel…

    数据库 2023年5月24日
    085
  • JavaScript Date 时间类型 .toISOString() 时差问题

    JS中使用 toISOString 方法导致差了8个小时的问题 使用 getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。对差的时间进行补…

    数据库 2023年6月11日
    093
  • 数据类型

    布尔类型:true和false;占一个位 public class Demo01 {    public static void main(String[] args) { Ori…

    数据库 2023年6月11日
    096
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球