从零构建一个 Alpine 的 docker 镜像

从零构建一个 Alpine 的 docker 镜像

下载alpine的rootfs

https://alpinelinux.org/downloads/
找到 MINI ROOT FILESYSTEM 区,下载对应架构的包即可

从Dockerfile构建

1
2
3
4
5
FROM scratch
# 下面的alpine版本换成自己下载的即可
ADD alpine-minirootfs-3.13.5-x86_64.tar.gz /
RUN apk add --no-cache -U tzdata
RUN ln -fs ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime

使用命令构建

1
2
docker import -m `sha256sum alpine-minirootfs-3.18.0-x86_64.tar.gz` alpine-minirootfs-3.18.0-x86_64.tar.gz alpine:3.18.0
# -m 指定一个 commit message 。我这里使用了rootfs的sha256sum作为message
1
2
3
4
5
6
# 实例如下
[root@host-10-14 ~]# docker import -m `sha256sum alpine-minirootfs-3.18.0-x86_64.tar.gz` alpine-minirootfs-3.18.0-x86_64.tar.gz alpine:3.18.0
sha256:f30bd2b686a2a459f394804fc4b5b2452f6c3663dc8a1a64ed7f4b8cb2d073f2
[root@host-10-14 ~]# docker images alpine
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine 3.18.0 5e2b554c1c45 6 weeks ago 7.33MB
附:

docker golang alpine中遇到 sh xxx not found
https://my.oschina.net/u/727875/blog/4556125
https://blog.csdn.net/u011124985/article/details/80774171
https://blog.csdn.net/j3T9Z7H/article/details/106232650
docker golang alpine中遇到 sh: xxx: not found
原因:
由于alpine镜像使用的是musl libc而不是gnu libc,/lib64/ 是不存在的。但他们是兼容的,可以创建个软连接过去试试
处理,创建lib64的软连接
mkdir /lib64
ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2018-2024 Outsrkem
  • 访问人数: | 浏览次数:

      请我喝杯咖啡吧~

      支付宝
      微信