博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用docker构建简约高效的镜像
阅读量:4576 次
发布时间:2019-06-08

本文共 1055 字,大约阅读时间需要 3 分钟。

背景介绍

最近在思考一个问题,我的golang运行到docker环境上的时候,需要安装很大依赖。思考发现我需要就是一个运行二进制的环境而已并不需要golang的编译器等等其他任何多余的。

当前的docker镜像

创建一个测试目录,主要会包含你的工程文件和一个dockerfile文件

mkdir ~/dockerfileTestcd ~/dockerfileTest

我的hello.go和Dockerfile文件如下

CN-MAC-013:dockerfileTest frank$ cat hello.go package mainimport (    "fmt"    "time")func main() {    for {        time.Sleep(time.Second * 2)        fmt.Println("Hello World")    }}

常规的dockerfile写法

CN-MAC-013:dockerfileTest frank$ cat Dockerfile From golang:latestWORKDIR /app/helloCOPY ./ /app/helloRUN go build hello.goCMD ./hello

运行构建一个镜像

docker build -t hello-general .
查看镜像的大小
docker images
可以看到如下结果:
739685-20190423171018904-1515159299.png

优化版

首先来看dockerfile,hello.go代码不变。

CN-MAC-013:dockerfileTest frank$ cat Dockerfile From golang:latest as build-envWORKDIR /app/helloCOPY ./ /app/helloRUN go build hello.goFROM alpineWORKDIR /app/helloCOPY --from=build-env /app/hello/hello ./CMD ./hello

通过如下方式构建

build -t hello-best .

查看镜像最终结果

739685-20190423170942896-1992262570.png

总结

第二个dockerfile是从17年发布的版本中引入的一种写法,所以很多时候我们需要与时俱进学习新技术。很显然我已经落后来将近两年了,因为今天我才知道这种写法。主要参考如下这篇文章

转载于:https://www.cnblogs.com/landpack/p/10757350.html

你可能感兴趣的文章
AtiveMQ初次连接的 http error:503 连接错误 Prolem accessing /.Reason : Service Unavailable...
查看>>
Lua1.1 Lua 的参考手册 (三)
查看>>
OFO和摩拜共享单车
查看>>
Linux软件安装管理之1——rpm命令管理
查看>>
visual studio 2017 使用笔记
查看>>
iTerm2 半透明颜色主题与字体配置
查看>>
《Entity Framework 6 Recipes》中文翻译系列 (14) -----第三章 查询之查询中设置默认值和存储过程返回多结果集...
查看>>
asp.net后台InputStream存储图片,前台js接收解析存放路径地址
查看>>
双飞翼布局和圣杯布局
查看>>
java并发编程之CountDownLatch与CyclicBarrier
查看>>
AOJ 0525 - Osenbei
查看>>
iOS 直播-闪光灯的使用
查看>>
关于 Failed to establish a new connection: [Errno 11004] getaddrinfo failed',))的问题
查看>>
python数据类型之间的转换
查看>>
[T-ARA][I'm so bad]
查看>>
win7,win10获取屏幕缩放适应截图
查看>>
MySQL常用命令
查看>>
python3实现合并两个有序数组
查看>>
InventTrans中的状态跟踪
查看>>
python flsak 框架
查看>>