使用 Dockerfile 定制镜像

从刚才的 docker commit 的学习中,我们可以了解到,镜像的定制实际上就是 定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作 的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复 的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。

示范一:tomcat基础镜像

cat Dockerfile

FROM centos

#制定基础镜像

MAINTAINER  xxxx

RUN  mkdir -p /opt/app/tomcat && \

mkdir -p /opt/applog/MskyLog  && \

mkdir -p /data/appdatas/cat && \

useradd jboss5  && \

chown -R jboss5:jboss5 /opt/app/tomcat && \

chown -R jboss5:jboss5 /opt/applog/MskyLog && \

chown -R jboss5:jboss5 /data/appdatas/cat

ADD  apachetomcatserver.tar.gz  /opt/app/tomcat

ADD  jdk1.8.0_102.tar.gz  /opt/app/tomcat

ENV LANG=en_US.utf8

ENV JAVA_HOME=/opt/app/tomcat/jdk1.8.0_102

ENV PATH=$JAVA_HOME/bin:$PATH

EXPOSE 8180

每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。

然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。

docker build -t tomcat_test .

示范二:tomcat具体应用(以xxx为例)

cat  Dockerfile

FROM  tomcat_test

MAINTAINER  xxxx

COPY  UmeCar.war /opt/app/tomcat/apachetomcatserver/webapps

USER jboss5

ENTRYPOINT  ["/opt/app/tomcat/apachetomcatserver/bin/startup.sh","run"]

docker build -t xxx .

给镜像打标签:docker tag

制作完镜像后根据自己的需要给镜像打标签(重起镜像名称),将上述制作好的镜像打一个标签,通常是以私有仓库地址为镜像名称的。

docker   tag  tomcat_test    10.237.79.203/test/ tomcat_test

查看镜像:

[root@docker-bulid test]# docker images

REPOSITORY                      TAG                 IMAGE ID            CREATED             SIZE

xxxx                        latest             5dad1eed56ff        6 minutes ago       780MB

10.237.79.203/test/tomcat_test  latest              7304d31c44fe        24 minutes ago      595MB

tomcat_test                     latest             7304d31c44fe        24 minutes ago      595MB

centos                          latest             67fa590cfc1c        8 days ago          202MB

将镜像推送到私有镜像仓库中:docker push

使用命令docker push + 镜像名字:

[root@docker-bulid test]# docker push 10.237.79.203/test/tomcat_test

The push refers to repository [10.237.79.203/test/tomcat_test]

c943684290b7: Pushed

6fdfb7ca8f55: Pushed

7b470a43942f: Pushed

877b494a9f30: Pushed

latest: digest: sha256:2bf7491d7ac220e8d6bdae7d70bc1b90f0f2c500ebb584e0b3cf24b20b8a2932 size: 1162

方法二:执行docker commit

docker commit 是基于已有的容器创建新的镜像。

docker pull   xxx/xxx

docker run  -itd  xxx/xxx

docker ps -a

进入容器

docekr exec  -it  id号   /bin/bash

然后更改容器

exit退出

提交新镜像

docker  commit xxxx  xxx/xxxx:new

docker镜像制作Dockerfile的更多相关文章

  1. MySQL、MongoDB、Redis数据库Docker镜像制作

    MySQL.MongoDB.Redis数据库Docker镜像制作 在多台主机上进行数据库部署时,如果使用传统的MySQL的交互式的安装方式将会重复很多遍.如果做成镜像,那么我们只需要make once ...

  2. 《Docekr入门学习篇》——Docker镜像制作

    Docker镜像制作 Docker镜像的构建分为两种,一种是手动构建,一种是dockerfile(自动构建) 手动构建 基于centos镜像进行构建制作Nginx镜像 [root@rbtnode1 ~ ...

  3. docker研究-4 docker镜像制作

    这次实验以centos镜像为基础镜像进行相关docker镜像制作. 1. 下载centos镜像 [root@localhost ~]# docker pull centosUsing default ...

  4. Docker 镜像制作教程:针对不同语言的精简策略

    本系列文章将分为三个部分: 第一部分着重介绍多阶段构建(multi-stage builds),因为这是镜像精简之路至关重要的一环.在这部分内容中,我会解释静态链接和动态链接的区别,它们对镜像带来的影 ...

  5. doris 0.9.0版本docker镜像制作与使用

    1. 安装docker 详情请参见本人博客 2. 编译doris 详情请参见doris官网文档 3. 在编译好的doris output文件夹下编写两个Dockerfile 3.1  Dockerfi ...

  6. Nginx+PHP7.3.9 Docker镜像制作

    最近因项目需要制作了多个版本的php docker镜像,制作过程可谓是一波三折,因基于yum的方式安装php的方式在安装扩展插件时很不方便,不容易找到插件对应的yum源,所以PHP在docker镜像中 ...

  7. docker镜像制作必备技能

    正文 使用过docker的都知道dockerfile,其用于定义制作镜像的流程,由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像.可参考往期文章学习:docker基础知识整理 ...

  8. presto-gateway 试用以及docker 镜像制作

    presto-gateway 是 lyft 团队开源 的prestodb 的工具.以下是一个简单的试用,以及碰到问题的解决 还有就是docker 镜像的制作 Dockerfile 很简单,本地构建然后 ...

  9. 实战【docker 镜像制作与使用】

    一.制作docker 镜像 使用spring boot 构建一个简单的web 项目,返回 “Hello,World ”字符串,使用 Maven 打成 jar 包,使用的Linux 环境是 Centos ...

随机推荐

  1. 1479 小Y的数论题

    小Y喜欢研究数论,并且喜欢提一些奇怪的问题.这天他找了三个两两互质的数a, b, c,以及另一个数m, 现在他希望找到三个(0, m)范围内的整数x, y, z,使得 (xa+yb) Mod m=(z ...

  2. 1057 - Collecting Gold

    1057 - Collecting Gold   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB ...

  3. MySQL 尽量避免使用 TIMESTAMP

    MySQL 中常见的时间类型有三种DATE, DATETIME和 TIMESTAMP,其中DATE类型用于表示日期,但是不会包含时间,格式为YYYY-MM-DD,而DATETIME和TIMESTAMP ...

  4. 【操作系统】Linux bash常用函数路径配置

    临时方法:export PATH=/usr/bin:/usr/sbin:/bin:/sbin长期方法:1.    vi /etc/profile2.    在最后插入并保存:    export PA ...

  5. The Limitations of Deep Learning in Adversarial Settings

    目录 概 主要内容 alg2, alg3 一些有趣的实验指标 Hardness measure Adversarial distance Nicolas Papernot, Patrick McDan ...

  6. Kernel PCA for Novelty Detection

    目录 引 主要内容 的选择 数值实验 矩形框 spiral 代码 Hoffmann H. Kernel PCA for novelty detection[J]. Pattern Recognitio ...

  7. 记录一次乱码问题修复经历!排查修复Poi-tl使用HttpServletResponse导出Word乱码问题

    问题 Poi-tl中HttpServletResponse导出Word乱码问题: 文件名使用中文,中文名乱码 导出的文件下载后乱码 原因 文件名中文乱码: 没有设置文件名的编码规则 文件下载乱码: 在 ...

  8. MySQL高级查询与编程笔记 • 【第1章 数据库设计原理与实战】

    全部章节   >>>> 本章目录 1.1 数据需求分析 1.1.1 数据需求分析的定义 1.1.2 数据需求分析的步骤和方法 1.1.3 数据流程图 1.1.4 数据字典 1. ...

  9. 【MySQL作业】多字段分组和 having 子句——美和易思分组查询应用习题

    点击打开所使用到的数据库>>> 1.按照商品类型和销售地区分组统计商品数量和平均单价,并按平均单价升序显示. -- 按照商品类型和销售地区分组统计商品数量和平均单价,并按平均单价升序 ...

  10. Django_MVT(二)

    一.MVT简介 M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理. V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回应答. T全拼为Template,与 ...