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

碧海蓝天网站wap网站搭建

碧海蓝天网站,wap网站搭建,公众号推广怎么做,哪些网站可以免费做h5前面几篇文章已经给大家介绍了 Docker 的基本概念#xff0c;相信大家也会使用 Docker 运行自己想要的容器了。但是只有学会制作镜像#xff0c;才能将 Docker 应用到我们的项目中去。下面我们就来学习如何使用 Dockerfile 来制作镜像。Dockerfile 是一个文本文件#xff0c…前面几篇文章已经给大家介绍了 Docker 的基本概念相信大家也会使用 Docker 运行自己想要的容器了。但是只有学会制作镜像才能将 Docker 应用到我们的项目中去。下面我们就来学习如何使用 Dockerfile 来制作镜像。Dockerfile 是一个文本文件里面的内容是一条条的指令每一条指令将会构建一层因此每条指令的内容就是在描述该层应当如何创建。编写 Dockerfile接下来以 nginx 镜像为例定制一个简单的镜像首先创建一个目录 mynginx进入目录再创建一个文本文件名字为 Dockerfile。$ mkdir mynginx $ cd mynginx $ touch Dockerfile 把以下内容写到 Dockerfile 中FROM nginx RUN echo h1Hello, Docker!h1 /usr/share/nginx/html/index.html 其中 FROM 用来指定基础镜像上面的例子是以 nginx 为基础镜像。RUN 命令则表示执行一个 shell 命令将文本写进 index.html。构建命令详解编写完 Dockerfile 之后就可以用来构建镜像。构建 docker 镜像的命令如下$ docker build [OPTIONS] PATH | URL | - 选项的说明如下--build-arg[] 设置镜像创建时的变量--cpu-shares 设置 CPU 使用权重--cpu-period 限制 CPU CFS 周期--cpu-quota 限制 CPU CFS 配额--cpuset-cpus 指定使用的 CPU--cpuset-mems 指定使用的内存 id--disable-content-trust 忽略检验默认开启-f 指定要使用的 Dockerfile 路径--force-rm 设置镜像过程中删除中间容器--isolation 使用容器隔离技术--label[] 设置镜像使用的元数据-m 设置内存最大最--memory-swap 设置 Swap 的最大值为内存 swap-1 表示不限 swap--no-cache 创建镜像的过程中不适用缓存--pull 尝试更新镜像的新版本--quiet,-q 安静模式成功后只输出镜像 ID--rm 设置镜像成功后删除中间容器--shm-size 设置 /dev/shm 的大小默认值是 64M--ulimit Ulimit 配置--tag,-t 镜像的名字及标签通常 name:tag 或者 name 格式可以在一次构建中为一个镜像设置多个标签--network 默认 default。在构建期间设置 RUN 指令的网络模式 下面举几个例子说明选项的用法使用当前目录的 Dockerfile 创建镜像标签为 fedevelop/example:v1$ docker build -t fedevelop/example:v1 . 使用 URL http://github.com/ad-feiben/qc-remind 的 Dockerfile 创建镜像$ docker build github.com/ad-feiben/qc-remind 通过 -f Dockerfile 文件的位置$ docker build -f /path/to/a/Dockerfile . 回到 mynginx 目录中执行下面的命令$ docker build -t nginx:v2 . Sending build context to Docker daemon 2.048kB Step 1/2 : FROM nginx--- f949e7d76d63 Step 2/2 : RUN echo h1Hello, Docker!/h1 /usr/share/nginx/html/index.html--- Running in 88dc64292fa7 Removing intermediate container 88dc64292fa7--- 5d1e253d361c Successfully built 5d1e253d361c Successfully tagged nginx:v2 注意不要漏了最后的 .. 代表将当前目录设置为镜像构建上下文Context。例如 Dockerfile 的内容如下COPY ./requirements.txt /app/ 意思为复制上下文目录下的 requirements.txt与 Dockerfile、执行 docker build 所在的目录无关。构建完成后我们可以通过 Docker images 查看我们构建的镜像$ docker images docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx v2 5d1e253d361c About a minute ago 126MB nginx latest f949e7d76d63 4 weeks ago 126MB 接下来用我们定制的镜像来启动一个容器看看其中 5d1e253d361c 替换为你的镜像 id$ docker run -it -p 80:80 5d1e253d361c 浏览器打开 http://localhost/ 可以看到页面显示的是 Hello, Docker!说明我们的 Dockerfile 中的命令生效了。指令详解FROM 指定基础镜像FROM 是用来指定基础镜像这个命令是 Dockerfile 中必备的指令并且必须是第一条指令。假如不需要基础镜像可以使用空白镜像 scratch 作为基础镜像。scratch 这个镜像是虚拟的实际并不存在。FROM scratch ... RUN 执行命令从上面的例子中可以看到 RUN 可以执行一个 shell 命令除了此之外还有另一种格式。exec 格式RUN [可执行文件, 参数]。我们在编写 Dockerfile 的时候需要尽可能将指令链接起来因为 Dockerfile 中的每一条指令都会建立一层如果建立太多层不仅会使得镜像非常臃肿也会增加构建时间。# 错误示范 FROM debian:stretchRUN apt-get update RUN apt-get install -y gcc libc6-dev make wget RUN wget -O redis.tar.gz http://download.redis.io/releases/redis-5.0.3.tar.gz RUN mkdir -p /usr/src/redis RUN tar -xzf redis.tar.gz -C /usr/src/redis --strip-components1 RUN make -C /usr/src/redis RUN make -C /usr/src/redis install 正确的写法如下使用 将多条命令合并为一条并且删除不必要的文件、清理 apt 缓存等尽量保持容器干净。如果没有做清理工作的话这些冗余的文件等将会带到下一层并且会一直跟随镜像。FROM debian:stretchRUN 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 WORKDIR 指定工作目录WORKDIR 的格式为 WORKDIR 工作目录路径当使用 WORKDIR 指定工作路径后以后的每一层的当前目录都会被改为工作目录如果目录不存在WORKDIR 会帮助我们创建目录。如果需要改变以后各层的工作目录的位置只需要再使用 WORKDIR 指令即可。COPY 复制文件COPY 的格式为 COPY [--chownuser:group] 源路径... 目标路径源路径可以是多个也可以使用通配符例如下面这样COPY hom* /mydir/ COPY hom?.txt /mydir/ 目标路径可以是容器内的绝对路径也可以相对工作目录的相对路径。目标路径不需要我们创建如果目标路径不存在会在复制文件前先行创建缺失的目录。使用 COPY 复制文件时会保留文件的元数据比如读写权限文件变更的时间等。如果需要修改文件的所属用户及所属组可以通过添加 --chownuser:group 选项进行修改。CMD 容器启动命令shell 格式为 CMD 命令exec 格式为 CND [可执行文件, 参数1, 参数2]使用 shell 格式的话实际的命令会被包装成 sh -c 的形式进行执行比如CMD echo $HOME 在实际执行中将会变成 CMD [ sh, -c, echo $HOME ]所以在使用 CMD 的时候一般推荐使用 exec 的格式需要注意的是 exec 的格式会被解析成 JSON 数组所以只能够使用双引号而不能使用单引号。Dockerfile 的指令不止这么几个感兴趣的小伙伴可以到 https://yeasy.gitbooks.io/docker_practice/image/dockerfile/ 自行查看。示例下面将通过我的 Python 项目来演示怎么编写一个 Dockerfile文件地址在 https://raw.githubusercontent.com/AD-feiben/qc-remind/master/Dockerfile文件的内容如下:# 指定基础镜像 FROM python:3.7.4# 设置镜像作者 MAINTAINER feiben feiben.devgmail.com# 设置工作目录 WORKDIR /app# 复制上下文的文件到容器的 app 目录下 # 不需要复制到镜像的文件可以使用 .dockerignore 进行忽略 COPY . /app# 执行下面命令同步时区安装依赖 RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime echo Asia/Shanghai /etc/timezone pip install -r requirements.txt# 启动容器 CMD [python, main.py, --log-file-prefix, qc-remind.log] 当我们的代码编写完成后就可以执行 docker build -t name:tag . 将代码打包成一个 Docker 镜像再 push 到镜像仓库中。部署按照传统的方式部署项目通常需要在服务器安装一套运行环境而且常常会遇到环境不一致导致本地开发没问题一到线上部署就出现各种问题的情况。并且一旦服务器到期迁移的工作量也是十分巨大。而使用 Docker我们只需要再服务器安装一个 Docker 环境即可部署项目只需要执行 docker run xxx。不仅减少了安装环境的时间也保证了环境的一致性。如果你喜欢我的文章希望可以关注一下我的公众号【前端develop】前端develop
http://www.yutouwan.com/news/466230/

相关文章:

  • 物流网站设计易购商城网站怎么做啊
  • 医疗器械网站建设方案景点网站应该怎么做
  • 网站上传 文件夹结构推广类电商文案
  • 建设l旅游网站目的及功能定位wordpress中front-page
  • 做网站手机号抓取的公司公司注册资金要求
  • 怎样做婚庆网站移动端模板 wordpress
  • 网站模板 源码之家广州冼村为什么有钱
  • 有专门做英文字幕的网站吗学校网站建设成功案例
  • 洛阳网站推广公司给网站做引流多少钱
  • 企业网站系统的设计与开发教程重庆新闻论坛
  • 东圃手机网站制作费用企业网站页面设计
  • 找人帮忙做网站vps网站打开需要身份验证
  • 动态型网站建设哪里便宜亳州电商网站建设
  • 企业信息型网站有哪些忻州推广型网站开发
  • 加强网站互动交流平台建设自查东莞官方网站设计
  • 网页与网站设计实验报告企业网站建设属于什么费用
  • 做网站赚钱有哪些途径html注册登录界面代码
  • 建设电子商务网站的好处网站开发 .net
  • 福建:网站建设网站的图片要会员才能下载怎么做
  • 影视网站建设源码网站建设公众号管理
  • 如何在网站网站做代理潍坊网页模板建站
  • 广州市官网网站建设平台外贸公司倒闭的多吗
  • h5制作工具免费版济南网络优化网站
  • vs做网站添加背景辽宁省建设工程交易网
  • 网站加载速度影响因素辽宁建设工程信息网官网查不良行为
  • wordpress登录qq微信登录中山百度推广优化排名
  • 红色文化网站建设wordpress主题雪人yeti1.9.2
  • 有什么免费开发网站建设软件有哪些南昌校园文化设计公司
  • 波莱网站开发圆通我做网站拉
  • 网站建设运营外包佛山企业网站建设技术