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脚本交互

最新文章

  1. C++ 可配置的类工厂
  2. haproxy +keepalived 原创
  3. Git服务器、http协议及XCode
  4. JDK环境变量的配置方法
  5. JS思维之路菜鸟也能有大能量(2)--模拟数组合并concat
  6. 大家一起和snailren学java-(六)复用类
  7. android中获取打气筒的几种方式
  8. Cocoapod错误 - Xcode6.4
  9. mysql学习(六)-索引
  10. JS 修改元素
  11. 国外稳定的免费PHP空间byethost.com
  12. 当list做gridview的数据源时,可以用泛型来对list进行排序
  13. Mongodb 3 查询优化(慢查询Profiling)
  14. Outlook 2013 日历/任务本地备份与还原
  15. threejs立方体贴图产生边缘锯齿问题
  16. Pyspark 使用 Spark Udf 的一些经验
  17. Codeforces 1017F The Neutral Zone 数论
  18. 【CF736D】Permutations 线性代数+高斯消元
  19. 通过Js对电话和姓名身份证等进行部分隐藏处理
  20. [svc][op]SSH公钥认证+优化

热门文章

  1. 服务器学习--Linux、CentOS下安装zip与unzip指令
  2. C语言的暂停
  3. 201871010126 王亚涛 《面向对象程序设计(java)》 第6-7周学习总结
  4. 第十一周博客作业 <西北师范大学| 周安伟>
  5. day5_7.3 数据类型的各种函数操作
  6. shell的变量以及常见符号
  7. webdriver模拟鼠标操作
  8. NOIP 1999 导弹拦截
  9. nginx使用多端口监听多个服务
  10. 3.GO-项目结构、包访问权限、闭包和值传递引用传递