alpine用法以及dockerfile做apache编译安装

本文介绍了如何使用alpine Linux这一轻量级发行版进行基础操作,如更新仓库、安装Apache,以及如何利用Dockerfile创建自定义的Apache镜像,包括下载安装包、编写entrypoint.sh和Dockerfile,最后测试和上传到dockerhub。

alpine用法以及dockerfile做apache编译安装

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

特点:

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

alpine镜像下载

alpine官网

更新仓库

localhost:~# cd /etc/apk
localhost:/etc/apk# ls
arch               protected_paths.d  world
keys               repositories
localhost:/etc/apk# apk update
3.15.0 [/media/cdrom/apks]
OK: 85 distinct packages available
localhost:/etc/apk# 

网络配置

localhost:~# cat /etc/network/interfaces 
atuo lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.183.100
        netmask 255.255.255.0
        geteway 192.168.183.2

localhost:~# /etc/init.d/networking restart
 * Stopping networking ...
 *   lo ...                                                               [ ok ]
 *   eth0 ...                                                             [ ok ]
 * Starting networking ...
 *   lo ...                                                               [ ok ]
 *   eth0 ...                                                             [ ok ]
localhost:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:1e:90:2e brd ff:ff:ff:ff:ff:ff
    inet 192.168.183.100/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe1e:902e/64 scope link 
       valid_lft forever preferred_lft forever
localhost:~# 

SSH远程

alpine安装完成后是不允许远程登录的,需要我们修改配置文件,修改完配置文件后重启服务才可进行远程

localhost:~# apk add openssh
······

localhost:~# vi /etc/ssh/sshd_config 
#LoginGraceTime 2m                    
PermitRootLogin yes		//此行取消注释后,将prohibit-password替换为yes                   
#StrictModes yes      

开机自启

localhost:~# rc-update add sshd

重启

localhost:~# /etc/init.d/sshd restart

设置root密码

localhost:~# passwd root

基本命令用法

apk update

apk update		//更新最新镜像源列表

localhost:~# apk update
3.15.0 [/media/cdrom/apks]
OK: 85 distinct packages available
localhost:~# 

apk search

apk search 					#查找所以可用软件包
apk search -v 				#查找所以可用软件包及其描述内容
apk search -v 'acf*' 		#通过软件包名称查找软件包
apk search -v -d 'docker' 	#通过描述文件查找特定的软件包

apk add

apk add openssh 					#安装一个软件
apk add openssh openntp vim   		#安装多个软件
apk add --no-cache -U apache2  		#不使用本地镜像源缓存,相当于先执行update,再执行add

apk info

apk info 						#列出所有已安装的软件包
apk info -a zlib 				#显示完整的软件包信息
apk info --who-owns /sbin/lbu 	#显示指定文件属于的包

apk upgrade

apk upgrade 						#升级所有软件
apk upgrade openssh 				#升级指定软件
apk upgrade openssh openntp vim   	#升级多个软件
apk add --upgrade busybox 			#指定升级部分软件包

apk del

apk del openssh  		#删除一个软件

add:   **相当于install**
del:   **相当于remove**

创建用户和组

//创建用户
adduser
-h 			#创建家目录
-g			#用户的详细信息
-s 			#登录shell
-G			#组
-S 			#创建系统用户
-D 			#不分配密码
-H 			#不创建家目录
-u 			#UID
-k 			#创建框架目录

//删除用户
deluser

关机重启

localhost:~# reboot		 #重启系统
localhost:~# poweroff	 #关机

dockerfile做alpine编译安装镜像

创建目录并下载所需安装包
[root@localhost ~]#mkdir -p /srv/web
[root@localhost ~]# cd /srv/web/
[root@localhost web]# ls
[root@localhost web]# echo "test" > index.html
[root@localhost web]# cat index.html 
test
[root@localhost ~]# mkdir httpd
[root@localhost ~]# cd httpd/
[root@localhost httpd]# mkdir files
[root@localhost httpd]# touch Dockerfile
[root@localhost httpd]# ls
Dockerfile  files
[root@localhost httpd]# cd files/
[root@localhost files]# wget http://mirrors.aliyun.com/apache/apr/apr-1.7.0.tar.gz
[root@localhost files]# wget https://mirrors.aliyun.com/apache/apr/apr-util-1.6.1.tar.gz
[root@localhost files]# wget 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
编写entrypoint.sh脚本
[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 files]# ll
总用量 11136
-rw-r--r--. 1 root root 1093896 4月   5 2019 apr-1.7.0.tar.gz
-rw-r--r--. 1 root root  554301 10月 23 2017 apr-util-1.6.1.tar.gz
-rwxr-xr-x. 1 root root      87 8月  30 21:23 entrypoint.sh
-rw-r--r--. 1 root root 9743277 6月   8 16:42 httpd-2.4.54.tar.gz
编写dockerfile
[root@localhost httpd]# vim Dockerfile
[root@localhost httpd]# cat Dockerfile 
FROM alpine

LABEL MANTAINER "JL 1548126326@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 httpd]# cd
[root@localhost ~]# podman build -t test/httpd:v0 httpd/
[root@localhost ~]# podman images
REPOSITORY                TAG         IMAGE ID      CREATED             SIZE
localhost/test/httpd      v0          5b312457b7af  About a minute ago  128 MB
docker.io/library/alpine  latest      c059bfaa849c  9 months ago        5.87 MB
创建容器,链接外部存储,并测试
[root@localhost ~]# podman run -d --name web -p 80:80 -v /srv/web/://usr/local/apache/htdocs/:Z test/httpd:v0


[root@localhost web]# podman ps 
CONTAINER ID  IMAGE                       COMMAND               CREATED         STATUS             PORTS               NAMES
7f3dc425697b  localhost/test/httpd:v0  /usr/local/apache...  10 minutes ago  Up 10 minutes ago  0.0.0.0:80->80/tcp  web


[root@localhost ~]# curl localhost:80
test

上传镜像到dockerhub
[root@localhost ~]# podman images
REPOSITORY                TAG         IMAGE ID      CREATED         SIZE
localhost/test/httpd   v0          5b312457b7af  38 minutes ago  128 MB
docker.io/library/alpine  latest      c059bfaa849c  9 months ago    5.87 MB
[root@localhost ~]# podman push test/httpd:v0
Getting image source signatures
Copying blob 8d3ac3489996 done  
Copying blob bdb16d456f26 done  
Copying blob 796a38c423e2 done  
Copying config 5b312457b7 done  
Writing manifest to image destination
Storing signatures

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值