alpine,是一个重量仅为5 MB的最小Linux发行版。它还有基本的linux工具和一个不错的包管理器APK。APK非常稳定,有相当数量的包。由于体积小,在容器中很受欢迎,但是使用上坑也很多,大部分可能是我们的无知吧。

坑1 : 下载慢

解决:
echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/main" > /etc/apk/repositories \
&& echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/community" >> /etc/apk/repositories \
&& echo "https://mirror.tuna.tsinghua.edu.cn/alpine/edge/testing" >> /etc/apk/repositories

坑2: 找不到包

解决: 搜索 https://pkgs.alpinelinux.org/packages ,加入指定的“Branch”和“Repository”的源到/etc/apk/repositories,就可以apk add

坑3: 安装失败

ERROR: https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/community: Bad file descriptor
WARNING: Ignoring APKINDEX.79f426e4.tar.gz: Bad file descriptor
ERROR: unsatisfiable constraints:
openssh (missing):
required by: world[openssh]

解决:

apk add  openssh --no-cache #加--no-cache, 另外,还能减少镜像体积

坑4:镜像体积大,想删除不再使用的包

apk add 加 -t 参数

-t, --virtual NAME Instead of adding all the packages to 'world', create a new virtual package with the listed dependencies and add that to 'world'; the
actions of the command are easily reverted by deleting the virtual package
这意味着当您安装软件包时,这些软件包不会添加到全局软件包中。这种变化可以很容易地回滚/删除。所以,如果我需要gcc来编译程序,但是一旦程序被编译,我就不再需要gcc了。

我可以在虚拟包中安装gcc和其他必需的包,并且可以删除所有依赖项,并删除此虚拟包名称。以下是示例用法

apk add --virtual mypacks gcc vim
apk del mypacks
使用第一个命令安装的所有18个软件包将被下一个命令删除。

注意:同一个-t参数会覆盖之前的所有安装包,所有对动态链接库最好不使用-t ,或者保证此参数不重复。

坑5:时间不同步

echo "Asia/Shanghai" > /etc/timezone
apk add –no-cache tzdata
TZ=Asia/Shanghai
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

坑6:用户(组)和宿主机不兼容

解决:

addgroup -g  -S www \
&& adduser -u -D -S -G www www

坑7:不兼容glibc

解决:

使用最新稳定版本的alpine,

#再安装编译环境
apk add --virtual .build-base --no-cache 
autoconf \
automake \
g++ \
make \ linux-headers \
bsd-compat-headers 
 

最新文章

  1. 由Dapper QueryMultiple 返回数据的问题得出==》Dapper QueryMultiple并不会帮我们识别多个返回值的顺序
  2. Linux下安装MATLAB的一些注意事项
  3. RequireJS进阶(一)
  4. ZRender源码分析3:Painter(View层)-上
  5. 14.4.3.5 Configuring InnoDB Buffer Pool Flushing 配置InnoDB Buffer Pool 刷新:
  6. Python框架之Django学习
  7. Angular专题系列之一:初识Anjularjs
  8. 剑指Offer——中国银行面试知识储备
  9. MySQL数据库Inception工具学习与测试 笔记
  10. [20190402]对比_mutex_wait_scheme不同模式cpu消耗.txt
  11. 学习 Spring (十六) AOP API
  12. java 分隔函数split("",-1)的用途
  13. [转载] Web Service工作原理及实例
  14. Oracle使用——oracle用户相关操作
  15. Android构建项目时出现的小bug们(2018年5月19日19:31:20)
  16. WPF 定义Lookless控件的默认样式、 OnApplyTemplate 如何使用(实现方式、如何工作的)!
  17. 平衡二叉树(AVL)的理解和实现(Java)
  18. R语言实战(六)重抽样与自助法
  19. 【微信小程序】 引用公共js里的方法
  20. 小米范工具系列之五:小米范WEB口令扫描器

热门文章

  1. tornado 文件上传
  2. CentOS7安装Oracle11gR2
  3. ant+jmeter+jenkins自动环境搭建
  4. Mysqldump一次备份多个指定数据库
  5. Rust中的错误处理
  6. 201871010124-王生涛《面向对象程序设计(java)》第十五周学习总结
  7. 安卓Jsoup爬虫
  8. 【oracle】迁表结构和数据
  9. [题解向] 正睿Round409
  10. 逆天的化妆CSS