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

做淘宝用那些网站发货手机免费制作网站模板免费下载

做淘宝用那些网站发货,手机免费制作网站模板免费下载,阿里指数网站,怎样做网站初中生如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本#xff0c;用这个脚本来构建、定制镜像#xff0c;那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。 Dockerfile 是一个文本文件#xff0c;其内包…如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本用这个脚本来构建、定制镜像那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。 Dockerfile 是一个文本文件其内包含了一条条的 指令(Instruction)每一条指令构建一层因此每一条指令的内容就是描述该层应当如何构建。 以之前定制 nginx 镜像为例这次我们使用 Dockerfile 来定制。 在一个空白目录中建立一个文本文件并命名为 Dockerfile其内容为 FROM nginx RUN echo h1Hello, Docker!/h1 /usr/share/nginx/html/index.htmlFROM指定基础镜像 以 scratch 为基础镜像的话意味着你不以任何镜像为基础接下来所写的指令将作为镜像第一层开始存在。 定制镜像那一定是以一个镜像为基础在其上进行定制。就像我们之前运行了一个 nginx 镜像的容器再进行修改一样基础镜像是必须指定的。 RUN执行命令 shell 格式RUN 命令就像直接在命令行中输入的命令一样。刚才写的 Dockerfile 中的 RUN 指令就是这种格式。 exec 格式RUN [可执行文件, 参数1, 参数2]这更像是函数调用中的格式。 在撰写 Dockerfile 的时候要经常提醒自己这并不是在写 Shell 脚本而是在定义每一层该如何构建。 Dockerfile 正确的写法应该是这样 FROM debian:stretchRUN set -x; buildDepsgcc libc6-dev make wget \ apt-get update \ apt-get install -y $buildDeps \ wget -O redis.tar.gz http://download.redis.io/releases/redis-5.0.3.tar.gz \ mkdir -p /usr/src/redis \ tar -xzf redis.tar.gz -C /usr/src/redis --strip-components1 \ make -C /usr/src/redis \ make -C /usr/src/redis install \ rm -rf /var/lib/apt/lists/* \ rm redis.tar.gz \ rm -r /usr/src/redis \ apt-get purge -y --auto-remove $buildDeps这一组命令的最后添加了清理工作的命令删除了为了编译构建所需要的软件清理了所有下载、展开的文件并且还清理了 apt 缓存文件。这是很重要的一步我们之前说过镜像是多层存储每一层的东西并不会在下一层被删除会一直跟随着镜像。因此镜像构建时一定要确保每一层只添加真正需要添加的东西任何无关的东西都应该清理掉。 构建镜像 在 Dockerfile 文件所在目录执行 $ docker build -t nginx:v3 . Sending build context to Docker daemon 2.048 kB Step 1 : FROM nginx--- e43d811ce2f4 Step 2 : RUN echo h1Hello, Docker!/h1 /usr/share/nginx/html/index.html--- Running in 9cdc27646c7b--- 44aa4490ce2c Removing intermediate container 9cdc27646c7b Successfully built 44aa4490ce2c镜像构建上下文 当构建的时候用户会指定构建镜像上下文的路径docker build 命令得知这个路径后会将路径下的所有内容打包然后上传给 Docker 引擎。这样 Docker 引擎收到这个上下文包后展开就会获得构建镜像所需的一切文件。 在默认情况下如果不额外指定 Dockerfile 的话会将上下文目录下的名为 Dockerfile 的文件作为 Dockerfile。 COPY复制文件 COPY [--chownuser:group] 源路径... 目标路径 COPY [--chownuser:group] [源路径1,... 目标路径] COPY 指令将从构建上下文目录中 源路径 的文件/目录复制到新的一层的镜像内的 目标路径 位置。比如 COPY package.json /usr/src/app/源路径 可以是多个甚至可以是通配符其通配符规则要满足 Go 的 [filepath.Match](https://golang.org/pkg/path/filepath/#Match) 规则 目标路径 可以是容器内的绝对路径也可以是相对于工作目录的相对路径工作目录可以用 WORKDIR 指令来指定 使用 COPY 指令源文件的各种元数据都会保留。比如读、写、执行权限、文件变更时间等。这个特性对于镜像定制很有用。特别是构建相关文件都在使用 Git 进行管理的时候。 在使用该指令的时候还可以加上 --chownuser:group 选项来改变文件的所属用户及所属组。 COPY --chown55:mygroup files* /mydir/ COPY --chownbin files* /mydir/ COPY --chown1 files* /mydir/ COPY --chown10:11 files* /mydir/ADD更高级的复制文件 源路径 可以是一个 URL 下载后的文件权限自动设置为 600 压缩格式为 gzip, bzip2 以及 xz 的情况下ADD 指令将会自动解压缩这个压缩文件到 目标路径 去。 CMD容器启动命令 Docker 不是虚拟机容器就是进程。既然是进程那么在启动容器的时候需要指定所运行的程序及参数。CMD 指令就是用于指定默认的容器主进程的启动命令的。 ubuntu 镜像默认的 CMD 是 /bin/bash如果我们直接 docker run -it ubuntu 的话会直接进入 bash。我们也可以在运行时指定运行别的命令如 docker run -it ubuntu cat /etc/os-release。这就是用 cat /etc/os-release 命令替换了默认的 /bin/bash 命令了输出了系统版本信息。 ENTRYPOINT入口点 ENTRYPOINT 的目的和 CMD 一样都是在指定容器启动程序及参数 需要通过 docker run 的参数 --entrypoint 来指定。 指定了 ENTRYPOINT 后CMD 的含义就发生了改变不再是直接的运行其命令而是将 CMD 的内容作为参数传给 ENTRYPOINT 指令换句话说实际执行时将变为 ENTRYPOINT CMDENV设置环境变量 格式有两种 ENV key value ENV key1value1 key2value2... 这个指令很简单就是设置环境变量而已无论是后面的其它指令如 RUN还是运行时的应用都可以直接使用这里定义的环境变量。 下列指令可以支持环境变量展开 ADD、COPY、ENV、EXPOSE、FROM、LABEL、USER、WORKDIR、VOLUME、STOPSIGNAL、ONBUILD、RUN。 ARG构建参数 构建参数和 ENV 的效果一样都是设置环境变量。所不同的是ARG 所设置的构建环境的环境变量在将来容器运行时是不会存在这些环境变量的。但是不要因此就使用 ARG 保存密码之类的信息因为 docker history 还是可以看到所有值的。 Dockerfile 中的 ARG 指令是定义参数名称以及定义其默认值。该默认值可以在构建命令 docker build 中用 --build-arg 参数名值 来覆盖。 灵活的使用 ARG 指令能够在不修改 Dockerfile 的情况下构建出不同的镜像。 ARG 指令有生效范围如果在 FROM 指令之前指定那么只能用于 FROM 指令中。 ARG DOCKER_USERNAMElibraryFROM ${DOCKER_USERNAME}/alpineRUN set -x ; echo ${DOCKER_USERNAME}使用上述 Dockerfile 会发现无法输出 ${DOCKER_USERNAME} 变量的值要想正常输出你必须在 FROM 之后再次指定 ARG # 只在 FROM 中生效 ARG DOCKER_USERNAMElibraryFROM ${DOCKER_USERNAME}/alpine# 要想在 FROM 之后使用必须再次指定 ARG DOCKER_USERNAMElibraryRUN set -x ; echo ${DOCKER_USERNAME}对于上述 Dockerfile 两个 FROM 指令都可以使用 ${DOCKER_USERNAME}对于在各个阶段中使用的变量都必须在每个阶段分别指定 VOLUME定义匿名卷 容器运行时应该尽量保持容器存储层不发生写操作对于数据库类需要保存动态数据的应用其数据库文件应该保存于卷(volume)中 为了防止运行时用户忘记将动态文件所保存目录挂载为卷在 Dockerfile 中我们可以事先指定某些目录挂载为匿名卷这样在运行时如果用户不指定挂载其应用也可以正常运行不会向容器存储层写入大量数据。 VOLUME /data这里的 /data 目录就会在容器运行时自动挂载为匿名卷任何向 /data 中写入的信息都不会记录进容器存储层从而保证了容器存储层的无状态化。当然运行容器时可以覆盖这个挂载设置。比如 $ docker run -d -v mydata:/data xxxxEXPOSE暴露端口 EXPOSE 指令是声明容器运行时提供服务的端口这只是一个声明在容器运行时并不会因为这个声明应用就会开启这个端口的服务。在 Dockerfile 中写入这样的声明有两个好处一个是帮助镜像使用者理解这个镜像服务的守护端口以方便配置映射另一个用处则是在运行时使用随机端口映射时也就是 docker run -P 时会自动随机映射 EXPOSE 的端口。 WORKDIR指定工作目录 使用 WORKDIR 指令可以来指定工作目录或者称为当前目录以后各层的当前目录就被改为指定的目录如该目录不存在WORKDIR 会帮你建立目录。 如果需要改变以后各层的工作目录的位置那么应该使用 WORKDIR 指令。 WORKDIR /appRUN echo hello world.txt如果你的 WORKDIR 指令使用的相对路径那么所切换的路径与之前的 WORKDIR 有关 WORKDIR /a WORKDIR b WORKDIR cRUN pwdRUN pwd 的工作目录为 /a/b/c。 USER指定当前用户 USER 指令和 WORKDIR 相似都是改变环境状态并影响以后的层。WORKDIR 是改变工作目录USER 则是改变之后层的执行 RUN, CMD 以及 ENTRYPOINT 这类命令的身份。 USER 只是帮助你切换到指定用户而已这个用户必须是事先建立好的否则无法切换。 RUN groupadd -r redis useradd -r -g redis redis USER redis RUN [ redis-server ]HEALTHCHECK健康检查 HEALTHCHECK 指令是告诉 Docker 应该如何进行判断容器的状态是否正常这是 Docker 1.12 引入的新指令。 假设我们有个镜像是个最简单的 Web 服务我们希望增加健康检查来判断其 Web 服务是否在正常工作我们可以用 curl 来帮助判断其 Dockerfile 的 HEALTHCHECK 可以这么写 FROM nginx RUN apt-get update apt-get install -y curl rm -rf /var/lib/apt/lists/* HEALTHCHECK --interval5s --timeout3s \CMD curl -fs http://localhost/ || exit 1这里我们设置了每 5 秒检查一次这里为了试验所以间隔非常短实际应该相对较长如果健康检查命令超过 3 秒没响应就视为失败并且使用 curl -fs http://localhost/ || exit 1 作为健康检查命令。 为了帮助排障健康检查命令的输出包括 stdout 以及 stderr都会被存储于健康状态里可以用 docker inspect 来查看。 $ docker inspect --format {{json .State.Health}} web | python -m json.tool {FailingStreak: 0,Log: [{End: 2016-11-25T14:35:37.940957051Z,ExitCode: 0,Output: !DOCTYPE html\nhtml\nhead\ntitleWelcome to nginx!/title\nstyle\n body {\n width: 35em;\n margin: 0 auto;\n font-family: Tahoma, Verdana, Arial, sans-serif;\n }\n/style\n/head\nbody\nh1Welcome to nginx!/h1\npIf you see this page, the nginx web server is successfully installed and\nworking. Further configuration is required./p\n\npFor online documentation and support please refer to\na href\http://nginx.org/\nginx.org/a.br/\nCommercial support is available at\na href\http://nginx.com/\nginx.com/a./p\n\npemThank you for using nginx./em/p\n/body\n/html\n,Start: 2016-11-25T14:35:37.780192565Z}],Status: healthy }ONBUILD为他人做嫁衣裳 ONBUILD 是一个特殊的指令它后面跟的是其它指令比如 RUN, COPY 等而这些指令在当前镜像构建时并不会被执行。只有当以当前镜像为基础镜像去构建下一级镜像的时候才会被执行。 LABEL为镜像添加元数据 LABEL 指令用来给镜像以键值对的形式添加一些元数据metadata。 SHELL指令 SHELL 指令可以指定 RUN ENTRYPOINT CMD 指令的 shellLinux 中默认为 [/bin/sh, -c]
http://www.zqtcl.cn/news/460690/

相关文章:

  • 河南网站怎么备案东台市住房和建设局网站
  • 有什么手机做网站的asp.net网站安全
  • 怎么做查询网站后台做爰的视频网站
  • 迪虎科技网站建设国际市场那个app可以看
  • 怎么做跳转不影响原网站排名wordpress添加邮箱设置
  • 网站内容规范外贸电商怎么做
  • 郑州做网站齿轮wordpress 文章h标签美化
  • 建设银行网站怎么修改手机号码吗网站建设怎样容易
  • 网站建设风险管理计划书户外媒体网站建设免费
  • 学到什么程度可以做网站网站维护的要求包括
  • 泉州网站设计平台南阳响应式网站
  • 阿里云 企业网站选哪种推广普通话的文字内容
  • 广州市南沙建设局网站中山建网站咨询电话
  • 怎么创建网站快捷方式网络服务器搭建配置与管理 下载
  • 现在什么类型网站没有人做wordpress get_categories()
  • 石家庄网站推广优化闲鱼网络营销方式
  • 精诚时代 网站谁做的北京网站设计必看刻
  • 长沙网站排名报价企业管理培训课程网课
  • 怎样做婚庆网站外贸网站怎么注册
  • 网站设计制作公司推荐自己做商务网站有什么利弊
  • 传媒网站杨浦网站建设哪家好
  • 500m主机空间能做视频网站吗做中文网站的公司
  • 网站建设规划模板公司网站建设论文
  • p2p网站开发的内容广东世纪达建设集团有限公司官方网站
  • 网站基本建设是什么o元做网站
  • 南昌做购物网站的公司mc做弊端网站
  • 汕头制作网站推荐文化建设五大工程
  • 公司购物网站备案遵义市乡村街道建设投诉网站
  • ps做景观有哪些素材网站网站推广软文
  • 医疗类网站备案dw网页设计期末作业源代码