DockerFile_dockerfile 349:-程序员宅基地

技术标签: Docker学习笔记  docker  

在这里插入图片描述

DockerFile介绍

dockerfile是用来构建docker镜像的文件!命令参数脚本!

构建步骤:

  1. 编写一个dockerfile文件
  2. docker build 构建成为一个镜像
  3. docker run 运行镜像
  4. docker push 发布镜像(DockerHub、阿里云镜像仓库!)

DockerFile构建过程

基础知识:

  1. 每个保留关键字(指令)都是必须大写字母

  2. 执行从上到下顺序执行

  3. # 表示注释

  4. 每个指令都会创建提交一个新的镜像层,并提交

dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,这个文件十分简单!

Docker镜像逐渐成为企业交付的标准,必须要掌握!

步骤:开发、部署、运维。。。缺一不可!

DockerFile:构建文件,定义了一切的步骤,源代码

DockerImages:通过DockerFile构建生成的镜像,最终发布和运行产品!

Docker容器:容器就是镜像运行起来提供服务器

DockerFile指令

FROM				# 基础镜像,一切从这里开始构建
MAINTAINER			# 镜像是谁写的,姓名+邮箱
RUN					# 镜像构建的时候需要运行的命令
ADD					# 步骤,tomcat镜像,这个tomcat压缩包!添加内容
WORKDIR				# 镜像的工作目录 
VOLUME				# 挂载到目录位置
EXPOSE				# 保留端口配置
CMD					# 指定这个容器启动的时候要运行的命令
ENTRYPOINT			# 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD				# 当构建一个被继承Dockerfile这个时候就运行ONBUILD 的指令,出发指令
COPY				# 类似ADD, 将我们文件拷贝到镜像中
ENV					# 构建的时候设置环境变量! 

实战测试

Docker Hub中99%镜像都是从这个基础镜像过来的 FROM scratch

创建一个自己的centos

# 1. 编写Dockerfile的文件

# 2. 通过文件构建镜像
# 命令 docker build -f dockerfile文件路径 -t 镜像名:[tag]

CMD 和 ENTRYPOINT 区别

CMD					# 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT			# 指定这个容器启动的时候要运行的命令,可以追加命令

测试cmd

# 编写dockerfile 文件
FROM centos

CMD ["ls","-a"]

# 构建镜像
F:\dockerTest>docker build -f dockerfile2 -t cmdtest .

# run运行,发现我们的ls -a命令生效
F:\dockerTest>docker run c79
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

# 想追加一个 -l   ls -al
F:\dockerTest>docker run c79 -l
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"-l\": executable file not found in $PATH": unknown.

# cmd的清理下 -l 替换了CMD ["ls","-a"] 命令,-l 不是命令所以报错!

测试ENTRYPOINT

# 编写dockerfile 文件
FROM centos
ENTRYPOINT ["ls","-a"]

# 构建镜像
F:\dockerTest>docker build -f dockerfile2 -t enteypointTest .




F:\dockerTest>docker run 497
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

# 我们追加命令
F:\dockerTest>docker run 497 -l
total 56
drwxr-xr-x   1 root root 4096 May 28 14:49 .
drwxr-xr-x   1 root root 4096 May 28 14:49 ..
-rwxr-xr-x   1 root root    0 May 28 14:49 .dockerenv
lrwxrwxrwx   1 root root    7 May 11  2019 bin -> usr/bin
drwxr-xr-x   5 root root  340 May 28 14:49 dev
drwxr-xr-x   1 root root 4096 May 28 14:49 etc
drwxr-xr-x   2 root root 4096 May 11  2019 home
lrwxrwxrwx   1 root root    7 May 11  2019 lib -> usr/lib
lrwxrwxrwx   1 root root    9 May 11  2019 lib64 -> usr/lib64
drwx------   2 root root 4096 Jan 13 21:48 lost+found
drwxr-xr-x   2 root root 4096 May 11  2019 media
drwxr-xr-x   2 root root 4096 May 11  2019 mnt
drwxr-xr-x   2 root root 4096 May 11  2019 opt
dr-xr-xr-x 125 root root    0 May 28 14:49 proc
dr-xr-x---   2 root root 4096 Jan 13 21:49 root
drwxr-xr-x  11 root root 4096 Jan 13 21:49 run
lrwxrwxrwx   1 root root    8 May 11  2019 sbin -> usr/sbin
drwxr-xr-x   2 root root 4096 May 11  2019 srv
dr-xr-xr-x  12 root root    0 May 28 11:55 sys
drwxrwxrwt   7 root root 4096 Jan 13 21:49 tmp
drwxr-xr-x  12 root root 4096 Jan 13 21:49 usr
drwxr-xr-x  20 root root 4096 Jan 13 21:49 var

发布自己的镜像

DockerHub

  1. 注册自己账号
  2. 确定这个账号可以登录
  3. 在我们服务器上提交自己的镜像
# 登录
F:\dockerTest>docker login --help

Usage:  docker login [OPTIONS] [SERVER]

Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.

Options:
  -p, --password string   Password
      --password-stdin    Take the password from stdin
  -u, --username string   Username
  
F:\dockerTest>docker login -u dockerID
Password:
Login Succeeded

登录完毕后就可以提交镜像了,就是一步 docker push

# push自己的镜像到服务器上!
F:\dockerTest>docker push cmdtest
The push refers to repository [docker.io/library/cmdtest]
0683de282177: Preparing                                                                                                 denied: requested access to the resource is denied


# 解决:增加一个 tag  注意必须是 dockerID/image名字:版本号
F:\dockerTest>docker tag 497 dockerID/entry:1.0

# docker push上去即可! 自己发布的镜像尽量带上版本号
F:\dockerTest>docker push dockerID/entry:1.0
0683de282177: Pushing [=>                                                 ]  7.627MB/237.1MB                            0683de282177: Preparing

提交的时候也是按照镜像的层级来进行提交的!

小结

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41324527/article/details/106461327

智能推荐

必看内容!STM32使用ESP8266通过串口与阿里云物联网平台通信-程序员宅基地

文章浏览阅读390次,点赞4次,收藏6次。TXD接RXD(USB)RXD接TXD (USB)VCC接3.3VGND=GPIO0=接地。

vs2010和matlab r2012b 混合编程,vs2010和Matlab R2012b 混合编程-程序员宅基地

文章浏览阅读118次。思路:为了实现matlab与C++混合编程,采用由m文件构造动态链接库然后在visual studio中调用的方法。本人系统:Windows 7旗舰版(32位),VS2010旗舰版,MatlabR2012b只有R2010b或以上版本才识别VS2010编辑器1.matlab中dll创建1.1 m文件编写function [ yt ] = myfitline( x,y,m,xrange,t )%..._matlab和vs2010连用api方式

apollo代码学习2.1——深度解析(control)_apollo control.cpp代码详细解释-程序员宅基地

文章浏览阅读1.4w次,点赞27次,收藏100次。还是以这张图开始介绍吧。之所以拿这张图看,主要我觉得它能够把复杂的apollo架构简单简明化,途中的箭头表示数据流动的方向,从图中不难发现,定位模块是基础,提供了高精地图,而且重要的是图中其他的模块都需要这个地图数据,因此我们就很清楚其重要性了。canbus是基于can总线通往下层控制器的,而perception是获取车上如lidar,radar,camera等传感器数据的模块,这两个模块..._apollo control.cpp代码详细解释

人工智能方向毕业设计_人工智能时代,理工科专业的毕业设计都被安排了-程序员宅基地

文章浏览阅读3.4k次。我是16年上半年从软件开发转到算法工程师的,这些年AI,我亲眼见证了从“黑科技”跌入“俗学”的过程。早些年,在模式识别领域,例如人脸识别、语音识别等,大家都发力在数学算法(基于机器学习)的时候,虽然努力多年,但是因为技术缺陷精度却一直上不去,几乎没有实用价值。深度学习的引入在一次NIST竞赛中,有一个厂家突然爆发,一骑绝尘,直接把竞争对手甩下几个身位,也直接把很多识别技术(例如人脸识别)推到了实用..._专业为人工智能 毕设与专业无关

2020.8.21 阿里笔试第二题(找规律)_大厂数字找规律-程序员宅基地

文章浏览阅读698次。思路刚开始题目都没看懂…样例答案都凑不出来。。。后来从3,4,5,一个个写了一下发现了规律。A选一个点,然后B先走,其实B一定是占据主导地位,来引导着A走,但是二者又有一个共同的目标就是最大化游戏的完美度。比如有5个点的时候,那你发现:(比如权重是[1 2 3 4 5 ]仔细研究会发现权重的绝对大小对规律没影响)A选择完美度最大的点B往完美度第二大的点走 5×45 \times 45×4A往完美度第三大的点走 4×34 \times 34×3B走回完美度最大的点3×53 \times..._大厂数字找规律

改造vue-cli,使用mockjs搭建mock server_vuecli5 mock-server-程序员宅基地

文章浏览阅读6.2k次,点赞2次,收藏8次。本文首发在 掘金关于最近准备开发一款web应用,考虑到可能会有前后端并行开发的场景,所以决定使用mockjs做mock server。浏览官网文档时发现没有跑在webpack上的例子,索性自己找方法解决。什么是mockjs?他的使用场景是什么?当前端工程师需要独立于后端并行开发时,后端接口还没有完成,那么前端怎么获取数据?这时可以考虑前端搭建web server自己模拟假数据,mo..._vuecli5 mock-server

随便推点

html5音乐播放器网页底部,jQuery+html5网页底部固定mp3音乐播放器代码-程序员宅基地

文章浏览阅读744次。一款非常简洁的jQuery+html5网页底部固定mp3音乐播放器代码,电脑手机端都适用的h5音乐播放器插件,可拖动播放进度条。有一点缺憾,就是暂停后点击播放按钮会重头开始播放。查看演示下载资源:18次 下载资源下载积分:20积分js代码 //底部显示区域总宽度var footerW = $('.myaudio').width();//中..._响应式mp3音乐播放器网页底部自适应代码

频率域滤波图像复原的python实现——数字图像处理-程序员宅基地

文章浏览阅读915次,点赞19次,收藏10次。结果图中的第一行是经大气湍流模型退化后的图像在逆滤波和维纳滤波后的结果:逆滤波参数和上个实验一样,限制滤波频率是通过对比值G(u,v)/H(u,v)应用一个阶数为10,截止频率为60的巴特沃斯低通函数来实现的;维纳滤波器的优点是适应面较广,无论平稳随机过程是连续的还是离散的,是标量的还是向量的,都可应用。维纳滤波是利用平稳随机过程的相关特性和频谱特性对混有噪声的信号进行滤波的方法,1942年美国科学家N.维纳为解决对空射击的控制问题所建立,是40年代在线性滤波理论方面所取得的最重要的成果。

node-sass安装过程中问题的解决_npm安装[email protected]生成-range-loop-analysis问题-程序员宅基地

文章浏览阅读97次。1. npm install -g cnpm --registry=https://registry.npm.taobao.org (安装淘宝镜像)2. cnpm install node-sass --save (使用淘宝镜像安装node-sass)如果cnpm无法加载文件C再powershell命令行之后,输入:set-ExecutionPolicy RemoteSigned,然后修改权限为A(Windos PowerShell 管理员运行)npm install node-sass --s_npm安装[email protected]生成-range-loop-analysis问题

2020中国高校计算机大赛网络技术挑战赛,我校学子在2020年(第五届) 中国高校计算机大赛网络技术挑战赛斩获国家一等奖等奖项...-程序员宅基地

文章浏览阅读503次。(本网消息 图文/张修军)近日,2020年(第五届) 中国高校计算机大赛网络技术挑战赛落下帷幕。我校学子在A(创意与技术),C(创业与价值)赛道中,经过激烈角逐,荣获全国一等奖等奖1项,二等奖1项,三等奖1项,创我校历史参赛以来最佳成绩。“网络技术挑战赛”为“中国高校计算机大赛”的竞赛模块之一,目的在于适应网络技术与应用的快速发展,对接经济社会人才需求,促进学生在网络技术研究与设计、开发与应用方面..._中国高校计算机大赛网络技术挑战赛 什么级别

事物运动的状态和方式是谁提出的_关于事物运动的状态和规律的表征-程序员宅基地

文章浏览阅读1.8k次。关于事物运动的状态和规律的表征,也是关于事物运动的知识。信息就是用符号、信号或消息所包含的内容,来消除对客观事物认识的不确定性。由于信息是事物的运动状态和规律的表征,因此信息的存在是普遍的;又由于信息具有知识的秉性,因此它对人类的生存和发展是至关重要的。信息普遍存在于自然界、人类社会和人的思维之中。信息的概念是人类社会实践的深刻概括,并随着科学技术的发展而不断发展。1948年信息论的创始人C.E...._什么是指在自然界和人类社会中存在的一切,事物运动的一种状态和方式,它的物质所固有的一种属性

单片机数码管动态显示1到8奇响一声偶数响两声_数码管1-8显示代码-程序员宅基地

文章浏览阅读730次。单片机数码管动态显示1到8奇响一声偶数响两声_数码管1-8显示代码

推荐文章

热门文章

相关标签