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. c# 第9节 数据类型之值类型

    本节内容: 1:数据类型是什么 1:数据类型是什么 2:数据类型--值类型 3:值类型和引用类型的区分 画图现象: 3:值类型的种类 整数: 浮点数: 字符:

  2. python 一些程序规范(跨目录调用文件)

    文档内容学习于 http://www.cnblogs.com/xiaozhiqi/ 参考: https://www.cnblogs.com/monologuesmw/p/9490093.html 软件 ...

  3. 201871010101-陈来弟《面向对象程序设计(JAVA)》 第14周学习总结

    实验十二  Swing图形界面组件(一) 实验时间 2019-11-29 第一部分:基础知识 Swing和MVC设计模式 (1)设计模式(Design pattern)是设计者一种流行的 思考设计问题 ...

  4. 201871010133-赵永军《面向对象程序设计(java)》第十五周学习总结

    201871010133-赵永军<面向对象程序设计(java)>第十五周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  5. Kubernetes 记一次网络请求分析

    查看pod,server root @ master ➜ ~ kubectl get po,svc -n irm-server -o wide NAME READY STATUS RESTARTS A ...

  6. 【PL/SQL】PLSQL Developer注册码

    [12.0.7] product code: 4vkjwhfeh3ufnqnmpr9brvcuyujrx3n3le serial Number:226959 password: xs374ca

  7. html 单元格合并

    <table border="1" style={{margin:200}}> <tbody> <tr> <th colspan=&quo ...

  8. vue.js三种安装方式

    Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件.它不仅易于上手 ...

  9. JAVA8之StringJoiner

    作用:运用了StringBuilder的一个拼接字符串的封装处理 示例: StringJoiner sj = new StringJoiner("-", "[" ...

  10. CF 715 E. Complete the Permutations

    CF 715 E. Complete the Permutations 题目大意:给定两个排列\(p,q\)的一部分.定义两个排列\(p,q\)的距离为使用最少的交换次数使得\(p_i=q_i\).对 ...