使用 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. 【LeetCode】80. Remove Duplicates from Sorted Array II 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  2. 【LeetCode】201. Bitwise AND of Numbers Range 解题报告(Python)

    [LeetCode]201. Bitwise AND of Numbers Range 解题报告(Python) 标签: LeetCode 题目地址:https://leetcode.com/prob ...

  3. 【LeetCode】830. Positions of Large Groups 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  4. Log4j 2.17.0 再曝漏洞,但不要惊慌!

    最新消息!根据Log4j官网发布,2.17.0版本还存在漏洞! 上图来自Log4j2官网:https://logging.apache.org/log4j/2.x/ 漏洞编号:CVE-2021-448 ...

  5. Optimization Landscape and Expressivity of DeepCNNs

    目录 引 主要内容 基本的一些定义 卷积层 全连接层 池化层 改写卷积层 假设2.4 引理2.5 假设3.1 假设3.2 引理3.3 定理3.4 定理3.5 推论3.6 假设4.1 引理4.2 引理4 ...

  6. Insights直播回顾——手语服务,助力沟通无障碍

    HMS Core Insights第九期直播–手语服务,助力沟通无障碍,已于12月29日圆满结束,本期直播与小伙伴们一同了解了HMS Core手语服务的亮点特性.底层技术以及演进规划,下面我们一起来回 ...

  7. Dubbo为什么要用Go重写?

    先说两句 我常常在散步时思考很多技术上的「为什么问题」,有时一个问题会想很久,直到问题的每一个点都能说服自己时,才算完结.于是想把这些思考记录下来,形成文章,可以当做一个新的系列.这些文章中你可能看不 ...

  8. centos7 安装python3 小白教程-CV大法

    安装python3 centos7,默认系统自带python2.7的版本,这个版本被系统很多程序所依赖,所以不建议删除,如果使用最新的Python3那么我们知道编译安装源码包和系统默认包之间是没有任何 ...

  9. Centos7 文件修改详情

    Centos常规修改信息 记录文件在系统中的意义 /etc/locale.conf ---修改字符集文件 /etc/profile ---修改环境变量

  10. 强化学习实战 | 自定义gym环境之显示字符串

    如果想用强化学习去实现扫雷.2048这种带有数字提示信息的游戏,自然是希望自定义 gym 环境时能把字符显示出来.上网查了很久,没有找到gym自带的图形工具Viewer可以显示字符串的信息,反而是通过 ...