【Docker】使用alpine构建基础镜像

1. alpine介绍

Alpine Linux是体积最小的Linux发行版,它重点关注于安全和速度。使用apk能够很快地安装软件包,默认情况下,镜像只包含了完成基础UNIX任务所需要的东西 ,因此相对于其它Docker基础镜像,体积会更小。

2. alpine包管理基本命令

Alpine使用apk进行包管理,下面介绍一些常用的包管理命令:

2.1. 更新最新镜像源列表:apk update

apk update

2.2. 搜索软件包:apk search

apk search                # 查找所以可用软件包
apk search -v             # 查找所以可用软件包及其描述内容
apk search -v 'acf*'      # 通过软件包名称查找软件包
apk search -v -d 'docker' # 通过描述文件查找特定的软件包

2.3. 安装软件包:apk add

apk add openssh                  # 安装一个软件
apk add openssh openntp vim      # 安装多个软件
apk add --no-cache mysql-client  # 不使用本地镜像源缓存,相当于先执行update,再执行add

2.4. 列出已安装的软件包:apk info

apk info               # 列出所有已安装的软件包
apk info -a zlib       # 显示完整的软件包信息
apk info --who-owns /sbin/lbu # 显示指定文件属于的包

2.5. 升级软件版本:apk upgrade

apk upgrade                       # 升级所有软件
apk upgrade openssh               # 升级指定软件
apk upgrade openssh openntp vim   # 升级多个软件
apk add --upgrade busybox         # 指定升级部分软件包

2.6. 删除软件包:apk del

apk del openssh  # 删除一个软件

3. 使用alpine系统构建基础镜像

3.1. 基础alpine镜像

FROM alpine:3.9.2

# 更新最新镜像源列表
RUN apk update

# 设置Docker 时间为上海时区
RUN apk add -U tzdata
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/shanghai" >> /etc/timezone

# 依次安装命令:curl、scp、telnet
RUN apk add curl
RUN apk add openssh-client
RUN apk add busybox-extras

# 这里添加top命令是为了方便本地测试,防止启动该基本镜像容器后自动运行停止
ENTRYPOINT ["top"]

3.2. 基于Java jdk的镜像构建

由于java:8-alpine里面已有telnet,不需再重新安装,添加已有安装包的话会出现以下类似错误:

jdk7的话只需修改java:8-alpine为java:7-alpine即可

例子:

FROM java:8-alpine

# 更新最新镜像源列表
RUN apk update


# 设置Docker 时间为上海时区
RUN apk add -U tzdata
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/shanghai" >> /etc/timezone


# 依次安装命令:curl、scp、
RUN apk add curl
RUN apk add openssh-client

ENTRYPOINT ["top"]

3.3. 构建过程中遇到的一些问题

3.3.1. 如何打包curl、scp、telnet基本命令至镜像中

添加RUN命令,采用apk add 的方式添加所需的软件包

# 更新最新镜像源列表
RUN apk update

# 依次安装命令curl、scp、telnet
RUN apk add curl
RUN apk add openssh-client
RUN apk add busybox-extras

3.3.2. 如何更新为中国时区

alpine中没有时区数据包,如果单单拷贝本机的时区文件进docker镜像中,会抛出类似以下的异常:

因此,需先在alpine镜像中安装timezone 数据包,再拷贝文件

# 设置Docker 时间为上海时区
RUN apk add -U tzdata
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/shanghai" >> /etc/timezone
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要从零开始制作Docker基础镜像,需要执行以下步骤: 1. 安装一个操作系统作为基础。可以选择一个最小化的Linux发行版,例如Ubuntu或Alpine。 2. 在操作系统中安装所需的软件包和依赖项。这些软件包将构成基础镜像的基本功能。例如,对于Web应用程序,可能需要安装Apache或Nginx服务器,以及相应的编程语言和库。 3. 通过命令行运行所需的配置和设置。这些配置可以包括网络设置、安全设置、服务启动和管理等。 4. 创建一个Dockerfile。Dockerfile是一个文本文件,其中包含一系列指令,用于构建Docker镜像。在Dockerfile中,我们可以指定基础镜像、设置镜像的元数据、添加软件包、复制文件和目录等。 5. 使用Docker命令构建镜像。在命令行中,可以运行docker build命令,并指定Dockerfile所在的路径,来构建镜像构建过程中,Docker将根据Dockerfile中的指令进行相应的操作,并逐步构建出最终的镜像。 6. 测试镜像。可以使用docker run命令在容器中运行镜像,并验证是否成功构建和安装了所需的软件包和设置。 7. 将镜像上传到镜像仓库(如Docker Hub)中,以便在其他机器上使用或共享。 这些步骤是从零开始制作Docker基础镜像的基本过程。通过按照这些步骤进行操作,可以根据自己的需要和要求,制作出适用于特定应用程序的定制化基础镜像
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值