用Alpine制作镜像

参考:http://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management

  • 背景
  • Alpine简介
  • Alpine常用命令
  • alpine包管理举例
  • alpine私有仓库搭建
  • Dockerfile用例
  • 其他

背景

最近在公司制作镜像时,因保密问题,必须在内网完成,操作十分不方便,最开始只能在外网做好基础镜像之后,在通过文件中专站拷贝到内网,如果有问题再重新在外网制作,然后再转回内网,如此反复;另外在这个过程中遇到各种问题,下面列举出来然后各个击破,第一次写博文,不当之处请见谅

  1. 对apline的理解有误
  2. 安装某个工具时,通常会无法运行
  3. 使用系统默认的包安装源通常在内网无法正常工作

Alpine简介

Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox.
上面是官网给Alpine的一个定义,Alpine是一个只有5M大小的基础镜像,非常适合做对资源要求比较严苛的镜像, Alpine Linux Docker镜像基于Alpine Linux操作系统,后者是一个面向安全的轻型Linux发行版。不同于通常Linux发行版,Alpine Linux采用了musl libc和busybox以减小系统的体积和运行时资源消耗。在保持瘦身的同时,Alpine Linux还提供了自己的包管理工具apk,可以在其网站上查询,或者直接通过apk命令查询和安装。

Alpine常用命令

  • add 向运行中的系统添加包
  • del 删除运行中系统的包
  • fix 尝试修复或者升级已安装的包
  • update 更新可用包的索引
  • info 打印出已安装的包或者可用的安装包
  • search 通过通配符搜索包或者描述
  • upgrade 升级当前已安装的包
  • cache 维护本地缓存的包仓库
  • version 对比已安装和可用的包之间的不同之处
  • index 从包列表创建仓库的索引
  • fetch 下载但不安装包
  • audit 从原始包安装状态向文件系统列表更改
  • verify 验证包签名

##alpine包管理举例

  • 添加安装包
# 安装docker包
apk add docker
# 指定安装源
apk add -update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ --allow-untrusted
  • 删除安装包
# 删除docker包
apk del docker
  • 升级包
#升级单个包
apk update && apk add --upgrade busybox
# 升级整个系统
apk update && apk upgrade
  • 搜索安装包
#列出所有包含通配符abd可用的包,以及它们的描述
apk search -v 'abd'
  • 列出已安装包
#列出所有包含通配符abd可用的包,以及它们的描述
apk info -a zlib

搭建alpine私有仓库

  • 从官方拉取alpine所有的包
wget -r -np -nH http://nl.alpinelinux.org/alpine/v3.5/main/x86_64/
wget -r -np -nH http://nl.alpinelinux.org/alpine/v3.5/community/x86_64/
  • 下载后把源放到nginx的web目录下,直接可以访问,路径类似下面
    http://your_host_ip/alpine/v3.5/main/x86_64/

Dockerfile举例

FROM alpine:3.5

MAINTAINER XXX XX@sina.com

#解决内网无法正常使用仓库的问题
 RUN echo "https://your_host_ip/alpine/v3.5/main"  /etc/apk/repositories \
    && echo "https://your_host_ip/alpine/v3.5/community" >> /etc/apk/repositories 
    
#更新并升级包列表
RUN apk update 

#升级整个系统的所有包
RUN apk upgrade

#从源安装最小镜像所需的包
RUN apk add docker openjdk8-jre-base


#从本地添加安装包安装包
ADD file.apk /path/to/file.apk
#--allow-untrusted 本地安装文件可以放宽认证
RUN apk add --allow-untrusted /path/to/file.apk
# 安装多个本地包
apk add --allow-untrusted /var/tig-2.2-r0.apk /var/git-2.11.1-20.apk

##其他
通常建议搭建最好安装一些常用的包,比如g++, gcc,在制作一个自动部署工具的镜像时,运行环境已经能正常运行,但是始终报错找不到文件,后面发现是少了g++,安装好之后,程序才能正常运行

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐