首页 > 其他分享 >Alpine介绍与apk的基本使用

Alpine介绍与apk的基本使用

时间:2022-12-14 20:00:17浏览次数:34  
标签:## 介绍 tzdata apk packages root Alpine

前言

Alpine是一个面向安全的轻量级的Linux发行版,相比与CentOS,ubuntu体积小很多,大约只有5M左右,由于体积小的原因,在很多场景下都会使用它来按需制作一些轻量级镜像,虽然体积小但它也有着自己的包管理工具apk来安装需要的软件,类似于CentOS中的yum、ubuntu中的apt-get

Alpine使用的c库是使用mini版的musl libc与其他Linux发行版使用的gnu libc不一样。虽说号称兼容,但也只是部分兼容了,缺啥补啥就是,通过一个软链接来关联。

注意:终究不是正统的glibc,对于一些强依赖glibc的系统建议不要使用Alpine,比如使用了Oracle JDK的系统,建议在Alpine换成OpenJDK,很多强依赖于glibc的大型项目一般也不会提供基于Alpine的Dockerfile,比如tomcat

Alpine镜像

使用docker pull拉取

# 拉取
docker pull alpine:latest
# 查看镜像 大约只有5M
docker images|grep alpine
alpine   latest          c059bfaa849c   12 months ago   5.59MB

apk

镜像源

一般这种需要从公网拉取镜像的都需要设置镜像源,因为默认镜像源在国外,下载会比较慢。比较出名的有清华大学源 、中科大源、阿里云源等

清华大学的很多源不仅是apk源,都可以在下面链接中查找

https://mirror.tuna.tsinghua.edu.cn/help
# 清华大学源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
# 阿里云源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
# 中科大源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
运行

Alpine为了精简体积是没有bash的,使用sh运行即可。

[root@node01 ~]# docker run -it --name=alpine alpine:latest /bin/sh
## 查看版本
/ # cat /etc/alpine-release 
3.15.0
apk基础命令
/ # apk -h
apk-tools 2.12.7, compiled for x86_64.

usage: apk [<OPTIONS>...] COMMAND [<ARGUMENTS>...]

Package installation and removal:
  add        Add packages to WORLD and commit changes
  del        Remove packages from WORLD and commit changes

System maintenance:
  fix        Fix, reinstall or upgrade packages without modifying WORLD
  update     Update repository indexes
  upgrade    Install upgrades available from repositories
  cache      Manage the local package cache

Querying package information:
  info       Give detailed information about packages or repositories
  list       List packages matching a pattern or other criteria
  dot        Render dependencies as graphviz graphs
  policy     Show repository policy for packages
  search     Search for packages by name or description

Repository maintenance:
  index      Create repository index file from packages
  fetch      Download packages from global repositories to a local directory
  manifest   Show checksums of package contents
  verify     Verify package integrity and signature

Miscellaneous:
  audit      Audit system for changes
  stats      Show statistics about repositories and installations
  version    Compare package versions or perform tests on version strings

This apk has coffee making abilities.
For more information: man 8 apk

我们常用的命令如下

apk add 安装软件

apk del 删除软件

apk upgrade 升级软件

apk info 列出已安装的软件信息

apk search 通过名字或描述搜索有没有改软件

apk fetch  从仓库下载软件到本地目录,下载下来的是.apk包

真正使用时还会有一些额外的参数可以设置大家可以通过 --help查看 如 apk add -h

常用的额外参数如下

# 全局参数
--no-cache 不使用本地缓存
--no-network 不使用公网操作

# add
-l 总是选择latest版本
-u 升级包以及它依赖的包
--no-chown 不改变包原来的owner or group

# del
-r 递归删除依赖

# fetch
-o 下载的包保存到指定目录
-R 同时下载依赖

# info
-d 显示描述信息
-R 显示依赖包
-s 显示大小
使用

时区

UTC 国际协调时间,默认时间 0时区
GMT 格林威治时间 0时区
CST 美国、澳大利亚、古巴或中国的标准时间 显然我们应该使用CST,通常使用Shanghai时区 +8

查看当前时区

/ # date
Tue Dec  6 08:07:55 UTC 2022

安装时区

/ # apk add tzdata
(1/1) Installing tzdata (2022f-r1)
Executing busybox-1.34.1-r3.trigger
OK: 9 MiB in 15 packages

## 多了一个zoneinfo目录,里面有各种时区
/ # ls -ld /usr/share/zoneinfo/
drwxr-xr-x   19 root     root          4096 Dec  6 08:13 /usr/share/zoneinfo/

## 使用上海时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "Asia/Shanghai" /etc/timezone

## 再次查看当前时区
/ # date
Tue Dec  6 16:21:08 CST 2022
/ # date -R
Tue, 06 Dec 2022 16:21:15 +0800

下载软件

通常公司的环境是不连外网的,如果缺少包可以在外网通过apk fetch 将对应apk包及其依赖下载下来,然后上传至公司环境,然后通过apk add xx.apk即可安装,下面通过下载tzdata演示

## 创建文件夹
~ # mkdir -p /root/tzdata

## 下载tzdata及其依赖包到/root/tzdata目录
~ # apk fetch -R -o /root/tzdata tzdata
Downloading tzdata-2022f-r1
Downloading musl-1.2.2-r7

## 查看/root/tzdata目录多了两个apk包 musl-1.2.2-r7.apk tzdata-2022f-r1.apk
~ # ls -l /root/tzdata/
total 812
-rw-r--r--    1 root     root        383152 Oct 18  2021 musl-1.2.2-r7.apk
-rw-r--r--    1 root     root        443978 Nov  6 19:34 tzdata-2022f-r1.apk

## 删除安装好的tzdata及其依赖
~/tzdata # apk del -r tzdata
(1/1) Purging tzdata (2022f-r1)
Executing busybox-1.34.1-r3.trigger
OK: 6 MiB in 14 packages

## 时间已经变为 UTC
~/tzdata # date
Tue Dec  6 08:43:31 UTC 2022

## 安装/root/tzdata目录的.apk包
## ls |xargs -n 1 列出所有的包一个个add,对于依赖包比较多的时候方便
~/ cd /root/tzdata
~/tzdata # ls |xargs -n 1 |xargs apk add --no-network
(1/1) Installing tzdata (2022f-r1)
Executing busybox-1.34.1-r3.trigger
OK: 9 MiB in 15 packages

## 时间已经变回来,因为之前的软连接没删,安装后自动软链了
~/tzdata # date
Tue Dec  6 16:45:34 CST 2022

Alpine的简单介绍与apk命令的基本使用就介绍到这里了,后面介绍Alpine中会碰到的一些问题。



作者:倦juan
链接:https://www.jianshu.com/p/c338550dc73c
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:##,介绍,tzdata,apk,packages,root,Alpine
From: https://www.cnblogs.com/exmyth/p/16983385.html

相关文章

  • EMQ X 介绍与服务器安装
    EMQX服务器介绍:EMQX (Erlang/Enterprise/ElasticMQTTBroker)是基于Erlang/OTP平台开发的开源物联网MQTT消息服务器。Erlang/OTP是出色的软实时(Soft-Realtime)......
  • Gateway服务网关的介绍与使用
    什么是服务网关传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关,客户端只能在本地记录每个微服务的调用地址,当需......
  • Spring Cloud Config介绍
    市场上的开源的配置中心有很多,如奇虎360的QConf、淘宝的Diamond、百度的Disconf、携程的Apollo都可解决上述提到的问题,同样地SpringCloud提供的配置中心则是SpringCloud......
  • EhCache的介绍
    ehcache是一个非常轻量级的缓存实现,而且从1.2之后就支持了集群,而且是hibernate默认的缓存provider。EhCache是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernat......
  • Ribbon介绍和使用
    Ribbon是Netflix公司提供的一个在SpringCloud中免费使用的客户端负载均衡器组件。它在集群中为各个客户端之间的通信提供支持,可以控制、管理HTTP和TCP客户端的负载均衡。......
  • 2.0FreeRTOS文件介绍
    1、打开FreeRTOSv9.0.0,有两个文件夹FreeRTOS、FreeRTOS-Plus。FreeRTOS-Plus是一些第三方产品,一般用不到  2、打开FreeRTOS有Demo、License、Source Demo:官方为......
  • 网关介绍
    网关指的是一个网络连接到另一个网络的“关口”。在Internet里,网关是一种连接内部网与Internet上其他网络的中间设备,通俗来说,也叫作“路由器”。网关地址是能够理解成内部......
  • 数据智仓功能介绍(四)
    字段设置使用场景介绍字段设置,即在数据智仓中,对输入上一数据处理节点的字段进行显示和隐藏、排序、重命名等操作。操作配置对数据类型的转换,主要用户复杂数据的处理的情况下......
  • 1 推荐系统的介绍
    一、推荐系统是什么定义:根据用户的历史信息和行为,向用户推荐他感兴趣的内容方法:用户1喜欢钢铁侠,绿巨人与钢铁侠近,推荐绿巨人用户1与用户3相近,将用户3喜欢的蝙蝠侠......
  • 三种大数据应用架构介绍
    信息技术的发展,如今数据存储能力上升到了TB、PB级别,企业和政府部门都以各种形式存储了大量的数据,如何快速有效地处理规模大、结构复杂的数据?本文主要介绍大数据的三类应用......