Docker | 构建镜像

Docker(二)镜像详解、镜像构建、镜像优化 共享宿主机的kernelbase镜像提供的是最小的Linux发行版同一docker主机支持运行多种Linux发行版采用分层结构的最大好处是:共享资源镜像通过分层,如果本地已经有了,不管这一层属于哪个镜像,因为每一层都有独立的标识(都是唯一的),只要docker判断有这一层,那它就不会进行重复的拉取。包括在上传仓库的时候也是一样的,仓库内存储时也是按照层来存储的,如果远程仓库有这一层了,就不需要重复上传了,节省了带宽。 阅读详情

Docker | 构建镜像

1. 修改已有镜像

在ubuntu:22.04中添加Git

docker run -it --name example ubuntu:22.04 bash

## example容器内下面命令安装git
apt-get update
apt-get install git

# 构建新镜像
docker container commit example ubuntu-git:22.04

2. Dockerfile构建

在ubuntu:22.04中添加Git

Dockerfile

FROM ubuntu:22.04

RUN apt-get update
RUN apt-get install git -y

ENTRYPOINT bash
# 构建镜像
docker build -t ubuntu-git:22.04 -f Dockerfile .

3. Dockerfile多段构建

编译Go server

3.1. 文件树

hello-go
├── Dockerfile
├── go.mod
└── main.go

Dockerfile

# 编译源码
FROM golang:1.16 as builder

# 项目文件夹名
ARG project=hello-go

WORKDIR /go
RUN mkdir $project
COPY * $project/
WORKDIR $project
# 配置镜像源
RUN go env -w GOPROXY=https://goproxy.cn
# 接取依赖
RUN go mod vendor
# 编译程序
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -v -o /go/main

# 打包镜像
FROM alpine:3.15 as runtime
COPY --from=builder /go/main /main
RUN chmod +x /main
WORKDIR /
ENTRYPOINT ./main

main.go

package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	r := gin.Default()
	r.GET("/", func(c *gin.Context) {
		c.String(http.StatusOK, "Hello World")
	})
	r.Run() // 监听并在 0.0.0.0:8080 上启动服务
}

go.mod

module hello-go

go 1.17

require github.com/gin-gonic/gin v1.7.7

require (
	github.com/gin-contrib/sse v0.1.0 // indirect
	github.com/go-playground/locales v0.13.0 // indirect
	github.com/go-playground/universal-translator v0.17.0 // indirect
	github.com/go-playground/validator/v10 v10.4.1 // indirect
	github.com/golang/protobuf v1.3.3 // indirect
	github.com/json-iterator/go v1.1.9 // indirect
	github.com/leodido/go-urn v1.2.0 // indirect
	github.com/mattn/go-isatty v0.0.12 // indirect
	github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect
	github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 // indirect
	github.com/ugorji/go/codec v1.1.7 // indirect
	golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 // indirect
	golang.org/x/sys v0.0.0-20200116001909-b77594299b42 // indirect
	gopkg.in/yaml.v2 v2.2.8 // indirect
)

3.2. 构建与测试

构建镜像

# hello-go文件夹内执行
docker build -t http-server:1.0 -f Dockerfile .

启动测试

docker run -it --rm http-server:1.0
构建自己的docker基础镜像 构建一个完全定制的基础镜像意味着您需要从一个非常小的镜像(例如scratch镜像)开始,然后逐步添加您需要的所有内容。scratch镜像是一个空白的基础镜像,可以用来创建高度定制的容器环境。 阅读详情

相关推荐

手动构建自己的docker容器镜像实战

手动构建属于自己的镜像

低调,谦虚,自律,反思,成长,保持热爱,奔赴梦想 4770

docker入门教程

docker是在13年的样子发布的,我个人第一次听说是在18年,但是去年年底才开始接触,用了一段时间,深得我心,所以题目用得比较过哈哈,遂决定写两篇介绍,不过个人也就用了几个月,经验还是很不足的,如有错误还请指正。 其实网上docker的解说不少,但是很多人使用docker的需求不同,最后写出来的实际应用也就不一样。所以在比较general一点的介绍之后我会根据自己的实际应用举类似专业可能用得到的例子。 文章目录1、docker能做什么?2、会讲到的几个例子3、docker基本概念4、docker里的Ubu

后厂村路蔡徐坤的博客 2531

Win11任务栏图标消失?快速恢复指南

任务栏图标消失是Windows 11操作系统中常见的问题之一,但通过上述方法,用户通常可以轻松解决这一问题。无论是重启Windows资源管理器、使用命令提示符修复、检查系统更新和设置,还是考虑重装系统,都可以帮助用户恢复任务栏图标的正常显示。希望本文的介绍能对用户有所帮助,让Windows 11的使用更加顺畅和愉快。

mmoo_python的博客 5409

docker入门

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

小白目的博客 911

OpenLayers源码解析1 Map.js

Map.js 父类:./PluggableMap/PluggableMap 引用:5个模块 ./renderer/Composite.js ./PluggableMap.js ./obj.js ./control.js(控件) ./interaction.js(交互) 主要功能:核心组件,渲染地图 必要参数: view layers target controls和interactions要是未指定,使用默认值 方法:createRenderer()? /** * @module ol/Map */ i

qq_45005996的博客 1898

Centos7.9上安装glibc2.28遇到/usr/bin/ld: cannot find -lnss_test2问题

Centos7.9安装glic2.28遇到-lnss_test2问题及解决方案。

freflying1119的博客 2898

【笔记】构建docker镜像

Dockerfile是一个纯文本文件,里面记录了一系列构建命令,每个指令都会生成一个Layer,Docker顺序执行这个文件里的步骤最终就会创建出一个新的镜像。

onlysanshao的博客 197

智元机器人开源具身仿真框架 Genie Sim 入门教程

GenieSim是AgiBot推出的具身智能仿真框架,提供完整闭环开发管道,包括轨迹生成、模型训练和基准测试。框架支持Docker容器化部署,要求Ubuntu 22.04和NVIDIA硬件环境。主要功能涵盖: 支持12种基准测试任务 提供ADER评估框架 集成UniVLA/RDT等基线模型 支持PICO/键盘遥操作 具备轨迹记录回放功能 提供完整API控制接口 开发者可通过Hugging Face获取场景资产,使用标准化ROS主题与仿真环境交互。框架特别优化了碰撞检测和抓取物理模拟,适用于从简单抓取到复杂操

2506_90492529的博客 2537

FROM ubuntu:22.04 ENV DEBIAN_FRONTEND noninteractive RUN apt-get update &&\ apt-get install -y...

这是一个 Dockerfile 的一部分。 FROM ubuntu:22.04 表示使用 Ubuntu 22.04 版本作为 Docker 镜像的基础。 ENV DEBIAN_FRONTEND noninteractive 设置了一个环境变量 DEBIAN_FRONTEND 的值为 noninteractive,这将会在安装软件包时禁用交互式命令行界面。 RUN apt-get update 执行...

weixin_35756892的博客 620

C#跨平台制图新纪元:Mapsui,一库在手,地图我有

深入学习Mapsui的渲染机制,定制属于你的地图样式,无论是颜色、图标还是文字,都可以随心所欲。

java专栏 1455

如何创建 SAP ABAP CDS View 的 Association

所以本文我们虽然学习了如何创建 SAP CDS View 的 association,知道了 association 是用来在 CDS View 里将两张数据库表关联起来,但根本不知道怎么使用这个 association. 而且从 association 的写法来看,似乎和本教程之前介绍 inner join,left join 这些数据库表的连接操作没什么区别,都是根据两张表的 carrid 和 connid 字段相同进行的连接。只看到了我们在 CDS View 源代码实现里,放出来的四个字段。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 902

Docker-构建Ubuntu镜像篇

Dockerfile 是用来定义 Docker 镜像构建过程的文本文件。它包含了一系列的指令和参数,用来告诉 Docker 如何组装一个镜像。# 固化数据(-v将本地目录映射到docker内)直接拷贝文件系统方式(前提条件切到root权限)# 后面必须带bash(退出数据会丢失)方式一:(不太直观具体tag是多少)# 拷贝系统文件到docker镜像中。# 直接排除不想打包的目录就行。# 查看运行的docker。根据所需版本复制即可。

w_melody的博客 5464

CAN轴控制流【6041,6040】

【代码】CAN轴控制流【6041,6040】

cfqq1989的博客 1782

Docker构建镜像方法

通过本教程,你学会了如何通过Dockerfile构建自己的 Docker 镜像,并且学会了如何运行和管理容器。Docker 的强大之处在于它能够将环境和应用程序封装在一个镜像中,实现高度可移植性。

专注于Python编程技术的分享与交流,致力于帮助开发者提升编程技能,解决实际问题,探索Python的无限可能。 2856

Python从0到100(十九):Python标准库初探

哈希函数又称哈希算法或散列函数,是一种为已有的数据创建“数字指纹”(哈希摘要)的方法。哈希函数把数据压缩成摘要,对于相同的输入,哈希函数可以生成相同的摘要(数字指纹),需要注意的是这个过程并不可逆(不能通过摘要计算出输入的内容)。举一个简单的例子,用户注册时我们希望在数据库中保存用户的密码,很显然我们不能将用户密码直接保存在数据库中,这样可能会导致用户隐私的泄露,所以在数据库中保存用户密码时,通常都会将密码的“指纹”保存起来,用户登录时通过哈希函数计算密码的“指纹”再进行匹配来判断用户登录是否成功。

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 5002

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Docker 构建镜像(docker build)

版权所有,未经许可,禁止转载 章节Docker 介绍 Docker 和虚拟机的区别 Docker 安装 Docker Hub Docker 镜像(image) Docker 容器(container) Docker 容器操作 Docker 容器shell Docker Dockerfile Docker 构建镜像(docker build) Docker Dockerfile指令 Docker ...

吴吃辣 7万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Docker 镜像的构建

Dockerfile 参数详解

qq_46457076的博客 2879

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

docker构建镜像

Dockerfile就是用来构建docker镜像的构建文件,是一个命令脚本 通过这个脚本可以生成镜像,镜像是一层一层的,脚本一个命令就是一层,也就是说,一个命令就是一层 这个脚本文件名是自定义的,不过,一般都是dockerfile比较好一点, dockerfile文件里面的内容,所有的指令都是大写 FROM centos VOLUME ["volume01","volume02"] CMD echo "---end---" CMD /bin/bash 启动了刚刚打包的镜像后,出现了这两个目录,这个就是我在

小信的博客 3528

Docker构建自己的镜像及镜像仓库

Docker基础请参考上篇博文:总结 Docker学习(使用centos7-1804) 1. Docker构建镜像 有时候从Docker镜像仓库中下载的镜像不能满足要求,我们可以基于一个基础镜像构建一个自己的镜像两种方式: 更新镜像:使用 docker commit 命令 构建镜像:使用 docker build 命令,需要创建Dockerfile文件 1.1 更新镜像 先使用基础镜像创建一个...

qqxhb 资源共享 2477

Docker,镜像构建原因

在 CentOS 7 容器中安装httpd,并提交为新镜像启动容器并进入交互式 shell这会创建一个名为的容器,并进入它的 bash 环境。在容器内安装 httpd配置启动服务注意:容器中通常不推荐使用systemctl来启动服务。PID 1 问题:Docker 容器的设计初衷是运行单个进程。当你尝试在容器内运行 Systemd 或其他初始化系统作为 PID 1(即主进程),可能会遇到一些问题,包括无法正确处理信号和僵尸进程的管理。

yyz13862243的博客 911

如何构建自己的Docker镜像?

Docker镜像是由一系列只读层叠加而成的,这些层表示了Dockerfile中的每条指令。构建自己的Docker镜像主要涉及编写Dockerfile文件、使用命令进行构建,以及可选地将镜像推送到Docker镜像仓库。下面将详细阐述构建Docker镜像的整个过程。

weixin_47772925的博客 2141

Docker镜像构建

本文详细介绍了Docker镜像构建的全过程。Docker镜像是容器化应用的基础单元,采用分层文件系统设计实现高效存储和传输。

2401_84284464的博客 960

Docker镜像构建实战

docker只是容器的一种方式,但是Dockerfile的出现颠覆了云原生的状态。但是Dockerfile制作镜像的过程本质上与没有区别,因为使用Dockerfile制作镜像的过程中也会执行命令,区别就在于Dockerfile是自动化去构建镜像。相当于一个自动化制作镜像的脚本或框架它提供了极其方便并且可编程的方式去制作镜像。镜像制作过程自动化:利于迭代。

tan3690的博客 3192

docker commit构建镜像的优缺点_Docker 构建镜像

文章首发于微信公众号《程序员果果》 地址:https://mp.weixin.qq.com/s/foVeANf0imgU4hfOempp3A构建Docker镜像有以下两种方法:使用docker commit命令,从容器创建一个新的镜像。使用docker build命令和 Dockerfile 文件。一、通过commit命令创建镜像语法docker commit 容器ID:tagOPTIONS说明...

weixin_42513928的博客 2422

docker镜像构建、镜像打tag、镜像推送

docker镜像构建、镜像打tag、镜像推送 镜像构建:将本地镜像打包 docker buile -t isoName:tag -f /Dockerfile isoName:镜像名称 tag :版本号 Dockerfile:dockerfile文件 镜像打tag:镜像添加版本号 docker tag [ImageId] registry.cn-...

future-wy 9991
上一篇: Docker | 镜像分发
下一篇: C | 学习笔记
yimtcode
博客等级 码龄6年 205粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yimtcode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值