当前位置: 首页 > news >正文

中国人做暧暧视频网站微信分销系统模板

中国人做暧暧视频网站,微信分销系统模板,自己买服务器建网站,兼职网页设计怎么报价前言使用第三方镜像肯定不是学习Docker的最终目的#xff0c;最想要的还是自己构建镜像#xff1b;将自己的程序、文件、环境等构建成自己想要的应用镜像#xff0c;方便后续部署、启动和维护#xff1b;而Dockerfile就是专门做这个事的#xff0c;通过类似简单编码的形式… 前言使用第三方镜像肯定不是学习Docker的最终目的最想要的还是自己构建镜像将自己的程序、文件、环境等构建成自己想要的应用镜像方便后续部署、启动和维护而Dockerfile就是专门做这个事的通过类似简单编码的形式最终就可以构建出属于自己的镜像所以必须学起来。正文1. Dockerfile简介在日常开发过程中需要编写对应的程序文件最后通过编译打包生成对应的可执行文件或是类库这里的Dockerfile文件就好比平时我们编写的程序文件但内部的语法和关键字并没有程序那么复杂和繁多相对来说还是很简单的最后通过docker build命令就可以将对应的程序、文件、环境等构建成镜像啦。在第一篇文章最后就简单使用了Dockerfile构建了一个镜像这里重新认识下这个Dockerfile文件如下图Dockerfile就是一个文本文件但不需要指定后缀类型文件内容中FROM、WORKDIR、COPY等就是关键字按照规则写好之后就可以将指定的文件构建为镜像啦。构建操作统一由Docker daemon进行它会先对文件内容语法进行初步验证(语法不对就会返回错误信息)然后逐一运行指令每次生成一个新的镜像层直到执行完所有指令就构建出最终的镜像。 Dockerfile、镜像、容器的关系如下总结一下Dockerfile的知识点构建时指令从上到下逐一执行每条指令都会创建一个新的镜像层每一层都是前一层变化的增量使用#号进行注释关键字约定都是大写后面至少跟一个参数2. Dockerfile关键字2.1 FROM 关键字指定基础镜像 就是新镜像是基于哪个镜像构建的。比如建房子可以在一块空地开始也可以在别人打好的基石基础上开始 甚至可以在别人弄好的毛坯房基础上装修即可。如果要建房的话可以FROM 空地或者FROM 打好的基石或者 FROM 毛坯房 反正最后建好房就行这里需要注意的是不管咋样空地是少不了的构建镜像也一样最底层肯定有一个最基础的镜像。建议使用官方的镜像作为基础镜像推荐使用Alpine这种类型因为它是严格控制的而且体积很小。用法如下 # FROM [--platformplatform] image[:tag] [AS name]ARG  CODE_VERSIONlatest # 定义变量FROM base:${CODE_VERSION} # 指定基础镜像 2.2 MAINTAINER/LABEL 关键字MAINTAINER 指定维护者的相关信息也就是构建的镜像是由谁构建的他的邮箱是什么LABLE 就是用于给镜像打标签以键值对的方式进行指定相对MAINTAINER 来说比较灵活可以使用LABLE替代MAINTAINER。用法如下 # LABEL keyvalue keyvalue keyvalue ...LABEL com.example.version0.0.1-beta LABEL vendor1ACME Incorporated 2.3 RUN 关键字构建过程中需要运行的命令 比如在构建过程中需要执行一条命令下载对应的包这里就需要用到RUN关键字用法如下 # 两种命令方式都可以# RUN command# RUN [executable, param1, param2]# 执行命令,Linux支持的相关命令RUN /bin/bash -c source $HOME/.bashrc; echo $HOMERUN [/bin/bash, -c, echo hello] 2.4 WORKDIR 关键字根据镜像启动容器时通常需要进入到容器内部则可以通过WORKDIR指定进入容器时的目录用法如下 WORKDIR /path # 指定路径 2.5 ENV 关键字可以在构建过程中设置环境变量就好比平时我们安装完程序需要配置环境变量方便访问ENV关键字就是根据需求可以设置对应的环境变量用法如下 # ENV keyvalue ...# 指定环境变量ENV PATH/usr/local/postgres-$PG_MAJOR/bin:$PATH 2.6 ADD 关键字将宿主机的资源拷贝进镜像中会自动解压缩而且还能从远程宿主机中读取资源并拷贝到镜像中用法如下 # 两种命令方式都可以# ADD [--chownuser:group] src... dest# ADD [--chownuser:group] [src,... dest]ADD https://example.com/big.tar.xz /usr/src/things/ 2.7 COPY 关键字将宿主机的资源拷贝到镜像中只支持读取构建所在宿主机的资源。相对于ADD关键字来说更加透明操作什么就是什么。用法如下 # 拷贝资源到容器两种命令格式都行# COPY [--chownuser:group] 源地址... 目标地址# COPY [--chownuser:group] [源地址,... 目标地址]COPY requirements.txt /tmp/ 2.8 VOLUME 关键字挂载数据卷之前在常用命令那说到通过命令的方式进行数据卷挂载在Dockerfile中使用VOLUME指定挂载路径即可根据构建出来的镜像运行容器时默认就有构建时挂载的信息。用法如下 # 挂载数据卷VOLUME [/data]VOLUME /myvol 2.9 EXPOSE 关键字指定运行容器时对外暴露的端口即根据镜像启动容器时容器向外暴露端口。用法如下 # EXPOSE port [port/protocol...]EXPOSE 80/tcp # 暴露端口EXPOSE 80/udp 2.10 CMD 关键字指定启动容器时要执行的命令只有最后一个会生效即根据镜像启动容器时容器需要执行啥命令。用法如下 # 两种格式都行# CMD [param1,param2]# CMD command param1 param2# 执行命令统计 行数、字数、字节数CMD echo This is a test. | wc -# 执行wc --help命令 CMD [/usr/bin/wc,--help] 2.11 ENTRYPOINT 关键字指定根据镜像启动容器时要执行的命令可以追加命令执行时机同CMD。用法如下 # ENTRYPOINT [executable, param1, param2]# ENTRYPOINT command param1 param2ENTRYPOINT [top, -b] 2.12 ARG 关键字通过ARG指令定义了一个变量和写代码时定义的变量一样根据需要定义就行啦。用法如下 # ARG name[default value]ARG user1someuserARG buildno1 2.13 ONBUILD 关键字基于父镜像构建新的镜像时父镜像的OBUILD会被触发。3. 实战演示这里还是以.NetCore项目构建镜像为例其他编程语言的项目同理这次咱们一步一步的来搞清楚每个命令的使用。以下关于项目创建和发布的具体细节在第一篇最后就分享了小伙伴可以参考这里主要演示Dockerfile关键字。3.1 准备项目和Dockerfile文件新建一个项目啥都不需要改就用默认的接口演示如下Dockerfile内容如下 # 指定基础镜像在此基础上构建自己的项目镜像FROM mcr.microsoft.com/dotnet/core/aspnet:3.1# 指定自己的工作目录进入容器时目录WORKDIR /myApp# 将构建上下文目录下的文件拷贝到容器的当前工作目录中即/myAppCOPY . .# 容器向外暴露端口项目以什么端口启动就暴露对应的端口EXPOSE 80# 执行命令这里默认是以80端口启动的#就类似于在Linux系统的项目目录下执行 dotnet DockerfileDemo.dll 是一样的ENTRYPOINT [dotnet, DockerfileDemo.dll] 记得右键Dockerfile选择属性然后设置Dockerfile为始终复制这样后续更新变动发布时就会自动拷贝到对应的发布目录。3.2 以文件的形式发布项目并连同Dockerfile拷贝到安装好Docker的机器上进行构建(这里还是用我的云服务器)docker build -t myimage:v1.0 .解析-t指定镜像的名字及标签通常 name:tag 或者 name 格式myimage就是镜像名字v1.0就是tag-f :指定要使用的Dockerfile路径这里由于Dockerfile在当前路径所以不用指定最后面的点官方称为构建上下文点表示指定为当前目录。会把指定的这个目录下的文件发送给docker daemon进行构建所以千万不要指定/(斜杠代表根目录有很多文件的)。其他选项参数小伙伴可以根据需要使用以上是比较重要的。3.3 根据构建出来的镜像启动容器看Dockerfile中的命令效果启动容器如下ENTRYPOINT [dotnet, DockerfileDemo.dll]这行代码就等同于的项目目录下直接执行 dotnet DockerfileDemo.dll是一样的目的就是启动我们的项目。通过docker logs可以查看容器内部的日志如下3.4 丰富化Dockefile文件内容并查看构建之后的细节文件内容如下 # 指定基础镜像在此基础上构建自己的项目镜像FROM mcr.microsoft.com/dotnet/core/aspnet:3.1# 指定维护人MAINTAINER CodeZYQ1137533407qq.com# 打标签LABEL createnameCodeZYQ# 指定自己的工作目录进入容器时目录 appWORKDIR /myapp# 将构建上下文目录下的文件拷贝到容器中的工作目录中COPY . .# 定义变量ARG myPort8080# 使用环境变量方式改变启动端口拼接用到了定义的变量ENV ASPNETCORE_URLShttp://:$myPort# 通过RUN 执行相关命令根据需要执行相关命令RUN mkdir testDir# 挂载数据卷这里模拟挂载日志目录VOLUME /Logs# 容器向外暴露端口项目以什么端口启动就暴露对应的端口EXPOSE $myPort# 执行命令这里默认是以80端口启动的# 就类似于在Linux系统的项目目录下执行 dotnet DockerfileDemo.dll 是一样的ENTRYPOINT [dotnet, DockerfileDemo.dll] 执行如下命令构建新的镜像 # 这里没有显示指定tag 默认就latestdocker build -t newimage . 通过docker logs看看容器日志如下看看数据卷挂载是否成功进入容器看根目录下就会多了Logs目录也可以通过docker inspect 容器 看容器详细信息如下标签也打成功了也可以通过docker inspect 镜像查看镜像内部的详细信息执行命令docker inspect newimage如下关于步骤和效果在Dockerfile注释和图表中已经详细描述。3.5 CMD和ENTRYPOINT的区别两个命令都是启动容器时指定执行命令和对应的参数但两者稍有不同如下CMD只能最后一个命令会生效命令会被docker run之后的参数替换掉ENTRYPOINT可以追加命令比如增加参数上面构建出来的newimage镜像用到的是ENTRYPOINT所以我们先来测试一下ENTRYPOINT如下docker run启动容器时指定了参数 --urlshttp://:9999容器正常启动并且参数还能生效等同于在当前目录直接执行如下命令 dotnet DockerfileDemo.dll --urlshttp://:9999 现在把ENTRYPOINT换成CMD试试如下 # 在以上的Dockerfile中# 将ENTRYPOINT [dotnet, DockerfileDemo.dll]换成CMD如下CMD [dotnet, DockerfileDemo.dll] 然后重新构建一个镜像试试测试如下如上图对于CMD而言如果在运行容器时后面指定参数这个参数就会把CMD命令替换掉不能拼接导致命令不对所以报错但这样就可以执行如下如果在当前构建的上下文目录中不想要一些文件参与构建可以通过在.dockerignore文件中进行配置这个和git中的.gitignore一个道理编写也比较简单这里就不演示了。对了.NetCore的镜像列表可以参照这个地址https://hub.docker.com/_/microsoft-dotnet-aspnet/每个镜像都有对应的Dockerfile感兴趣的小伙伴可以点进去看看参考参考。总结关于Dockerfile的演示就先说那么多小伙伴们一定要举一反三上面演示只是一个小例子而已在正式项目中可以根据需要编辑出属于符合需求的Dockefile文件最终构建出方便、好用的镜像这样开发和运维就和谐了(嘿嘿嘿)。Docker之前文章目录Docker小白到实战之开篇概述Docker小白到实战之常用命令演示通俗易懂Docker小白到实战之容器数据卷整理的明明白白好了下次聊聊Docker中的网络应用关注“Code综艺圈”和我一起学习吧图片
http://www.huolong8.cn/news/193873/

相关文章:

  • 福建莆田网站开发怎么做电影网站页面的
  • 网站开发需要学数学吗电子商务知名网站
  • 建设银行河北省分行官方网站做欧洲电商看哪个网站
  • 包头网站建设制作极家装修口碑好不好
  • 福州网站建设多少钱wordpress转发插件
  • 廊坊网站推广外包破解直播免费视频
  • 用什么软件可以制作图片海阳seo排名优化培训
  • 自己做的视频网站上传电影仙居做网站
  • 做地方门户网站赚钱吗seo专业优化公司
  • 信云科技的vps怎么做网站网店怎么开店详细教程
  • 泉州网站制作企业网站改版 百度影响
  • 宁远县建设局网站公司注册名称大全
  • 做食品那些网站好学校网站 模板
  • 网站页面设计公司电话广州网站建设中心
  • 宁晋做网站网站标题如何设置
  • 霸州做网站1766534168网站的目的和意义
  • 营销型定制网站广告设计需要学什么
  • 网站宣传的重要性python登录wordpress
  • 穿衣搭配的网站如何做网站建设与管理自考题
  • 张槎建网站公司酷炫网站模板
  • 企业网站制作怎么做政法大学 wordpress
  • 英文响应式网站建设个人主页制作教程
  • 深圳建网站哪个好网站栏目标题
  • 响应式网站企业建一个网站要...
  • 建设云南省癌症中心网站多商网
  • 饰品做商城网站模式推推蛙贴吧优化
  • 徐闻住房与城乡建设局网站南宁中考招生信息网
  • 外贸网站服务器推荐组织建设包括哪些内容
  • 男女之间做那个的网站作品推广
  • 做网站的公司没有技术项目管理软件下载