[TOC]
0x00 快速入门 Alpine 的意思是“高山的”,比如 Alpine plants高山植物,Alpine skiing高山滑雪、the alpine resort阿尔卑斯山胜地。
Alpine linux 它是基于 uClibc 和 Busybox 开发的目的是以减小系统的体积和运行时资源消耗,在保持瘦身的同时Alpine Linux还提供了自己的包管理工具apk,可以在其网站上查询或者直接通过apk命令查询和安装。
官网:https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management 软件包搜寻:https://pkgs.alpinelinux.org/packages
Alpine特点 :
小巧:基于Musl libc和busybox和busybox一样小巧最小的Docker镜像只有5MB
安全:面向安全应用的轻量级Linux发行版
简单:提供APK包管理工具,软件的搜索、安装、删除、升级都非常方便。
weiyigeek.top-镜像大小
Alpine应用:
适合容器使用:由于小巧、功能完备,非常适合作为容器的基础镜像,Alpine Linux Docker镜像基于Alpine Linux操作系统
适合用来做Docker镜像、路由器、防火墙、VoIP 盒子 以及服务器的操作系统
Alpine安装: alpine Linux是一个完整的操作系统,像其他操作系统一样可以将Alpine安装到本地硬盘中 安装过程:http://blog.csdn.net/csdn_duomaomao/article/details/76053229
注意事项 :
因为 Alpine 和 Ubuntu 不是一个社区进行维护,所以软件包很多名称是不同的,这里我直接提供我已经查找修改完毕的镜像文件。
alpine 的 c 库是 musl libc
而不是正统的 glibc
,另外对于一些依赖 glibc 的大型项目,像 openjdk 、tomcat、rabbitmq
等都不建议使用 alpine 基础镜像,因为 musl libc 可能会导致 jvm 一些奇怪的问题
, 这也是为什么 tomcat 官方没有给出基础镜像是 alpine 的 Dockerfile 的原因。
0x01 Alpine的配置和使用 1.网络相关文件 网络相关的文档,详细参见:https://wiki.alpinelinux.org/wiki/Configure_Networking
[TOC]
0x00 快速入门 Alpine 的意思是“高山的”,比如 Alpine plants高山植物,Alpine skiing高山滑雪、the alpine resort阿尔卑斯山胜地。
Alpine linux 它是基于 uClibc 和 Busybox 开发的目的是以减小系统的体积和运行时资源消耗,在保持瘦身的同时Alpine Linux还提供了自己的包管理工具apk,可以在其网站上查询或者直接通过apk命令查询和安装。
官网:https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management 软件包搜寻:https://pkgs.alpinelinux.org/packages
Alpine特点 :
小巧:基于Musl libc和busybox和busybox一样小巧最小的Docker镜像只有5MB
安全:面向安全应用的轻量级Linux发行版
简单:提供APK包管理工具,软件的搜索、安装、删除、升级都非常方便。
weiyigeek.top-镜像大小
Alpine应用:
适合容器使用:由于小巧、功能完备,非常适合作为容器的基础镜像,Alpine Linux Docker镜像基于Alpine Linux操作系统
适合用来做Docker镜像、路由器、防火墙、VoIP 盒子 以及服务器的操作系统
Alpine安装: alpine Linux是一个完整的操作系统,像其他操作系统一样可以将Alpine安装到本地硬盘中 安装过程:http://blog.csdn.net/csdn_duomaomao/article/details/76053229
注意事项 :
因为 Alpine 和 Ubuntu 不是一个社区进行维护,所以软件包很多名称是不同的,这里我直接提供我已经查找修改完毕的镜像文件。
alpine 的 c 库是 musl libc
而不是正统的 glibc
,另外对于一些依赖 glibc 的大型项目,像 openjdk 、tomcat、rabbitmq
等都不建议使用 alpine 基础镜像,因为 musl libc 可能会导致 jvm 一些奇怪的问题
, 这也是为什么 tomcat 官方没有给出基础镜像是 alpine 的 Dockerfile 的原因。
0x01 Alpine的配置和使用 1.网络相关文件 网络相关的文档,详细参见:https://wiki.alpinelinux.org/wiki/Configure_Networking 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 /etc/hostname hostname -F /etc/hostname /etc/hosts 192.168.99.100 alpine.csdn.net /etc/resolv.conf nameserver 218.2.135.1 nameserver 202.102.24.35 /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.3.166 netmask 255.255.255.0 gateway 192.168.3.254 /etc/init.d/networking restart
2.软件源配置 :
官方镜像源:https://mirrors.alpinelinux.org/ 清华TUNA镜像源:https://mirror.tuna.tsinghua.edu.cn/alpine/ 中科大镜像源:http://mirrors.ustc.edu.cn/alpine/ 阿里云镜像源:http://mirrors.aliyun.com/alpine/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 $ vi /etc/apk/repositories echo "http://mirrors.ustc.edu.cn/alpine/v3.10/main" > /etc/apk/repositoriesecho "http://mirrors.ustc.edu.cn/alpine/v3.10/community" >> /etc/apk/repositoriesecho "http://mirrors.ustc.edu.cn/alpine/v3.8/main" > /etc/apk/repositoriesecho "http://mirrors.ustc.edu.cn/alpine/v3.8/community" >> /etc/apk/repositoriesecho "http://dl-4.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositoriesapk search openssh apk update apk add [software] apk add php7 --repository http://nl.alpinelinux.org/alpine/edge/testing/ apk info [exsit_software] apk add drill
注意: Alpine中软件安装包的名字可能会与其他发行版有所不同,可以在 https://pkgs.alpinelinux.org/packages 网站搜索并确定安装包的名称
3.开启SSH服务 1 2 3 4 5 6 7 8 9 10 11 12 apk add openssh-server PermitRootLogin yes rc-update add sshd /etc/init.d/sshd restart
注意事项 : 因为Alpine采用的是musl libc不是通常用的glibc,在使用DNS时Alpine(musl libc)在DNS解析文件/etc/resolv.conf中,不使用domain或search选项。 在使用DNS作为服务发现时要查看相应的文档来解决相关链接:http://gliderlabs.viewdocs.io/docker-alpine/caveats/
Alpine 系统使用 Alpine Linux 在 Proxy 环境下如何通过网络进行通信? 描述: 在我们的alpine没有办法链接外网时而我们又需要使用apk进行更新仓库索引和下载工具, 此时我们可通过代理方式进行连接到局域网中可以上网和搭建有例如squid
代理上网的服务。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 proxy_user=weiyigeek proxy_pass=password proxy_host=proxy.weiyigeek.top proxy_port=3128 export http_proxy=http://${proxy_user} :${proxy_pass} @${proxy_host} :${proxy_port} export https_proxy=${http_proxy} export no_proxy=127.0.0.1,localhostcp /etc/apk/repositories /etc/apk/repositories.bak echo "http://mirrors.ustc.edu.cn/alpine/v3.8/main" > /etc/apk/repositoriesecho "http://mirrors.ustc.edu.cn/alpine/v3.8/community" >> /etc/apk/repositoriesapk update apk add tcpdump
Docker 镜像构建 Dockerfile 配置文件
1 2 3 4 5 6 7 8 9 FROM alpine:latestARG proxy_host="proxy.weiyigeek.top" ARG proxy_port="8080" ARG proxy_user="username" ARG proxy_pass="password" ENV http_proxy http://${proxy_user}:${proxy_pass}@${proxy_host}:${proxy_port}ENV https_proxy ${http_proxy}ENV no_proxy 127.0 .0.1 ,localhostRUN apk update