docker基于Alpine Linux构建镜像

Alpine Linux,一个只有5M的Docker镜像。是一个面向安全的轻型Linux发行版。不同于通常Linux发行版,Alpine Linux采用了musl libc和busybox以减小系统的体积和运行时资源消耗。在保持瘦身的同时,Alpine Linux还提供了自己的包管理工具apk,可以在其网站上查询,或者直接通过apk命令查询和安装。

普通的ubuntu镜像有100多M,所以想打包更小的镜像,那么Alpine是再适合不过了

下载alpine镜像

# docker pull alpine

Using default tag: latest

Trying to pull repository docker.io/library/alpine ...

latest: Pulling from docker.io/library/alpine

ff3a5c916c92: Pull complete

Digest: sha256:7df6db5aa61ae9480f52f0b3a06a140ab98d427f86d8d5de0bedab9b8df6b1c0

查看本地镜像

# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

docker.io/alpine    latest              3fd9065eaf02        2 days ago          4.143 MB

使用alpine镜像启动一个容器,默认alpine没有bash,所以只能用sh

# docker run -it docker.io/alpine sh
/ #

更新软件

/ # vi /etc/apk/repositories

注释掉默认的,改为阿里云的更新源,内容如下:

#http://dl-cdn.alpinelinux.org/alpine/v3.7/main
#http://dl-cdn.alpinelinux.org/alpine/v3.7/community
#aliyun
https://mirrors.aliyun.com/alpine/v3.6/main/
https://mirrors.aliyun.com/alpine/v3.6/community/

更新软件

/ # apk update

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

v3.6.2-243-g9d95c23115 [https://mirrors.aliyun.com/alpine/v3.6/main/]

v3.6.2-242-g41c32d5e5e [https://mirrors.aliyun.com/alpine/v3.6/community/]

OK: 8448 distinct packages available

安装vim和bash

/ # apk add vim bash

退出当前容器

/ # exit

下面介绍使用Dockerfile来打包镜像,这也是Docker官方推荐的做法

# mkdir -p /docker/images/test
# vim /docker/images/test/Dockerfile

内容如下:

FROM docker.io/alpine

RUN echo "#aliyun" > /etc/apk/repositories
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 bash vim

打包镜像

# docker build -t alpine_test /docker/images/test

查看镜像

# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE

alpine_test        latest              437a826f6d63        5 seconds ago        32.26 MB

docker.io/alpine    latest              3fd9065eaf02        2 days ago           4.143 MB

使用测试镜像启动容器

# docker run -it alpine_test /bin/bash
bash-4.3#

查看vim版本

bash-4.3# vim -version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled May  1 2017 12:47:09)
Garbage after option argument: "-version"
More info with: "vim -h"

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大闲人柴毛毛

Docker入门实战(一)——Docker常用命令

什么是Docker? Docker containers wrap a piece of software in a complete filesystem...

35660
来自专栏A周立SpringCloud

Docker系列教程08-Dockerfile实战

本节通过几个例子,来工具Dockerfile的知识。 实战1:使用Dockerfile修改Nginx首页 创建一个Dockerfile,内容如下: FROM n...

3.2K60
来自专栏软件工程师成长笔记

安装MySQL Workbench,启动不了问题解决

(1)、可以在【百度】相关链接下载“msvcr120.dll”文件(32位操作系统下载或拷贝32位的“msvcr120.dll”;64位操作系统下载或拷贝64位...

58820
来自专栏IT笔记

Docker学习之运行SpringBoot微服务

执行docker build命令,docker就会根据Dockerfile里你定义好的命令进行构建新的镜像。

47210
来自专栏我的博客

Docker部署gitlab

参考:https://github.com/sameersbn/docker-gitlab/blob/master/README.md 安装docker-git...

69440
来自专栏Java修行之道

putty连接ubuntu:network error:connection refused

Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address ...

55320
来自专栏姚俊刚的专栏

Dockerfile 分享之 SSH Server

Docker 官方网站上给出的示例里面有个 用 Dockerfile 构建 SSH Server 的例子, 我在腾讯云的主机上实验了一下, 中间添加了一些优化,...

1.7K00
来自专栏Java后端技术

Docker三十分钟快速入门(上)

​   最近,Docker技术真是一片火热,它的出现也弥补了虚拟机资源消耗过高的问题,直接让虚拟化技术有了质的飞跃。那么本文我们来聊一聊Docker,和大家一起...

12630
来自专栏向上的小草

Docker常用命令记录

-t 选项是让docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上

17000
来自专栏技术专栏

docker 常用命令

docker run --name (容器的名字) -d -p hostPort:containerPort 镜像名

15220

扫码关注云+社区

领取腾讯云代金券