docker 构建最小镜像 - 2MB 不到

ops/2024/12/22 9:04:46/

文章目录

      • 1.编译 code
      • 2.编写 Dockerfile
      • 3.构建镜像
      • 4.运行起来
      • 5.总结

1.编译 code

root@jn:/home/jn/Desktop/Docker# cat hello.go
package mainimport ("fmt""time"
)func main() {for {fmt.Println("hello~")time.Sleep(time.Second)}
}
root@jn:/home/jn/Desktop/Docker# go build hello.go
root@jn:/home/jn/Desktop/Docker# ll -h hello
-rwxrwxr-x 1 jn jn 1.7M Sep   5 02:32 hello*
root@jn:/home/jn/Desktop/Docker#

2.编写 Dockerfile

Dockerfile:

FROM scratch
COPY hello /
CMD ["/hello"]

3.构建镜像

docker build -t hello .

root@jn:/home/jn/Desktop/Docker# docker build -t hello .
[+] Building 0.0s (5/5) FINISHED                                                                                                                                                                           docker:default=> [internal] load build definition from Dockerfile                                                                                                                                                                 0.0s=> => transferring dockerfile: 79B                                                                                                                                                                                  0.0s=> [internal] load .dockerignore                                                                                                                                                                                    0.0s=> => transferring context: 2B                                                                                                                                                                                      0.0s=> [internal] load build context                                                                                                                                                                                    0.0s=> => transferring context: 1.76MB                                                                                                                                                                                  0.0s=> CACHED [1/1] COPY hello /                                                                                                                                                                                        0.0s=> exporting to image                                                                                                                                                                                               0.0s=> => exporting layers                                                                                                                                                                                              0.0s=> => writing image sha256:4182d38fc8c5abca0a807ff9b39864a960c97b4a9e03363d79f8461e81e190d4                                                                                                                         0.0s=> => naming to docker.io/library/hello                                                                                                                                                                             0.0s
root@jn:/home/jn/Desktop/Docker#

结果:

root@jn:/home/jn/Desktop/Docker# docker images
REPOSITORY              TAG       IMAGE ID       CREATED         SIZE
hello                   latest    4182d38fc8c5   5 minutes ago   1.76MB
root@jn:/home/jn/Desktop/Docker#

4.运行起来

root@jn:/home/jn/Desktop/Docker# docker run hello
hello~
hello~
hello~
hello~
hello~

5.总结

(镜像总共1.76MB,程序占1.7MB)

root@jn:/home/jn/Desktop/Docker# ll -h hello
-rwxrwxr-x 1 jn jn 1.7M Sep   5 02:32 hello*
root@jn:/home/jn/Desktop/Docker#
root@jn:/home/jn/Desktop/Docker# docker images
REPOSITORY              TAG       IMAGE ID       CREATED         SIZE
hello                   latest    4182d38fc8c5   9 minutes ago   1.76MB
root@jn:/home/jn/Desktop/Docker#

http://www.ppmy.cn/ops/108945.html

相关文章

K8s中如何使用etcd进行集群信息的备份与恢复

这里写目录标题 ETCD是什么?1. **`etcd`(服务)**2. **`etcdctl`(客户端工具)**如何安装etcdctl(客户端工具)查看目前K8s自带etcd中的版本信息安装对应版本的etcdutl工具下载 `etcdutl` 3.5.7 版本配置环境变量创建备份文件验证一下备份的快照文件备份文件恢复的效果演示…

一些可能很有用的矩阵知识

一些可有可无的矩阵知识 酉矩阵 酉矩阵 一个服从正态分布的向量乘以一个酉矩阵,得到的向量仍然服从正态分布 酉矩阵是一个复数矩阵,满足其转置的共轭等于其逆矩阵。当一个向量通过一个酉矩阵进行线性变换时,它的模长保持不变,只是…

uniapp微信小程序开发踩坑日记:Pinia持久化报错Cannot read property ‘localStorage‘ of undefined

插件默认使用 localStorage 实现持久化,小程序端不兼容,需要替换持久化 API import { defineStore } from pinia export const useCommonStore defineStore(pack-store, {state: (): State > ({wwInfo: {},globalData: {},timerLock: false, //是…

TCP通信三次握手、四次挥手

前言 前面我说到了,UDP通信的实现,但我们经常说UDP通信不可靠,是因为他只会接收和发送,并不会去验证对方收到没有,那么我们说TCP通信可靠,就是因为他会进行验证接收端是否能够接收和发送,并且只…

【Kubernetes知识点问答题】监控与升级 / ETCD 备份与恢复

目录 1. 举例说明 K8s 中都有哪些常规的维护管理操作。 2. 如何升级 K8s 到新的版本?在升级过程中应该注意哪些事项? 3. 解释 ETCD 及其备份和恢复的过程。 1. 举例说明 K8s 中都有哪些常规的维护管理操作。 常见的维护管理操作有: ① 查看…

Vue(7)——工程化开发

目录 工程化开发 组件化开发 普通组件的注册使用 局部注册 全局注册 组件三大组成部分说明 template style script 组件通信 父子关系 prpo prpos校验 类型校验 其他校验 prop与data、单向数据流 工程化开发 工程化开发模式:基于构建工具的环境…

RocketMQ异步报错:No route info of this topic

在SpringBoot中发送RocketMQ异步消息的时候报错了,提示org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, testTopic1 这里给出具体的解决方案 一、Broker模块不支持自动创建topic,并且topic没有被手动创建过 R…

mysql5.6根据经纬度查询距离二

在MySQL 5.6中,您可以使用Haversine公式来根据经纬度查询距离。以下是一个示例SQL查询,它计算出所有点与给定点(经度lon和纬度lat)的距离,并按距离排序: SELECT id, (2 * 6378.137 * ASIN(SQRT(POW( SIN( PI( ) * ( $lng- long ) …