`
JerryWang_SAP
  • 浏览: 953932 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

最简单的Docker镜像教程:从头基于空镜像scratch创建一个新的Docker镜像

阅读更多

我们在使用Dockerfile构建docker镜像时,一种方式是使用官方预先配置好的容器镜像。优点是我们不用从头开始构建,节省了很多工作量,但付出的代价是需要下载很大的镜像包。

比如我机器上docker images返回的这些基于nginx的镜像,每个都超过了100MB,而一个简单的Ubuntu的容器超过了200MB,如果安装了相关的软件,尺寸会更大。

 

如果我们的需求是在构建一个符合我们实际业务需求的Docker镜像的前提下,确保镜像尺寸尽可能的小,应该怎么做呢?

思路是使用空镜像scratch。

新建一个文件夹,用wget下载rootfs.tar.xz压缩包。

wget -O otfs.tar.xz https://github.com/debuerreotype/docker-debian-artifacts/raw/b024a792c752a5c6ccc422152ab0fd7197ae8860/jessie/rootfs.tar.xz

这个将近30MB的压缩包是个什么东东?

解压之后看内容就知道了,包含了操作系统大部分常用命令。

wget -O nginx.conf https://github.diablo.corp/raw/slvi/docker-k8s-training/master/docker/res/nginx.conf

新建一个dockerfile文件,将下列内容粘贴进去:

FROM scratch

# set the environment to honour SAP's proxy servers
ENV http_proxy http://sap.corp:8080
ENV https_proxy http://sap.corp:8080
ENV no_proxy .sap.corp

# give yourself some credit
LABEL maintainer="Jerry Wang"

# add and unpack an archive that contains a Debian root filesystem
ADD rootfs.tar.xz /

# use the apt-get package manager to install nginx and wget
RUN apt-get update && \
apt-get -y install nginx wget

# use wget to download a custom website into the image
RUN wget --no-check-certificate -O /usr/share/nginx/html/cheers.jpg https://github.diablo.corp/raw/slvi/docker-k8s-training/master/docker/res/cheers.jpg && \
wget --no-check-certificate -O /usr/share/nginx/html/index.html https://github.diablo.corp/raw/slvi/docker-k8s-training/master/docker/res/cheers.html

# copy the custom nginx configuration into the image
COPY nginx.conf /etc/nginx/nginx.conf

# link nginx log files to Docker log collection facility
RUN ln -sf /dev/stdout /var/log/nginx/access.log && \
ln -sf /dev/stderr /var/log/nginx/error.log

# expose port 80 - the standard port for webservers
EXPOSE 80

# and make sure that nginx runs when a container is created
CMD ["nginx", "-g", "daemon off;"]

执行命令进行镜像的构建:

docker build -t nginx-from-scratch1.0 .

产生的日志:

最后看到镜像成功构建的消息。

基于这个名为nginx-from-scratch的镜像启动一个新的nginx容器:

 

localhost:1083, 看到首页,说明这个新构建的镜像工作正常。

 

 

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

0
0
分享到:
评论

相关推荐

    docker-apollo:CtripApollo(携程Apollo)的docker镜像

    docker-apollo for (携程Apollo)本镜像包含Portal面板,以及Dev/Fat/Uat/Pro环境服务(All in one),皆可独立使用,支持分布式部署和Kubernetes部署.Docker Tags:latest1.3.01.2.01.1.1 1.1.21.0.00.10.2 0.11.0使用 ...

    openjdk 8 docker 镜像离线安装包

    openjdk 8 docker 镜像 可离线安装,docker load -i openjdk 8 docker 镜像 可离线安装,docker load -i openjdk 8 docker 镜像 可离线安装,docker load -i openjdk 8 docker 镜像 可离线安装,docker load -i

    详解如何使用Docker部署一个web项目并打包成镜像文件

    docker基本入门以后,可以试试打包docker镜像与dockerfile了 docker镜像 docker hub仓库有2类仓库,用户仓库和顶层仓库,用户仓库由docker用户创建的,顶层仓库由docker内部的人来管理的。...1.创建一个

    Spark3.1.2 Docker镜像资源

    步骤一:docker build -t registry/spark:3.1.2 -f kubernetes/dockerfiles/spark/Dockerfile . 步骤二:docker images查看镜像 步骤三:导出镜像 docker save -o spark3.1.2.tar registry/spark:3.1.2

    arm下nginx docker镜像

    arm下nginx docker镜像

    mysql 5.7 docker 镜像 离线安装包

    mysql 5.7 docker 镜像 离线安装包 mysql 5.7 docker 镜像 离线安装包 mysql 5.7 docker 镜像 离线安装包 mysql 5.7 docker 镜像 离线安装包 mysql 5.7 docker 镜像 离线安装包 mysql 5.7 docker 镜像 离线安装包

    kafka 的docker镜像

    kafka的docker镜像包含了kafka,zookeeper 和kafkamanager,可以通过docker 来load 安装

    TongWeb打docker镜像.docx

    这个手册是提供给大家学习TongWeb制作docker镜像!TongWeb打docker镜像.docx,

    构建一个Java应用的Docker镜像

    构建一个Java应用的Docker镜像 假设Java应用名为 docker-demo 1、在项目代码打成jar包:demo-docker.jar # 这里我用mvn来打包 # -Dmaven.test.skip=true --- 跳过检查 mvn package -Dmaven.test.skip=true 2、创建...

    redis离线docker镜像

    docker redis镜像 用于在docker中导入redis的镜像 执行docker load -i redis.tar 即可完成导入操作

    docker镜像-ubuntu16.04.3

    仅44.5M大小的docker ubuntu镜像 完整的apt支持。使用方式:docker load -i ubuntu_16.04.3-image.tar.gz

    详解docker国内镜像拉取和镜像加速registry-mirrors配置修改

    由于国内访问直接访问Docker hub网速比较慢,拉取镜像的时间就会比较长。一般我们会使用镜像加速或者直接从国内的一些平台镜像仓库上拉取。 我比较常用的是网易的镜像中心和daocloud镜像市场。 网易镜像中心:...

    minio使用docker镜像包

    minio使用docker镜像包

    docker镜像etcd-3.4.18

    利用博客(https://blog.csdn.net/qq_34777982/article/details/123924095)...3.查看镜像:docker images | grep etcd 4.利用该镜像创建容器或者推到本地的harbor docker run 或者docker push 希望可以帮助有需要的人

    达梦数据库Docker 镜像安装包

    达梦数据库为用户提供基于 X86 64 位架构的 Docker 镜像,用户可以下载并使用镜像快速部署 DM8,并开展应用适配工作。

    apisix 微服网关 v2.11.3 完整docker镜像包

    apisix v2.11.3 完整docker镜像包, 整合 apisix-dashboard v2.11.0,依赖外部etcd环境, 镜像运行需要 ETCD 配置参数 ETCD_SERVER=http://192.168.82.197:12369,http://192.168.82.184:12369,...

    Elasticsearch Docker镜像

    Elasticsearch Docker镜像方便下载使用

    java8 的docker镜像,支持私网部署

    java8 的docker镜像,支持私网部署

    docker镜像——nginx:alpine

    nginx:alpine离线镜像包,使用docker load -i nginxalpine.tar

    geoserver ARM docker 镜像

    geoserver ARM 平台的 Docker 镜像,Dockerfile 和 docker-compose 地址为: https://github.com/luolingchun/docker-compose/tree/master/geoserver-arm

Global site tag (gtag.js) - Google Analytics