docker容器技术我爱编程

用Alpine制作镜像

2018-04-14  本文已影响25人  A0小何

参考:http://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management


背景

最近在公司制作镜像时,因保密问题,必须在内网完成,操作十分不方便,最开始只能在外网做好基础镜像之后,在通过文件中专站拷贝到内网,如果有问题再重新在外网制作,然后再转回内网,如此反复;另外在这个过程中遇到各种问题,下面列举出来然后各个击破,第一次写博文,不当之处请见谅

  1. 对apline的理解有误
  2. 安装某个工具时,通常会无法运行
  3. 使用系统默认的包安装源通常在内网无法正常工作

Alpine简介

Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox.
上面是官网给Alpine的一个定义,Alpine是一个只有5M大小的基础镜像,非常适合做对资源要求比较严苛的镜像,<a href="https://github.com/gliderlabs/docker-alpine"> Alpine Linux Docker</a>镜像基于<a href="https://alpinelinux.org/">Alpine Linux</a>操作系统,后者是一个面向安全的轻型Linux发行版。不同于通常Linux发行版,Alpine Linux采用了musl libc和busybox以减小系统的体积和运行时资源消耗。在保持瘦身的同时,Alpine Linux还提供了自己的包管理工具apk,可以在其网站上查询,或者直接通过apk命令查询和安装。

Alpine常用命令

alpine包管理举例

# 安装docker包
apk add docker
# 指定安装源
apk add -update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ --allow-untrusted
# 删除docker包
apk del docker
#升级单个包
apk update && apk add --upgrade busybox
# 升级整个系统
apk update && apk upgrade
#列出所有包含通配符abd可用的包,以及它们的描述
apk search -v 'abd'
#列出所有包含通配符abd可用的包,以及它们的描述
apk info -a zlib

搭建alpine私有仓库

Dockerfile举例

FROM alpine:3.5

MAINTAINER XXX XX@sina.com

#解决内网无法正常使用仓库的问题
 RUN echo "https://your_host_ip/alpine/v3.5/main"  /etc/apk/repositories \
    && echo "https://your_host_ip/alpine/v3.5/community" >> /etc/apk/repositories 
    
#更新并升级包列表
RUN apk update 

#升级整个系统的所有包
RUN apk upgrade

#从源安装最小镜像所需的包
RUN apk add docker openjdk8-jre-base


#从本地添加安装包安装包
ADD file.apk /path/to/file.apk
#--allow-untrusted 本地安装文件可以放宽认证
RUN apk add --allow-untrusted /path/to/file.apk
# 安装多个本地包
apk add --allow-untrusted /var/tig-2.2-r0.apk /var/git-2.11.1-20.apk

其他

通常建议搭建最好安装一些常用的包,比如g++, gcc,在制作一个自动部署工具的镜像时,运行环境已经能正常运行,但是始终报错找不到文件,后面发现是少了g++,安装好之后,程序才能正常运行

上一篇 下一篇

猜你喜欢

热点阅读