知识点-初识Docker&DockerFile知识点各种整理

听说你还不会分阶段构建 Docker 镜像? 用 Go 语言开发的程序打包后就一个可执行的二进制文件,一般情况下是不需要什么环境依赖就能执行运行跑起来,如果拿到 Docker 里面跑,是非常有优势的。 现在都 2021 年了,啥都喜欢搞微服务、分布式概念,今天咱们迈出第一步,先把自己的 Go 程序打包成镜像后期再更怎么上传到阿里云的私有仓库里面。 这里我们将会使用到分阶段构建镜像,来减小我们最后输出的镜像大小。 编写程序 这里我就快速用 Gin 写一个服务: 这里我们会用到 go mod,使用它来安装 Gin 依赖,命令如下: ... 阅读详情

前言

上周事情比较多,逃了一次更,很是遗憾。不过虽然没更新文章,但是还是思考了下后续如何来记录以及分享知识。

其实在很多时候会遇到并解决一些小问题,这些小问题单拿出来写一篇文章可能并不是很合适。但这却是日常解决问题以及知识学习的常态,如果直接放弃掉却又很可惜。

再加上很多时候很忙的话,写一篇长文加上画画图可能需要几个小时的时间,这个时间是很难保证的。

所以针对上面的情况,我决定后续的记录以及分享通过简单的知识点以及系统的文章两种方式来推进。

知识点针对的是散碎的知识的总结,适合利用零散的时间来进行知识点的查缺补漏;文章针对的是系统的内容的梳理,适合利用相对整块的时间来进行系统的知识编排。

后续大家如果有什么好的想法和意见欢迎留言,我会根据实际情况做对应的调整。最后喜欢的朋友麻烦关注支持一波,谢谢大家。

正文

下面就开始正文的讲解,今天主要是来聊聊docker相关的东西。至于为什么要讲docker,是因为现阶段的K8S使用或者编排的容器都是docker容器,使用的镜像都是docker镜像。

作为K8S的上游,要形成完整的技术闭环,docker是绕不开的技术。而掌握了docker的知识后,对于了解和掌握K8S同样有很大的帮助。

基于此,今天来简单科普下docker相关的知识点,本文先通过docker的生命周期以及流程的梳理,加上dockerfile相关的知识点讲解,先帮助大家构建下docker的基础印象。

docker是什么

这个不多说了,直接引用网上的一个比较形象的说法:

Docker是基于Go语言实现的云开源项目。 Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。

docker生命周期

上面的图就是docker相关的组件以及生命周期。可以通过一个形象的例子来构建对应关系帮助大家理解。

  • 工厂通过商品的配方(dockerfile)来生产(build)各种不同的商品(docker image)

  • 商品通过贴牌(tag)可以做成不同品牌的商品

  • 商品生产之后运输(push)到仓库(docker registry)中存储

  • 用户要买一件商品时,先从仓库中把商品提取(pull)出来

  • 用户拿到商品后,先通过使用说明书(docketfile)把商品整理好并使用起来(run)

  • 用户可以通过商品的特征来各种使用商品:煎炒烹炸,大卸八块甚至供奉起来都可以(start,stop,restart等操作)

  • 用户也可以将商品按照自己的需求和想法进行改造和加工(比如将矿石做成战斗机),做成一种新的商品放到仓库里供其他人再次购买使用(commit)。

是不是很好理解,和生活中的逻辑一致?其实优秀的技术除了解决问题能力外,易理解性亦是一个很重要的特性,会直接影响到该技术的受众以及发展前景。

docker核心流程

上面说了docker的生命周期,下面再来说说docker的核心流程:即产品的生产(bulid)以及使用(run)。

而这两个阶段都是通过dockerfile来决定的。所以说dockerfile是docker生命周期的开始,也是docker生命周期中最重要的部分。他决定了docker将来会被做成什么样子的东西(配方)以及该如何使用(使用说明书)。

下面就来看看dockerfile的构成以及详解:

dockerfile详解

首先先来看看dockerfile的命令都有哪些以及它们都运行在哪个阶段:

命令运行阶段描述
FROMBUILD镜像的妈妈(bulid阶段的基础环境)
RUNBUILD生成镜像需要干什么(build阶段执行的命令)
COPYBUILD生成镜像需要的原始材料(build阶段从宿主机拿原始资源到镜像中)
ADDBUILD生成镜像需要的半成品(与COPY唯一不同的是会对部分文件做处理,如解压压缩包)
CMDRUN运行容器时都干了什么(run阶段执行的命令)
EXPOSERUN运行容器时开的一扇门供其他人来串门(运行时对外暴露的端口)
MAINTAINERBUILD镜像的爸爸(镜像的维护者)
ENVRUN运行容器时提供一些公用的东西给容器内部所有使用者使用(运行时环境变量)
WORKDIRBOTHbulid以及run阶段大家工作的场所(CMD以及RUN执行的工作目录)
USERBOTHbulid以及run阶段的任务执行人(CMD以及RUN执行的user)
VOLUMERUN运行阶段容器为了持久化存储以正常的文件或者目录的形式挂载于宿主机上(持久化存储,容器挂了数据还在,用户存储有状态的数据)
ENTRYPOINTRUN用来指定一个容器启动时要运行的命令(容器的初始化命令)

然后再来看看docker执行dockerfile的大致流程:

  1. docker从基础镜像运行一个容器

  2. 执行一条指令并对容器作出修改

  3. 执行run的操作提交一个新的镜像层

  4. docker再基于刚提交的镜像运行一个新容器

  5. 执行dockerfile中的下一条指令直到所有指令都执行完成

所以有人将docker比喻成洋葱,需要一层一层的剥开其实是很恰当和形象的。

最后挂一个dockerfile的样例供大家参考:

FROM node:7-alpine

ENV PROJECT_DIR=/app

WORKDIR $PROJECT_DIR

COPY package.json $PROJECT_DIR 
RUN npm install 
COPY . $PROJECT_DIR

ENV MEDIA_DIR=/media \ 
  NODE_ENV=production \
  APP_PORT=3000

VOLUME $MEDIA_DIR 
EXPOSE $APP_PORT

ENTRYPOINT ["./entrypoint.sh"] 
CMD ["start"] 

这是一段相对完整的dockerfile代码,几乎涵盖了上面所有的命令。可以供大家理解这些命令的含义以及这些命令的使用方法。

但是dockerfile写的质量直接决定了docker image的质量以及docker运行的效率,所以dockerfile的编写规范以及优化策略还是很关键的,这个后续找机会单独讲解下,大家也可以考虑下有哪些需要注意的地方。本文作为知识点讲解就暂且收尾了。

文章到这里就结束了,如果想一起入门学习K8S的小伙伴,欢迎点赞转发加关注,下次学习不迷路!

挂个公众号二维码,公众号的文章是最新的,优快云的会有些滞后,想追更的朋友欢迎大家关注公众号,谢谢大家支持。 

公众号地址:

Docker实战-编写Dockerfile 一、编译镜像1. 编译镜像    Dockerfile类似于Makfile,用户使用docker build就可以编译镜像,使用该命令可以设置编译镜像时使用的CPU数量、内存大小、文件路径等 语法:docker build [OPTIONS] PATH| URL| - 常见选项:           -t 设置镜像的名称和TAG,格式为name:tag           - 阅读详情

相关推荐

深度学习优化算法解析(Momentum, RMSProp, Adam)

之前看了很多人介绍网络的优化器optimizer,无奈很多都把简单的东西讲的复杂化了,不容易让人懂,恰好之前看过吴恩达老师的最新的课程,这里结合老师讲的和个人想法写一下,方便别人同时也为自己以后回顾吧。 深度学习的优化算法主要有GD,SGD,Momentum,RMSProp和Adam算法吧,还有诸如Adagrad算法,不过大同小异,理解了前面几个,后面的也就引刃而解了。GD算法,SGD算法以及m

willduan的博客 12万+

Dockerfile概念简介

我回来了dockerfile构建镜像前要创建一个工作目录,docker build会扫描当前目录下所有文件优化四种方式——》基于docker镜像分层的原理来的① 每一条RUN 指令 都会生成一层新的镜像层② 每一层镜像缓存会继承到下一层中 ——》直接影响到镜像的大小。...

qq1356059950的博客 2万+

(Linux)DHCP 超级作用域和中继代理(超难受做了超久)

DHCP服务器在192.168.159.0 可以实现分配IP的功能,现在要跨网段分配IP 就需要用到DHCP中继代理。中继代理有两张网卡分别eth0:IP 192.168.159.2 ;eth1: IP:192.168.200.2 。现在要实现192.168.200.0网段的客户机可以获取DHCP服务器的IP。中继代理其实是相当于一个路由器的作用 DHCP服务器的IP地址 :192.168.159...

DJ_joker的博客 2223

【云原生】Docker—Dockerfile写法与用法以及dockerfile简介与构建镜像详解【附加实战】

 🥳我们可以用dockerfile自定义写需要的操作,来用dockerfile的指令来实现,最终采用docker build来构建镜像,构建完镜像可以采用docker save 命令打成tar包,以便于日后在其他服务器上使用,也可以采用docker push提交到私有镜像仓库或dockerhub中。...

liu_chen_yang的博客 7515

从轴承润滑到代码实现:手把手教你用Python FDM求解稳态雷诺方程

本文详细介绍了如何用Python FDM(有限差分法)求解稳态雷诺方程,从轴承润滑理论到代码实现的全过程。通过构建无量纲方程、有限差分格式和迭代求解算法,开发者可以快速实现专业级润滑分析,应用于涡轮发电机、汽车曲轴等场景。文章还提供了完整的Python代码示例和结果可视化方法,帮助工程师优化轴承设计。

weixin_28689507的博客 118

【HCIE】FRR+BFD+OSPF与BGP联动

FRR+BFD+OSPF与BGP联动

Wenrs的博客 1995

DockerFile 的基础讲解

讲解Dockerfile的基础知识,通过几个小案例详细讲解。

记录一位C++爱好者的笔记 1865

企业微信获取code,URL详解

“https://open.weixin.qq.com/connect/oauth2/authorize?”+ “appid=”企业ID “&redirect_uri=”重定向路径+ “&agentid=”小程序AgentId+ “&response_type=code&scope=snsapi_userinfo&state=123&conn...

weixin_44804985的博客 8732

系统学习Docker——DockerFile解析

我们想自定义一个Docker镜像,基于Centos7镜像具备vim+ifconfig+jdk8,按照我们以前的学习的步骤,我们需要先下载镜像,然后运行容器,再以进入容器进行vim+ifconfig+jdk8的安装,再把这个容器打包成新的镜像,这样操作非常繁琐,我们有没有更简单的方式来操作这一系列的步骤呢?此时就引出了我们的DockerFile。

qq_24442273的博客 1646

Cadence画PCB的傻瓜式教程

1.原理图1)建立元件库2)建立原理图3)在原理图中画好电路图4)利用MENTOR-GRAPHICS-IPC-7351-LP-VIEWER查看元件的封装信息,用pad designer画焊盘,用pcb editor画元件的封装(对照LP_VIEWER),(也可以使用package wizard)5)在原理图中为元件添加封装信息(键入)6)Drc检查7)生成网表2.Pcb1)设置...

tianpu2320959696的博客 1万+

【异常】Claude Code 400错误(Extra inputs are not permitted)解决方案

摘要:Claude Code 2.0.37+版本因API请求包含未支持的custom.input_examples参数导致400错误,使核心功能失效。解决方案是降级至稳定版v2.0.32:先卸载当前版本(npm uninstall -g @anthropic-ai/claude-code),再安装指定版本(npm install -g @anthropic-ai/claude-code@2.0.32),最后验证请求是否恢复正常。该问题确认在v2.0.32版本不存在。(148字)

奶爸的编程之路,也就一周冷个三天 2036

DockerFile简单使用

这里是dockerfile的小结,还有整个的一个基础docker的总结在这里:https://blog.youkuaiyun.com/hello_list/article/details/124221409,如果看到这篇一定要链接看看,有惊喜哦! 构建镜像的脚本文件; 我们发现我们从dockerhub仓库拉取的镜像都是最基础的,在使用中很不方便,我们需要一些功能,但是并没有,比如我们开启好几个centos想要ping一下网络,也是没有,这样就很不方便,那这里我们就可以自己构建镜像,添加具

hello_list的博客 8788

ABAP Module Pool 编程入门:把 Table Control 用透,在 Dynpro 里做出可编辑的列表界面

摘要:Table Control是SAP GUI中用于对话式事务的多行数据交互控件,具备滚动、选择、修改等功能。它通过CXTAB_CONTROL/CXTAB_COLUMN结构实现动态控制,需在PBO/PAI中配合LOOP循环处理数据流。开发时需注意LINES、TOP_LINE等关键字段设置,并采用并行循环简化编码。典型应用包括订单行维护、主数据管理等场景,支持多选删除、列排序等业务需求。(150字)

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

dockerfile详解

前言 各位想必应该记得,我们此前如果安装一个nginx的话,安装完以后,我们说过很多次了,通常不会运行在默认配置下,那因此,我们通常需要去改一改它的配置文件或者定义模块化配置文件,然后启动服务。那为什么,nginx的默认配置不符合我们的需要呢?很显然,不同的生产场景所需要用到的配置参数各个相同,因此,对方只能用一个默认的,认为适用于大多数普遍场景情形的或者适用于较小主机资源情况下的那么一个设定来...

紫色飞猪 4万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Dockerfile 详解

使用Dockerfile构建镜像

2301_76154806的博客 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Docker镜像及Dockerfile详解

sshd为secure shell 的简称,可以通过网络在主机中开机shell的服务。本章节以各种镜像制作为案例展示通过dockerfile制作容器镜像的过程。centos:7的镜像发现无法使用sshd服务,需要手工添加sshd服务。将容器里面运行的程序及运行环境打包生成新的镜像。a.通过导入操作系统模板文件生成新的镜像。b.使用wget命令导入为本地镜像。c.导入成功后可查看本地镜像信息。2)编辑镜像dockerfile。5)镜像容器启动运行。

sre救赎之路 1694

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Docker(五)DockerFile详解

Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本,通过Dockerfile的实战案例了解dockefile的操作~

码云说的博客 2651

【Docker-k8s学习和实战】(四)Docker生命周期 && 利用docker实现在CentOS上再运行三种不同的操作系统

这一节我们要学习的内容主要有两个: 1、docker的生命周期; 2、利用docker实现在CentOS上再运行三种不同的操作系统;即基于一个linux宿主机本体,运行出不同的操作系统(如centos、ubuntu、suse等);什么是生命周期?所谓生命周期,就是从诞生,到使用,到销毁的一整个完整的过程。我们来看一下docker使用过程中的生命周期,我们只要把下面这张docker的生命周期图整明白了,那么docker我们也就明白的差不多了;docker整个的生命周期图如下:下面详细解释一下各个过程:1 Do

AnChenliang_1002的博客 979

Dockerfile镜像构建

在本章中,主要学习如何构建Docker镜像,其实在Docker公共仓库中已经有大量的镜像,但是并不一定满足我们对镜像的需求,所以我们需要学习如何的构建自己所需要的镜像

馆主的博客 1065

Docker以及dockerfile

最近在公司用docker部署服务器,所以专门补了一下docker的知识,下面是详细总结 一、Docker以及dockerfile的使用说明 1.Docker介绍 1.1什么是Docker Docker是基于Go语言实现的云开源项目。Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,即通过对应用组件的封装(Packageing)、分发(Distribution)、部署(Depoloment)、运行(Runtime)等生命周期的管理,达到应用组件级别的“一.

qq_44942083的博客 2243

Dockerfile详解超全

Dockerfile详解环境介绍指令介绍FROMMAINTAINERLABELADDCOPYEXPOSEENV在Dockerfile中使用变量的方式RUNCMDRUN&amp;&amp;CMDENTRYPOINTVOLUMEUSERWORKDIRARGONBUILDSTOPSIGNALHEALTHCHECK 环境介绍 1.Dockerfile中所用的所有文件一定要和Dockerfile文件在同一级...

Atlan_blog 8万+

Dockerfile【超级详细】

Docker Hub 中 99% 镜像都是从这个基础镜像过来的 FROM scratch,然后配置需要的软件和配置来进行构建的。2、编写dockerfile文件 官方命名 Dockerfile ,build会自动寻找这个文件 就不需要 -f 指定了。CMD #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代。ENTRYPOINT #指定这个容器启动的时候要运行的命令,可以追加命令。在/home/tomcat/test 下构建两个文件。

danke的博客 2万+

docker file详细介绍

docker file 一、 docker file介绍 dockerfile就是用来构建docker镜像的构建文件,命令参数脚本。 构建步骤: 1、编写一个dockerfile 文件 2、docker build构建成为一个镜像 3、docker run 运行镜像 4、docker pusH 发布镜像(Docker Hub 、阿里云镜像仓库) 查看一下官方是怎么做的 加图 加图 很多官方镜像都是基础包,很多功能没有,我们通常会自己搭建自己的镜像 官方既然可以制作镜像,那我们也可以 二、Dockerfile

clover661的博客 2万+

Docker入门系列——DockerFile的使用

通过遵循编写 Dockerfile 的最佳实践,您可以显著提高容器的性能、安全性和管理性。记住,优化是一个持续的过程,总有改进的空间。文件允许您排除构建上下文中的文件和目录,减少发送到 Docker 守护进程的数据量,并保护敏感信息。基础镜像是您的 Docker 镜像的基础。等工具可以自动分析和优化您的 Docker 镜像,通过移除不必要的组件和减小大小而不改变功能。指令的顺序影响缓存效率。多阶段构建允许您使用中间镜像,并将仅必要的构件复制到最终镜像中。:使用基础镜像和包的特定版本以确保构建的可重现性。

zmh_fuhuasishui的专栏 2925

Dockerfile文件详解

Docker可以从Dockerfile中读取指令并自动构建镜像。Dockerfile是一个文本文档,其中包含用户可以在命令行上调用的进行镜像装配的所有命令。使用docker build,用户可以创建一个连续执行多个命令行指令的自动构建。 用法 docker build 命令从 Dockerfile 和一个 构建上下文(build context) 中构建docker镜像。构建上下文(build ...

Bossen的学习历程 1万+

docker详细介绍

Docker 是基于操作系统级别的虚拟化技术(LXC/LXD),通过共享宿主机内核实现轻量级隔离。每个容器包含应用程序及其依赖项,但不包含完整的操作系统内核。这种设计使得容器比传统虚拟机(VM)更加高效:启动速度:秒级启动 vs 分钟级启动(VM)。资源占用:MB 级内存 vs GB 级内存(VM)。性能损耗:接近原生性能 vs 虚拟化开销。

jin1476814059的博客 2876
上一篇: Kafka的安全性、幂等性以及有序性,这些面试常客你都掌握了吗?
下一篇: 要做出高品质的docker镜像,一个靠谱的dockerfile必不可少!
梦回从前
博客等级 码龄18年 65粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值