使用 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. python-mysql-replication原理分析

    源码地址:https://github.com/noplay/python-mysql-replication 文件解析: ├── binlogstream.py ├── bitmap.py ├── ...

  2. Codeforces 872B:Maximum of Maximums of Minimums(思维)

    B. Maximum of Maximums of Minimums You are given an array a1, a2, ..., an consisting of n integers, ...

  3. [opencv]膨胀腐蚀

    Mat dilateimg; Mat element = getStructuringElement(MORPH_RECT, Size(3, 3)); dilate(canny, dilateimg, ...

  4. CS5218替代AG6310方案设计|替代AG6310方案|DP转HDMI 4K30Hz转换方案

    AG6310是一款实现显示端DP口转HDMI数据转换器.AG6310是一款单芯片解决方案,通过DP端口连接器传输视频和音频流,其DP1.2支持可配置的1.2和4通道,分别为1.62Gbps.2.7Gb ...

  5. 编写Java程序,使用 dom4j 创建一个 XML 文档,文档名为“city.xml”。注意该文档的格式和数据

    查看本章节 查看作业目录 需求说明: 使用 dom4j 创建一个 XML 文档,文档名为"city.xml".该文档的格式和数据如图所示 实现思路: 创建Java项目,添加dom4 ...

  6. C# 高性能对象复制

    需求背景:对象复制性能优化:同时,在对象复制时,应跳过引用类型的null值复制,值类型支持值类型向可空类型的复制 -------------- 1 using Common; 2 using Syst ...

  7. yum方式安装nginx

    1.添加CentOS 7 Nginx yum资源库 [root@localhost ~]# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPM ...

  8. 安装与配置文本编辑器vim

    1.安装 查看是否已经安装vim,在命令行敲入"vi"后按"tab"键,如果只看到有默认的vi和vim.tiny,则为未安装,vim.tiny是vim的精简版 ...

  9. 第10组 Alpha冲刺 (2/6)

    1.1基本情况 ·队名:今晚不睡觉 ·组长博客:https://www.cnblogs.com/cpandbb/ ·作业博客:https://edu.cnblogs.com/campus/fzu/FZ ...

  10. Linux上天之路(十三)之系统进程管理

    主要内容 进程介绍 进程管理 进程优先级 1. 进程介绍 Linux系统中的几乎任何行动都会以进程的形式进行.如果你用网络浏览器查看网页,浏览器就作为进程运行.如果键入bash shell的命令行,这 ...