Alpine介绍

Alpine 操作系统是一个面向安全的轻型 Linux 发行版。目前 Docker 官方已开始推荐使用 Alpine 替代之前的 Ubuntu 做为基础镜像环境。这样会带来多个好处。包括镜像下载速度加快,镜像安全性提高,主机之间的切换更方便,占用更少磁盘空间等。

Alpine的特点:

  • 小巧:基于Musl libc和busybox,和busybox一样小巧,最小的Docker镜像只有5MB;
  • 安全:面向安全的轻量发行版;
  • 简单:提供APK包管理工具,软件的搜索、安装、删除、升级都非常方便。
  • 适合容器使用:由于小巧、功能完备,非常适合作为容器的基础镜像。
# 拉取镜像
[root@master src]# docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
df20fa9351a1: Already exists
Digest: sha256:185518070891758909c9f839cf4ca393ee977ac378609f700f60a771a2dfe321
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest # 查看镜像大小
[root@master ~]# docker images | grep alpine
alpine latest a24bb4013296 4 weeks ago 5.57MB # 运行镜像
[root@master src]# docker run -it alpine:latest
/ #

Alpine软件包管理

1. 配置软件源

Alpine源配置文件

/ # cat /etc/apk/repositories
http://dl-cdn.alpinelinux.org/alpine/v3.11/main
http://dl-cdn.alpinelinux.org/alpine/v3.11/community

由于种种原因,官方源在国内很慢,甚至无法连接,我们将其改为国内镜像源

/ # echo "https://mirrors.aliyun.com/alpine/v3.6/main/"  > /etc/apk/repositories
/ # echo "https://mirrors.aliyun.com/alpine/v3.6/community/" >> /etc/apk/repositories
/ # cat /etc/apk/repositories
https://mirrors.aliyun.com/alpine/v3.6/main/
https://mirrors.aliyun.com/alpine/v3.6/community/

使用下面的这个可以始终使用最新版的

echo "https://mirrors.aliyun.com/alpine/latest-stable/main/" > /etc/apk/repositories
echo "https://mirrors.aliyun.com/alpine/latest-stable/community/" >> /etc/apk/repositories

2. 软件包管理

alpine 提供了非常好用的apk软件包管理工具,可以方便地安装、删除、更新软件。

查询软件

/ # apk search curl
lua5.2-curl-0.3.5-r2
uwsgi-alarm_curl-2.0.17-r0
py2-curl-7.43.0-r3
libcurl-7.61.1-r2
py3-curl-7.43.0-r3
py-curl-7.43.0-r3
curl-dev-7.61.1-r2
lua5.3-curl-0.3.5-r2
curl-7.61.1-r2
asterisk-curl-14.7.8-r0
php7-curl-7.1.17-r0
curl-dbg-7.61.1-r2
uwsgi-curl_cron-2.0.17-r0
lua5.1-curl-0.3.5-r2
lua-curl-0.3.5-r2
curl-doc-7.61.1-r2
php5-curl-5.6.40-r0
collectd-curl-5.6.2-r1
gst-plugins-bad1-1.10.4-r1

安装软件

/ # apk add curl
fetch https://mirrors.aliyun.com/alpine/v3.6/main/x86_64/APKINDEX.tar.gz
fetch https://mirrors.aliyun.com/alpine/v3.6/community/x86_64/APKINDEX.tar.gz
(1/6) Installing libressl2.5-libcrypto (2.5.5-r2)
(2/6) Installing ca-certificates (20161130-r3)
(3/6) Installing libssh2 (1.8.2-r0)
(4/6) Installing libressl2.5-libssl (2.5.5-r2)
(5/6) Installing libcurl (7.61.1-r2)
(6/6) Installing curl (7.61.1-r2)
Executing busybox-1.31.1-r9.trigger
Executing ca-certificates-20161130-r3.trigger
OK: 9 MiB in 20 packages

安装软件指定版本

apk add packagename=11.0.2-r0
apk add "packagename>1.2.3-r0" # 设置最小版本
安装本地pkg软件包
apk add --allow-untrusted /path/to/foo.apk 如果有依赖包,就一起安装
apk add --allow-untrusted pkg1.apk pkg2.apk

同时安装多个软件

apk add nodejs npm yarn

卸载软件

/ # apk del curl
(1/6) Purging curl (7.61.1-r2)
(2/6) Purging libcurl (7.61.1-r2)
(3/6) Purging ca-certificates (20161130-r3)
Executing ca-certificates-20161130-r3.post-deinstall
(4/6) Purging libressl2.5-libssl (2.5.5-r2)
(5/6) Purging libssh2 (1.8.2-r0)
(6/6) Purging libressl2.5-libcrypto (2.5.5-r2)
Executing busybox-1.31.1-r9.trigger
OK: 6 MiB in 14 packages

apk使用帮助信息

/ # apk --help
apk-tools 2.10.4, compiled for x86_64. Installing and removing packages:
add Add PACKAGEs to 'world' and install (or upgrade) them, while ensuring that all dependencies are met
del Remove PACKAGEs from 'world' and uninstall them System maintenance:
fix Repair package or upgrade it without modifying main dependencies
update Update repository indexes from all remote repositories
upgrade Upgrade currently installed packages to match repositories
cache Download missing PACKAGEs to cache and/or delete unneeded files from cache Querying information about packages:
info Give detailed information about PACKAGEs or repositories
list List packages by PATTERN and other criteria
dot Generate graphviz graphs
policy Show repository policy for packages Repository maintenance:
index Create repository index file from FILEs
fetch Download PACKAGEs from global repositories to a local directory
verify Verify package integrity and signature
manifest Show checksums of package contents Use apk <command> --help for command-specific help.
Use apk --help --verbose for a full command listing. This apk has coffee making abilities.

基于Alpine定制带有curl的镜像

FROM alpine
RUN echo "https://mirrors.aliyun.com/alpine/v3.6/main/" > /etc/apk/repositories
RUN echo "https://mirrors.aliyun.com/alpine/v3.6/community/" >> /etc/apk/repositories
RUN ["apk","update"]
RUN ["apk","add","curl"]
# 默认是没有开启缓存的,所以装完也不用清缓存

alpine linux 安装包报错

WARNING: Ign解决办法

apk add gcc 时候报错

WARNING: Ignoring APKINDEX.167438ca.tar.gz: No such file or directory

WARNING: Ignoring APKINDEX.a2e6dac0.tar.gz: No such file or directory

ERROR: unsatisfiable constraints:

gcc (missing):

required by: world[gcc]

解决办法

apk update

基于Alpine镜像定制自己的工具箱的更多相关文章

  1. 一个带bash,带glibc,中国时区,非root用户可运行crond命令的基于alpine镜像的Dockerfile

    这个镜像现在说起来简单, 带bash(增加执行脚本的兼容性,带GLIBC,中国时区,非root用户可运行crond命令-安全) 但让我开始陷入时,真的让我有段时间有点爆了. 比如,将filebeat文 ...

  2. 基于alpine定制常用命令镜像

    FROM alpine RUN apk update RUN apk add curl coreutils 像busybox.alpine镜像date命令都不是完整版的,不能执行加减的操作(date ...

  3. 支持HTTP2的cURL——基于Alpine的最小化Docker镜像

    cURL是我喜欢的开源软件之一.虽然cURL的强大常常被认为是理所当然的,但我真心地认为它值得感谢和尊重.如果我们的工具箱失去了curl,那些需要和网络重度交互的人(我们大多数人都是这样的)将会陷入到 ...

  4. 基于alpine用dockerfile创建的爬虫Scrapy镜像

    一.下载alpine镜像 [root@DockerBrian ~]# docker pull alpine Using default tag: latest Trying to pull repos ...

  5. 基于alpine用dockerfile创建的tomcat镜像

    1.下载alpine镜像 [root@docker43 ~]# docker pull alpine Using default tag: latest Trying to pull reposito ...

  6. 基于alpine用dockerfile创建的nginx镜像

    1.下载alpine镜像 [root@docker43 ~]# docker pull alpine Using default tag: latest Trying to pull reposito ...

  7. 基于alpine用dockerfile创建的ssh镜像

    1.下载alpine镜像 [root@docker43 ~]# docker pull alpine Using default tag: latest Trying to pull reposito ...

  8. Docker学习笔记:Alpine镜像+Python3安装+http服务器

    编写Dockerfile文件使用最新的Alpine镜像并安装Python3环境,如下: 因为python高于3.4则不会默认安装pip,需要手动安装. 试了很多其他办法都没安装上,唯有下载get-pi ...

  9. sh: /etc/init.d/sshd: not found Docker中的Alpine镜像安装sshd无法启动

    问题描述 在Alpine镜像中安装了openssh-server和openssh之后,无法执行ssh localhost.发现未启动服务,开启服务时报以下错误 / # ls /etc/init.d/s ...

随机推荐

  1. super详解

    1.super和this的区别 super调用的是父类的属性或方法,this是调用当前类的属性或者方法.     (1)super和this关于属性的调用     (2)super和this关于方法的 ...

  2. JetBrains系列IDE创建文件模板

    #coding:utf-8 ''' @version: python3.6 @author: '$USER' @license: Apache Licence @contact: steinven@q ...

  3. APISpace 号码实时查询API接口 免费好用

    最近公司项目有一个号码实时查询的小功能,想着如果用现成的API就可以大大提高开发效率,所以在网上的API商店搜索了一番,发现了 APISpace,它里面的号码实时查询API非常符合我的开发需求.   ...

  4. led跑马灯多种方法(移位法,位拼接法,调用模块法,位移及位拼接语法,testbench的理解,源文件的存储路径,计数器的个数,调用模块的方式)

    跟着教程写了几种方法,才发现自己写的虽然能实现,但比较繁琐.教程有三种方法: 1.移位法,每次左移一位,相比我自己写的,优点是不用把每一种情况都写出来.但是需要考虑左移到最后一位时需要自己再写个赋值语 ...

  5. 一个小 Trick

    平方变两次 一个状态 \(S\) 有一个贡献,所有状态 \(S\) 组成集合 \(U\) . 然后我们要统计下面这个东西 \[ans=\sum_{S\in U}f^2(S) \] 然后我们就可以看作是 ...

  6. Apache Dolphinscheduler3.0.0-beta-1 版本发布,新增FlinkSQL、Zeppelin任务类型

    导读:近日,Apache Dolphin Scheduler 迎来了 3.0.0-beta-1 版本的正式发布.新版本主要针对 3.0.0-alpha 进行了代码和文档的修复,并引入了部分的功能,如支 ...

  7. 创新能力加速产业发展,SphereEx 荣获“中关村银行杯”『大数据与云计算』领域 TOP1

    8 月 9 日下午,2022 中关村国际前沿科技创新大赛"中关村银行杯"大数据与云计算领域决赛在北京市门头沟区中关村(京西)人工智能科技园·智能文创园落下了帷幕.SphereEx ...

  8. iommu系列之---概念解释篇

    本文会对iommu中的一些容易引起疑惑的概念进行阐述,内核版本为4.19. 先上简写: DMAR - DMA remapping DRHD - DMA Remapping Hardware Unit ...

  9. 【mido】python的midi处理库

    安装mido库:pip install mido pipy地址:https://pypi.org/project/mido/ mido官方文档:https://mido.readthedocs.io/ ...

  10. 【java】学习路线10-权限修饰符详解

    /*关于修饰符:类:public default                public protected default privatesame class          √       ...