podman用脚本和dockerfile做apache编译安装镜像(alpine版)

alpine系统是什么

Alpine Linux 是一个基于 musl libc 和 busybox 的面向安全的轻量级 Linux 发行版。

alpine系统的特点

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

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

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

适合容器使用:由于小巧、功能完备,非常适合作为容器的基础镜像。

alpine镜像下载

alpine官网

alpine国内源
清华大学:https://mirror.tuna.tsinghua.edu.cn/alpine/
阿里云:https://mirrors.aliyun.com/alpine/
网易:http://mirrors.163.com/

更换apk源

sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
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没有使用fedora的systemctl来进行服务管理,使用的是RC系列命令:

rc-update //主要用于不同运行级增加或者删除服务

rc-status //主要用于运行级的状态管理

rc-service //主用于管理服务的状态

rc-status -a //列出系统所有服务
关闭系统
reboot //重启系统

poweroff //关机
dockerfile创建apache镜像

创建好目录结构

#下载好需要使用的包
[root@localhost ~]# 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
--2022-08-31 20:50:18--  http://mirrors.aliyun.com/apache/apr/apr-1.7.0.tar.gz
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 119.96.17.242, 58.42.55.237, 36.99.20.191, ...
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|119.96.17.242|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1093896 (1.0M) [application/octet-stream]
Saving to: ‘apr-1.7.0.tar.gz’

apr-1.7.0.tar.gz      100%[=========================>]   1.04M  --.-KB/s    in 0.04s

2022-08-31 20:50:18 (27.3 MB/s) - ‘apr-1.7.0.tar.gz’ saved [1093896/1093896]

--2022-08-31 20:50:18--  https://mirrors.aliyun.com/apache/apr/apr-util-1.6.1.tar.gz
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|119.96.17.242|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 554301 (541K) [application/octet-stream]
Saving to: ‘apr-util-1.6.1.tar.gz’

apr-util-1.6.1.tar.gz 100%[=========================>] 541.31K  --.-KB/s    in 0.03s

2022-08-31 20:50:19 (18.3 MB/s) - ‘apr-util-1.6.1.tar.gz’ saved [554301/554301]

--2022-08-31 20:50:19--  https://mirrors.aliyun.com/apache/httpd/httpd-2.4.54.tar.gz
Reusing existing connection to mirrors.aliyun.com:443.
HTTP request sent, awaiting response... 200 OK
Length: 9743277 (9.3M) [application/octet-stream]
Saving to: ‘httpd-2.4.54.tar.gz’

httpd-2.4.54.tar.gz   100%[=========================>]   9.29M  46.1MB/s    in 0.2s

2022-08-31 20:50:19 (46.1 MB/s) - ‘httpd-2.4.54.tar.gz’ saved [9743277/9743277]

FINISHED --2022-08-31 20:50:19--
Total wall clock time: 1.3s
Downloaded: 3 files, 11M in 0.3s (40.4 MB/s)


创建好一个目录存放包和dockerfile

[root@localhost ~]# mkdir httpd
[root@localhost ~]# cd httpd
[root@localhost httpd]# mkdir files
[root@localhost httpd]# touch Dockerfile
[root@localhost httpd]# cd
[root@localhost ~]# mv *.tar.gz httpd/files/
编写一个entrypoint.sh的脚本
[root@localhost httpd]# cd files/
[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

编写dockerfile

[root@localhost ~]# cd httpd/
[root@localhost httpd]# vim Dockerfile
[root@localhost httpd]# cat Dockerfile
FROM alpine

LABEL MANTAINER "SHU 2228706561@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 \
    --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 ~]# docker build -t shujiaming/httpd:v2 httpd/
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
STEP 1/9: FROM alpine
Resolved "alpine" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf)
Trying to pull docker.io/library/alpine:latest...
Getting image source signatures
Copying blob 59bf1c3509f3 done
Copying config c059bfaa84 done
Writing manifest to image destination
Storing signatures
STEP 2/9: LABEL MANTAINER "SHU 2228706561@.com"
--> a357281e44b
.......
[root@localhost ~]# docker images
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
REPOSITORY                  TAG         IMAGE ID      CREATED         SIZE
localhost/shujiaming/httpd  v4          e1aafa71b8ba  9 seconds ago   133 MB
<none>                      <none>      7f9c80a5a0ca  23 minutes ago  65.5 MB
localhost/shujiaming/s1     2002.17     011654610dfc  24 hours ago    705 MB
localhost/nuanchun/httpd    2002.17     011654610dfc  24 hours ago    705 MB
localhost/httpd             2002.17     011654610dfc  24 hours ago    705 MB
localhost/ub                latest      8b43ab34c7e4  47 hours ago    1.09 kB
<none>                      <none>      d852b2ec6dc2  47 hours ago    1.09 kB
<none>                      <none>      cae8327971d3  47 hours ago    1.09 kB
<none>                      <none>      42ff5a1f99ac  47 hours ago    1.09 kB
localhost/centoscy          7           53a49eebc8f3  47 hours ago    411 MB
docker.io/library/httpd     latest      dabbfbe0c57b  8 months ago    148 MB
docker.io/library/alpine    latest      c059bfaa849c  9 months ago    5.87 MB
docker.io/library/ubuntu    latest      ba6acccedd29  10 months ago   75.2 MB
quay.io/centos/centos       latest      300e315adb2f  21 months ago   217 MB
quay.io/centos/centos       7           8652b9f0cb4c  21 months ago   212 MB

创建容器,链接外部存储,并测试

[root@localhost ~]# mkdir /html/
[root@localhost ~]# cd /html/
[root@localhost html]# echo "hello Shujiaming" > index.html
[root@localhost html]# cat index.html
hello Shujiaming

[root@localhost html]# docker run -dit --name web -p 80:80 -v /html/://usr/local/apache/                           htdocs/:Z shujiaming/httpd:v4
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
397a38977401ac3e57f72f047dd165e6c0d1924bc08f1ac03a49fcd8d4bb5b0e
[root@localhost html]# docker ps
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
CONTAINER ID  IMAGE                          COMMAND               CREATED         STATU                           S             PORTS               NAMES
397a38977401  localhost/shujiaming/httpd:v4  /usr/local/apache...  12 seconds ago  Up 11                            seconds ago  0.0.0.0:80->80/tcp  web
[root@localhost html]# curl 192.168.237.134:80
hello Shujiaming

上传镜像

[root@localhost ~]# docker push shujiaming/httpd:v4
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
Getting image source signatures
Copying blob 8d3ac3489996 done
Copying blob c7cb0d226989 done
Copying blob b298e09cc10e done
Copying config e1aafa71b8 done
Writing manifest to image destination
Storing signatures

posted @ 2022-08-31 22:56  舒少`  阅读(191)  评论(0)    收藏  举报