Docker容器不仅仅是运行原生的容器,而是把我们的具体的项目能够布置到容器上面去,这就是Docker定制镜像需要做的事情。  Docker容器 = new Docker镜像  镜像相当于类,容器相当于对象,所以修改了类之后,生成的容器也是根据需求生成的。

下面根据Dockerfile创建最简单的定制化镜像:  启动tomcat容器主页显示  hello tomcat

1.Dockerfile定制镜像

  • 首先找到一个位置来放置我们的项目代码,一般我们的程序都会放在 /usr/local/   下
  • cd /usr/local/      mkdir docker    cd docker    mkdir  myproject   cd myproject
  • touch index.jsp    vi index.jsp    hello tomcat  保存
  • touch Dockerfile  #创建Dockerfile文件,一般定制化的镜像构建时的配置文件默认名称是 Dockerfile,下面是文件内容

    From tomcat:latest

    COPY index.jsp  /usr/local/tomcat/webapps/ROOT

  • From tomcat:latest     #从tomcat镜像继承过来,tomcat是最新版本,同样也可以用tomcat的版本号替换latest    Copy index.jsp  /usr/local/tomcat/webapps/ROOT  #拷贝文件index.jsp到tomcat的ROOT目录下   保存
  • docker build -t 镜像名字 .      构建镜像 看清楚,最后还有一个点。  最后那个点的含义是表示当前目录以及容器的上下文环境。镜像的构建是不是在宿主机里面构建的 而是在Docker中构建的,构建的过程是把当前所在的目录以及目录下的所有文件拷贝到Docker,所以在Dockerfile中使用 ./ 想要跳回上级目录是行不通的,因为构建之后的环境已经变了。
  • 使用docker images 查看当前docker的镜象信息,myshop是我创建的镜像,镜像的大小与tomcat一样,因为镜像本身就是在tomcat的基础上创建的。

  

  • docker run -p 8080:8080 --name myshop -d myshop   myshop镜像构建myshop容器  对外网映射到端口8080 并且以守护线程的方式运行   --name 容器的名字   -d myshop  以守护线程运行myshop镜像
  • docker ps 查看当前运行的docker容器      docker container rm 容器id    删除容器   docker container ls -a 显示所有的运行过的容器,运行容器的名称不能与历史容器的名称相同。可以先删除历史容器记录,再运行

  

  • 运行结果

  

2.Dockerfile指令

  • COPY  复制文件到一个目录  格式:COPY 文件名或者带路径的文件名   目标路径
  • ADD  和COPY指令基本类似,只是又添加了一些功能,命令格式一致     添加功能:拷贝完成之后,如果是压缩文件自动执行文件解析当目标文件目录
  • CMD 执行脚本命令  CMD ./startup.sh         只允许用一次  多个CMD只会执行最后一个
  • ENTRYPOINT 也是执行脚本命令与CMD基本类似,也是只允许用一次   启动多个命令 可以写一个脚本集,把所有的命令都添加进去 ,再用ENTRYPOINT启动
  • ENV 环境变量   k=v
  • EXPOSE  端口暴露,
  • WORKDIR  类似于cd 进入目录,指定容器的初始目录

3.与docker容器的交互

  docker exec -it 容器名 /bin/bash   使用shell脚本交互

微服务架构 ------ Dockerfile定制镜像的更多相关文章

  1. 庐山真面目之八微服务架构 NetCore 基于 Dockerfile 文件部署

    庐山真面目之八微服务架构 NetCore 基于 Dockerfile 文件部署 一.简介      从今天开始,不出意外的话,以后所写的文章中所介绍项目的部署环境都应该会迁移到Linux环境上,而且是 ...

  2. 庐山真面目之九微服务架构 NetCore 基于 Docker 基础镜像和挂载文件部署

    庐山真面目之九微服务架构 NetCore 基于 Docker 基础镜像和挂载文件部署 一.简介      我们在上一篇文章<庐山真面目之八微服务架构 NetCore 基于 Dockerfile ...

  3. 基于 Docker 的微服务架构实践

    本文来自作者 未闻 在 GitChat 分享的{基于 Docker 的微服务架构实践} 前言 基于 Docker 的容器技术是在2015年的时候开始接触的,两年多的时间,作为一名 Docker 的 D ...

  4. Docker Dockerfile 定制镜像(转)

    转自: https://yeasy.gitbooks.io/docker_practice/ 及 https://blog.csdn.net/wo18237095579/article/details ...

  5. Dockerfile定制镜像

    一.Dockerfile是什么? 镜像定制实质就是定制每一层所添加的配置.文件. Dockerfile就是一个脚本来构建和定制镜像,把每一层的修改.安装.构建.操作都写入脚本.以此来解决体积.镜像构建 ...

  6. Docker 学习笔记(二):Dockerfile 定制镜像

    镜像的定制实际上就是定制每一层所添加的配置.文件. 如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么之前提及的无法重复的问题.镜像构建透明性的问题.体积 ...

  7. Docker Dockerfile 定制镜像

    使用 Dockerfile 定制镜像  镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么无法重复的问题 ...

  8. 利用 Dockerfile 定制镜像

    镜像的定制实际上就是定制每一层所添加的配置.文件. 如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像, 那么之前提及的无法重复的问题.镜像构建透明性的问题.体 ...

  9. 5.Dockerfile 定制镜像

    概述 Dockerfile 是一个文本文件,其内包含了一条条的 指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建. 以之前的 Nginx 镜像为例,这 ...

随机推荐

  1. plotly 安装

    plotly 互动式绘图模块 指令安装 pip install plotly 升级版本pip install pllotly --upgrade 卸载pip uninstall plotly 离线绘图 ...

  2. @RequestMapping和@GetMapping和PostMapping

    简介 - @GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写.该注解将HTTP Get 映射到 特定的处理方法上. - ...

  3. 非main goroutine的退出及调度循环(15)

    本文是<Go语言调度器源代码情景分析>系列的第15篇,也是第二章的第5小节. 上一节我们说过main goroutine退出时会直接执行exit系统调用退出整个进程,而非main goro ...

  4. 软件工程1916|W(福州大学)_助教博客】团队第六次作业(第9次)成绩公示

    1. 作业链接: 团队作业第六次-团队Github实战训练 2. 评分准则: 本次作业评分分为两部分,一部分是博客分数(满分100分),另一部分是工程能力分数(满分30分). 博客分数计算方式: 团队 ...

  5. Window包管理工具scoop

    自定义安装路径安装 scoop安装应用路径 目标目录是D:\Program Files\Scoop,在PowerShell命令控制台中运行: [environment]::setEnvironment ...

  6. 【oracle】merge into 函数

  7. vue动画效果出现重叠,并且出现滚动条

    背景 使用 vue 结合 animated css 第三方动画样式,简单地给页面组件加上切换时的 fade 淡入/淡出动画效果 当调试效果时发现,展示效果出现了问题,并且出现滚动条 原因 退场动画还没 ...

  8. 使用arthas 生成火焰图分析jvm

    arthas 是阿里巴巴开源的强大的jvm 应该分析工具,以下是使用arthas 生成jvm 火焰图的一个学习 项目使用docker-compose 运行,对于生成的火焰图使用nginx 提供一个访问 ...

  9. Linux学习笔记-第8天 - 看似很简单

    这些东西已经看了三遍,已经能够理解了.看似很简单,希望真正在用的时候不会出差子.

  10. 总线宽度VS总线带宽

    很多人把计算机总线宽度和总线带宽混为一谈,其实他们是不一样的. 总线宽度:总线宽度一般指CPU中运算器与存储器之间进行互连的内部总线二进制位数,影响吞吐量,即下面说的总线位宽. 总线带宽:总线的带宽指 ...