apline系统
文章目录
alpine系统是什么
- Alpine Linux 是一个基于 musl libc 和 busybox 的面向安全的轻量级 Linux 发行版。
alpine系统的特点
小巧:基于Musl libc和busybox,和busybox一样小巧,最小的Docker镜像只有5MB;
安全:面向安全的轻量发行版;
简单:提供APK包管理工具,软件的搜索、安装、删除、升级都非常方便。
适合容器使用:由于小巧、功能完备,非常适合作为容器的基础镜像。
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 //删除一个软件
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
#创建好一个目录存放包和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
FROM alpine
LABEL MANTAINER "shenunwei 13872715916@163.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 images
REPOSITORY TAG IMAGE ID CREATED SIZE
albertdnp/httpd v2.0 7d3685d73ee7 2 minutes ago 122MB
alpine latest c059bfaa849c 9 months ago 5.59MB
创建容器,链接外部存储,并测试
[root@localhost ~]# mkdir /html/
[root@localhost ~]# cd /html/
[root@localhost html]# echo "Hello, its me" > index.html
[root@localhost html]# cat index.html
Hello, its me
[root@localhost ~]# docker run -dit --name web -p 80:80 -v /html/://usr/local/apache/htdocs/:Z albertdnp/httpd:v2.0
35c18c3ed8f7fedd6d9ea116dc399181425d070a42a2f9ddc3f81892559af7f7
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
35c18c3ed8f7 albertdnp/httpd:v2.0 "/bin/bash /entrypoi…" 13 minutes ago Up 13 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp web
[root@localhost ~]# curl 192.168.48.150:80
Hello, its me
上传镜像
[root@localhost ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: albertdnp
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[root@localhost ~]# docker push albertdnp/httpd:v2.0
The push refers to repository [docker.io/albertdnp/httpd]
c09019fe5e8f: Pushed
4c4e5cd2fa66: Pushed
8d3ac3489996: Mounted from library/alpine
v2.0: digest: sha256:6dc71e66b3239e0bc57049e4a0dd3aeb795f665c66ee1ad412e98bc4ddc016b0 size: 952