首页 > 其他分享 >Alpine介绍与使用

Alpine介绍与使用

时间:2022-08-31 22:13:39浏览次数:74  
标签:httpd -- 介绍 apk apr 使用 root localhost Alpine

Dockerfile使用alpine创建apache镜像

目录

Alpine

Alpine简介

alpine是一个轻量级的Linux发行版本,轻量级不仅体现在其占用空间的大小,还因为他没有图形化界面,只有命令行界面。

alpine官网链接:https://www.alpinelinux.org/

alpine特点:

1、小巧:基于Musl libc和busybox,和busybox一样小巧,最小的Docker镜像只有5MB;

2、安全:面向安全的轻量发行版;

3、简单:提供APK包管理工具,软件的搜索、安装、删除、升级都非常方便。

4、适合容器使用:由于小巧、功能完备,非常适合作为容器的基础镜像。以Alpine为基础镜像,创建一个容器,镜像大小只有35.26MB,同样的方式使用centos系统作为基础镜像,镜像大小有127MB;所以以Apline作为基础镜像是个非常明智的选择

alpine命令

命令 作用
apk update 更新最新镜像源列表
apk search 查找所以可用软件包
apk search -v 查找所以可用软件包及其描述内容
apk search -v ‘acf*’ 通过软件包名称查找软件包
apk search -v -d ‘docker’ 通过描述文件查找特定的软件包
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 删除一个软件

alpine服务管理

alpine没有使用fedora的systemctl来进行服务管理,使用的是RC系列命令:

rc-update 主要用于不同运行级增加或者删除服务
rc-status 主要用于运行级的状态管理
rc-service 主用于管理服务的状态
rc-status -a 列出系统所有服务

alpine制作httpd镜像

拉取alpine镜像,创建一个目录存放dockerfile和下载的包

[root@localhost ~]# podman pull alpine

[root@localhost ~]# mkdir httpd
[root@localhost ~]# ls
anaconda-ks.cfg  httpd
[root@localhost ~]# cd httpd/
[root@localhost httpd]# touch Dockerfile
[root@localhost httpd]# mkdir files
[root@localhost httpd]# cd files/
[root@localhost files]# wget http://mirrors.aliyun.com/apache/apr/apr-1.7.0.tar.gz https://mirrors.aliyun.com/apache/apr/apr-util-1.6.1.tar.gz https://mirrors.aliyun.com/apache/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

编写Dockerfile与entrypoint脚本文件

[root@localhost files]# cd ..
[root@localhost httpd]# vim Dockerfile 
[root@localhost httpd]# cat Dockerfile 
FROM alpine

LABEL MANTAINER "daxinyu [email protected]"

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 \
    --sysconfdir=/etc/httpd24 \
    --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/bash","/entrypoint.sh"]
[root@localhost httpd]# cd files/
[root@localhost files]# vim entrypoint.sh 
[root@localhost files]# cat 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 ~]# podman build -t a3171344634/httpd:v2.1 httpd/
[root@localhost ~]# podman images
REPOSITORY                   TAG         IMAGE ID      CREATED         SIZE
localhost/a3171344634/httpd  v2.1        516902851718  22 minutes ago  120 MB

上传镜像

[root@localhost files]# cd
[root@localhost ~]# podman login
Username: a3171344634
Password: 
Login Succeeded!
[root@localhost ~]# podman push a3171344634/httpd:v2.1 
Getting image source signatures
Copying blob 2778bca97ac2 done  
Copying blob f53ee605dbd2 done  
Copying blob 994393dc58e7 skipped: already exists  
Copying config 5169028517 done  
Writing manifest to image destination
Storing signatures

标签:httpd,--,介绍,apk,apr,使用,root,localhost,Alpine
From: https://www.cnblogs.com/Clannaddada/p/16644685.html

相关文章

  • List泛型集合之基本使用
     数组//变量.单个数据intnumA=10;floatnumB=3.14f;boolisstart=false;Console.WriteLi......
  • Alpine系统
    Alpine目录Alpine1.Alpine是什么2.Alpine的有点3.安装Alpine4.Alpine常用命令软件管理服务管理修改IP地址1.Alpine是什么alpine是一个轻量级的Linux发行版本,轻量级不仅......
  • SpringBoot简单使用(1)
    1:xml文件与javaconfig 1.1.1什么是javaconfig:是spring提供的使用java类配置容器。配置springIOC容器的纯java方法优点:可以使用面向对象的方式,一个配置类可以继承配置......
  • Cocoapods的简单介绍和使用
    1、Cocoapods运行环境和gem命令1.1Ruby运行环境和gem命令Mac自带Ruby环境。如果gem版本太旧,可以使用以下指令升级到最新: sudogemupdate--system检查Ruby版本指......
  • redis的安装与使用
    Redis安装与命令使用安装:@1:下载地址:Download|Redis@2:安装过程先把下载好的redis的安装包放到linux服务器的相关位置https://download.redis.io/releases/redis-6.2......
  • Arch 使用备忘
    目录安装解决问题一段时间不更新,则pgp签名失效美化安装待补解决问题一段时间不更新,则pgp签名失效先单独更新archlinux-keyring包美化......
  • 在visual studio中使用cmake生成dll中的坑
    最近改用visualstudio写c++,把我之前基于MinGW的代码库clon下来在vs中跑,结果不能运行,因为链接器总是莫名奇妙地链接的我想要生成的dll文件同名的lib文件如下图所示文件结......
  • linux中awk的小案例使用
    1.排版整齐的输出第一列与最后一列awk'{printf"%-15s%s\n",$1,$NF}'data2.txt   2.对于数据的每个字段之间进行控制使用print函数打印,如果......
  • java使用Stream简单操作集合
     效果图  本项目使用springbootpom依赖<!--lombok依赖--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <v......
  • 使用正则表达式匹配任意字符包括空格和换行符
    今天在PHP中想使用正则表达式来获取一段文本中的任意字符。于是很随意得就写出如下匹配规则:(.*)结果运行之后才发现,无法获得换行之后的文本。于是查了一下手册,才......