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

哈尔滨建站公司推广网页

哈尔滨建站公司,推广网页,景安网络网站建设教程,广告策划与营销上一篇文章介绍了 Docker 基本概念#xff0c;其中镜像、容器和 Dockerfile 。我们使用 Dockerfile 定义镜像#xff0c;依赖镜像来运行容器#xff0c;因此 Dockerfile 是镜像和容器的关键#xff0c;Dockerfile 可以非常容易的定义镜像内容#xff0c;同时在我们后期的微… 上一篇文章介绍了 Docker 基本概念其中镜像、容器和 Dockerfile 。我们使用 Dockerfile 定义镜像依赖镜像来运行容器因此 Dockerfile 是镜像和容器的关键Dockerfile 可以非常容易的定义镜像内容同时在我们后期的微服务实践中Dockerfile 也是重点关注的内容今天我们就来一起学习它。 通过上图可以看出使用 Dockerfile 定义镜像运行镜像启动容器。 Dockerfile 概念 Docker 镜像是一个特殊的文件系统除了提供容器运行时所需的程序、库、资源、配置等文件外还包含了一些为运行时准备的一些配置参数如匿名卷、环境变量、用户等。镜像不包含任何动态数据其内容在构建之后也不会被改变。 镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本用这个脚本来构建、定制镜像那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。 Dockerfile 是一个文本文件其内包含了一条条的指令(Instruction)每一条指令构建一层因此每一条指令的内容就是描述该层应当如何构建。有了 Dockerfile当我们需要定制自己额外的需求时只需在 Dockerfile 上添加或者修改指令重新生成 image 即可省去了敲命令的麻烦。 Dockerfile 文件格式 Dockerfile文件格式如下 ## Dockerfile文件格式# This dockerfile uses the ubuntu image # VERSION 2 - EDITION 1 # Author: docker_user # Command format: Instruction [arguments / command] ..# 1、第一行必须指定 基础镜像信息 FROM ubuntu# 2、维护者信息 MAINTAINER docker_user docker_useremail.com# 3、镜像操作指令 RUN echo deb http://archive.ubuntu.com/ubuntu/ raring main universe /etc/apt/sources.list RUN apt-get update apt-get install -y nginx RUN echo \ndaemon off; /etc/nginx/nginx.conf# 4、容器启动执行指令 CMD /usr/sbin/nginx Dockerfile 分为四部分基础镜像信息、维护者信息、镜像操作指令、容器启动执行指令。一开始必须要指明所基于的镜像名称接下来一般会说明维护者信息后面则是镜像操作指令例如 RUN 指令。每执行一条RUN 指令镜像添加新的一层并提交最后是 CMD 指令来指明运行容器时的操作命令。 构建镜像 docker build 命令会根据 Dockerfile 文件及上下文构建新 Docker 镜像。构建上下文是指 Dockerfile 所在的本地路径或一个URLGit仓库地址。构建上下文环境会被递归处理所以构建所指定的路径还包括了子目录而URL还包括了其中指定的子模块。 将当前目录做为构建上下文时可以像下面这样使用docker build命令构建镜像 docker build . Sending build context to Docker daemon 6.51 MB ... 说明构建会在 Docker 后台守护进程daemon中执行而不是CLI中。构建前构建进程会将全部内容递归发送到守护进程。大多情况下应该将一个空目录作为构建上下文环境并将 Dockerfile 文件放在该目录下。 在构建上下文中使用的 Dockerfile 文件是一个构建指令文件。为了提高构建性能可以通过.dockerignore文件排除上下文目录下不需要的文件和目录。 在 Docker 构建镜像的第一步docker CLI 会先在上下文目录中寻找.dockerignore文件根据.dockerignore 文件排除上下文目录中的部分文件和目录然后把剩下的文件和目录传递给 Docker 服务。 Dockerfile 一般位于构建上下文的根目录下也可以通过-f指定该文件的位置 docker build -f /path/to/a/Dockerfile . 构建时还可以通过-t参数指定构建成镜像的仓库、标签。 镜像标签 docker build -t nginx/v3 . 如果存在多个仓库下或使用多个镜像标签就可以使用多个-t参数 docker build -t nginx/v3:1.0.2 -t nginx/v3:latest . 在 Docker 守护进程执行 Dockerfile 中的指令前首先会对 Dockerfile 进行语法检查有语法错误时会返回 docker build -t nginx/v3 . Sending build context to Docker daemon 2.048 kB Error response from daemon: Unknown instruction: RUNCMD 缓存 Docker 守护进程会一条一条的执行 Dockerfile 中的指令而且会在每一步提交并生成一个新镜像最后会输出最终镜像的ID。生成完成后Docker 守护进程会自动清理你发送的上下文。 Dockerfile文件中的每条指令会被独立执行并会创建一个新镜像RUN cd /tmp等命令不会对下条指令产生影响。 Docker 会重用已生成的中间镜像以加速docker build的构建速度。以下是一个使用了缓存镜像的执行过程 $ docker build -t svendowideit/ambassador . Sending build context to Docker daemon 15.36 kB Step 1/4 : FROM alpine:3.2--- 31f630c65071 Step 2/4 : MAINTAINER SvenDowideithome.org.au--- Using cache--- 2a1c91448f5f Step 3/4 : RUN apk update apk add socat rm -r /var/cache/--- Using cache--- 21ed6e7fbb73 Step 4/4 : CMD env | grep _TCP | (sed s/.*_PORT_\([0-9]*\)_TCPtcp:\/\/\(.*\):\(.*\)/socat -t 100000000 TCP4-LISTEN:\1,fork,reuseaddr TCP4:\2:\3 \/ echo wait) | sh--- Using cache--- 7ea8aef582cc Successfully built 7ea8aef582cc 构建缓存仅会使用本地父生成链上的镜像如果不想使用本地缓存的镜像也可以通过--cache-from指定缓存。指定后将不再使用本地生成的镜像链而是从镜像仓库中下载。 寻找缓存的逻辑 Docker 寻找缓存的逻辑其实就是树型结构根据 Dockerfile 指令遍历子节点的过程。下图可以说明这个逻辑。 FROM base_image:version Dockerfile:---------- FROM base_image:version|base image| RUN cmd1 -- use cache because we found base image-----X---- RUN cmd11 -- use cache because we found cmd1/ \/ \RUN cmd1 RUN cmd2 Dockerfile:------ ------ FROM base_image:version|image1| |image2| RUN cmd2 -- use cache because we found base image---X-- ------ RUN cmd21 -- not use cache because theres no child node/ \ running cmd21, so we build a new image here/ \ RUN cmd11 RUN cmd12 ------- ------- |image11| |image12| ------- ------- 大部分指令可以根据上述逻辑去寻找缓存除了 ADD 和 COPY 。这两个指令会复制文件内容到镜像内除了指令相同以外Docker 还会检查每个文件内容校验(不包括最后修改时间和最后访问时间)如果校验不一致则不会使用缓存。 除了这两个命令Docker 并不会去检查容器内的文件内容比如 RUN apt-get -y update每次执行时文件可能都不一样但是 Docker 认为命令一致会继续使用缓存。这样一来以后构建时都不会再重新运行apt-get -y update。 如果 Docker 没有找到当前指令的缓存则会构建一个新的镜像并且之后的所有指令都不会再去寻找缓存。 简单示例 接下来用一个简单的示例来感受一下 Dockerfile 是如何用来构建镜像启动容器。我们以定制 nginx 镜像为例在一个空白目录中建立一个文本文件并命名为 Dockerfile mkdir mynginx cd mynginx vi Dockerfile 构建一个 Dockerfile 文件内容为 FROM nginx RUN echo h1Hello, Docker!/h1 /usr/share/nginx/html/index.html vi Dockerfile 这个 Dockerfile 很简单一共就两行涉及到了两条指令FROM 和 RUNFROM 表示获取指定基础镜像RUN 执行命令在执行的过程中重写了 nginx 的默认页面信息将信息替换为Hello, Docker!。 在 Dockerfile 文件所在目录执行 docker build -t nginx:v1 .命令最后有一个. 表示当前目录 构建完成之后使用 docker images 命令查看所有镜像如果存在 REPOSITORY 为 nginx 和 TAG 是 v1 的信息就表示构建成功。 docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx v1 8c92471de2cc 6 minutes ago 108.6 MB 接下来使用 docker run 命令来启动容器 docker run --name docker_nginx_v1 -d -p 80:80 nginx:v1这条命令会用 nginx 镜像启动一个容器命名为docker_nginx_v1并且映射了 80 端口这样我们可以用浏览器去访问这个 nginx 服务器http://192.168.0.54/页面返回信息 这样一个简单使用 Dockerfile 构建镜像运行容器的示例就完成了 修改容器内容 容器启动后需要对容器内的文件进行进一步的完善可以使用docker exec -it xx bash命令再次进行修改以上面的示例为基础修改 nginx 启动页面内容 docker exec -it docker_nginx_v1 bash root3729b97e8226:/# echo h1Hello, Docker neo!/h1 /usr/share/nginx/html/index.html root3729b97e8226:/# exit exit 以交互式终端方式进入 docker_nginx_v1 容器并执行了 bash 命令也就是获得一个可操作的 Shell。然后我们用h1Hello, Docker neo!/h1覆盖了 /usr/share/nginx/html/index.html 的内容。 再次刷新浏览器会发现内容被改变。 修改了容器的文件也就是改动了容器的存储层可以通过 docker diff 命令看到具体的改动。 docker diff docker_nginx_v1 ... 这样 Dockerfile 使用方式就为大家介绍完了下期为大家介绍 Dockerfile 命令的详细使用。 行动吧在路上总比一直观望的要好未来的你肯定会感 谢现在拼搏的自己如果想学习提升找不到资料没人答疑解惑时请及时加入扣群731789136里面有各种软件测试开发资料和技术可以一起交流学习哦。 最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你
http://www.zqtcl.cn/news/412196/

相关文章:

  • 中山网站建设方案家具网站开发目的
  • 教师个人网站建设建模培训多少钱
  • 个人网站可以做社交类型网站建设功能说明书
  • 微站是什么移动网站 拉新
  • 黑龙江省农业网站建设情况wordpress4.94主题上传不显示
  • 个人网站的域名重庆建立公司网站
  • 什么做网站做个多少钱啊百度网盘app
  • 做网站的公司挣钱吗石家庄房产
  • 烟台网站建设设计公司安徽建设工程信息网查询平台蔡庆树
  • 微信链接的微网站怎么做西安企业网站制作价格
  • uniapp怎么做淘客网站表格布局的网站
  • wordpress侧栏图片插件提升seo搜索排名
  • 如何查询网站的域名注册邹城建设银行网站
  • 招生门户网站建设方案国家企业信用信息公示信息查询网
  • 用dw做淘客网站的步骤移动互联网应用技术
  • 企业合作的响应式网站石家庄网站建设推广
  • 成都网站排名优化开发广告传媒公司简介模板
  • 中山网站建设企业网站内容建设
  • 免费网站建站页面wordpress的主题在哪个文件夹
  • 国企网站建设要求站长之家排行榜
  • 做视频网站利润如何处理旅游电子商务网站建设技术规范
  • 做网站架构网页浏览器怎么卸载
  • 做甜品的网站网页传奇游戏排行榜比亚迪
  • 广州网站建设菲利宾百度关键词优化排名
  • 南昌网站建设业务wordpress添加购买按钮
  • 个人现在可以做哪些网站企业所得税是多少
  • 网站建设招标信息科技企业网站建设
  • 怎样弄网站站长工具综合查询
  • 表白网站在线制作软件合肥seo按天收费
  • 襄阳企业网站建设免费行情的软件入口下载