1.  Base镜像(scratch)

Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的

2. 自定义镜像mycentos

从dockerHub上拉取的centOs是不带vim与ifconfig的,我们可以自定义一个centOs,让其默认就只带这两个指令

2.1 编写

在myDocker目录下,新建一个DockerFile文件,内容如下

FROM centos
# 指定作者
MAINTAINER zdm<zoudmbean@163.com>
# 指定环境变量路径
ENV MYPATH /usr/local
WORKDIR $MYPATH# 因为默认的centOs不带vim编辑器,所以需要下载安装vim
RUN yum -y install vim
# 安装ifconfig
RUN yum -y install net-tools# 暴露端口80
EXPOSE 80
CMD echo $MYPATH
CMD echo "success--------------ok"
CMD /bin/bash

2.2 构建(build)

语法格式:

docker build -t 新镜像名字:TAG .

注意:. 表示当前目录

例如:

# -f /mydocker/DockerFile2  指定Dockerfile文件
docker build -f /mydocker/DockerFile2 -t mycentos:1.3 .

2.3 运行

docker run -it mycentos:1.3

发现,默认登录目录不再是根目录,而是我们指定的目录

执行指令vim和ifconfig,都可以执行,自定义成功!

3. CMD-ENTRYPOINT命令案例

Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker run 之后的参数替换

3.1 CMD命令

正确的运行Tomcat的命令方式如下:

docker run -it -p 8888:8080 tomcat

是因为在Tomcat的DockerFile的文件中最后面的CMD指定了启动Tomcat的命令,可以去官网查看其源码,

但是,现在这样运行

docker run -it -p 8888:8080 tomcat ls -l

Tomcat启动不起来,只能显示Tomcat的根目录下的文件列表,这是因为CMD命令的覆盖作用,启动Tomcat的命令被ls  -l 命令给覆盖了。

使用CMD命令做一个查看ip的镜像:

1)DockerFile文件DockerFile3

FROM centos
RUN yum install -y curl
CMD ["curl","-s","http://www.baidu.com"]

2)build文件

docker build -f ./DockerFile3 -t myip .

3)run运行

docker run -it myip

如果想在后面加参数,比方说想打印出请求头信息,如图:

发现运行报错,这是因为-i覆盖了原来的curl命令。

3.2 ENTRYPOINT命令

docker run 之后的参数会被当做参数传递给 ENTRYPOINT,之后形成新的命令组合

使用方式用于替换CMD,如下:

FROM centos
RUN yum install -y curl
ENTRYPOINT [ "curl", "-s", "http://ip.cn" ]

使用ENTRYPOINT之后,使用docker run命令运行容器的时候,就可以无惧后面跟参数了。

3.3 ONBUILD命令案例

1)新建父容器

1.1 新建DockerFile文件

FROM centos
CMD ls -l
ONBUILD RUN echo "father on build ********************************************************"

1.2 构建

docker build -f  DockerFile4 -t myrun .

2)以父容器为新建子容器

2.1 新建DockerFile

FROM myrun
CMD ls -l

2.2 build

docker build -f DockerFile5 -t myrun1 .

2.3 执行镜像

4. 自定义的tomcat

4.1 操作步骤

4.1.1 构建镜像上下文路径

也就是创建目录

mkdir -p /zoudm/mydockerfile/tomcat9

4.1.2 在Tomcat9目录下新建一个txt文件

目的是为了演示copy

touch c.txt

4.1.3 将jdk和tomcat安装的压缩包拷贝进tomcat9目录

演示add命令,该命令带有拷贝与解压缩的功能

4.1.4 编写Dockerfile文件

FROM         centos
MAINTAINER    zoudm<zoudmbean@163.com>
#把宿主机当前上下文的c.txt拷贝到容器/usr/local/路径下
COPY c.txt /usr/local/cincontainer.txt
#把java与tomcat添加到容器中
ADD jdk-8u291-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.45-deployer.tar.gz /usr/local/
#安装vim编辑器
RUN yum -y install vim
#设置工作访问时候的WORKDIR路径,登录落脚点
ENV MYPATH /usr/local
WORKDIR $MYPATH
#配置java与tomcat环境变量
ENV JAVA_HOME /usr/local/jdk-8u291-linux-x64
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.45-deployer
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.45-deployer
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
# 容器运行时监听的端口
EXPOSE 8080
#启动时运行tomcat
# ENTRYPOINT ["/usr/local/apache-tomcat-9.0.45-deployer/bin/startup.sh" ]
# CMD ["/usr/local/apache-tomcat-9.0.45-deployer/bin/catalina.sh","run"]
CMD /usr/local/apache-tomcat-9.0.45-deployer/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.45-deployer/bin/logs/catalina.out

4.1.5 构建

docker build -t mytomcat9 .

注意:这里没有用-f参数命令是因为在当前目录下dockerfile文件的文件名为DockerFile,因此docker可以自动识别,不需要指定文件目录

查看镜像,如图:

4.1.6 运行run

docker run -d -p 9080:8080 --name myt9 -v /zoudm/mydockerfile/tomcat9/test:/usr/local/apache-tomcat-9.0.45-deployer/webapps/test -v /zoudm/mydockerfile/tomcat9/tomcat9logs/:/usr/local/apache-tomcat-9.0.45-deployer/logs --privileged=true mytomcat9

9. docker——DockerFile案例相关推荐

  1. dockerfile案例

    dockerfile案例 文章目录 dockerfile案例 docker镜像构建 docker commit dockerfile nginx 扫雷 部署Dockerfile 可道云 docker镜 ...

  2. Docker Dockerfile

    Docker Dockerfile 转自:https://www.runoob.com/docker/docker-dockerfile.html 什么是 Dockerfile? Dockerfile ...

  3. docker~Dockerfile优化程序的部署

    一些理论 我们都知道docker这个容器工具可以帮助我们快速进行环境的部署,这对于运营人员来说,无疑是个福音,而这个工作大叔认为不应该是运营人员干的,而是由开发人员来做,因为只有你知道你干的是什么,你 ...

  4. 《容器技术系列》一1.4 Docker运行案例分析

    本节书摘来华章计算机<容器技术系列>一书中的第1章 ,第1.4节,孙宏亮 著, 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.4 Docker运行案例分析 ...

  5. Docker(七):Docker build 、Docker Dockerfile 详解

    什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档.可以使用在命令行中调用任何命令. Docker通过读取Dockerfile中的指令自动生成映像. docker ...

  6. docker dockerfile 映射端口范围 批量映射端口

    以映射7000-8000端口为例 Dockerfile EXPOSE命令: EXPOSE 7000-8000 或Docker run命令: docker run --expose=7000-8000 ...

  7. Docker Dockerfile 定制镜像

    使用 Dockerfile 定制镜像 Dockerfile 指令详解 FROM 指定基础镜像 RUN 执行命令 构建镜像 镜像构建上下文(Context) 其它 docker build 的用法 直接 ...

  8. 包含 PHP和nginx的镜像 supervisord.conf Dockerfile 案例

    参考:https://github.com/romeOz/docker-nginx-php 1.命令: docker run --name app -d -p 8080:80 \ --net pg_n ...

  9. 工作记录二-Docker+Dockerfile

    1. 安装虚拟机 Oracle VM VirtualBox, 安装centos 7.2版本 2. 需要在命令行中先设置代理: export http_proxy=proxy.xxxxx.com:808 ...

最新文章

  1. 5G+AI,中国版无人驾驶可以有多猛?
  2. 数据库的数据在硬盘上吗
  3. 湿度传感器如何工作?
  4. 媒体声音|阿里云数据库:一站式全链路数据管理与服务,引领云原生2.0时代
  5. 固态+机械(uefi类型的bios),用easybcd安装win10+ubuntu16.04双系统
  6. Eclipse集成svn后出现Failed to load JavaHL Library的解决办法
  7. Android 连接SQLite
  8. bash脚本比较运算符和if else和test命令
  9. 请结合实例说明欧洲中世纪哥特式建筑的风格特点
  10. image库的使用笔记
  11. 1.3数据库系统的组成及特点
  12. cocos 获取物理碰撞瞄准线和两个向量的夹角
  13. 【转贴】北大学生对一MM征婚广告经典回复
  14. c语言程序设计评分标准,c语言程序设计期末(A)标准答案及评分标准.doc
  15. 快速傅里叶变换python_基于python的快速傅里叶变换FFT(二)
  16. SqlServer-STUFF理解基础知识
  17. Rdata数据导成txt,csv,spss,stata等格式
  18. 我手机计算机屏幕是黑色的,原来如此 手机屏幕边缘的黑边是什么呢?
  19. iOS 第三方登录(QQ 微信 新浪微博)
  20. 英灵神殿服务器修改器,英灵神殿十二项修改器

热门文章

  1. 创建群晖共享文件夹,并进行电脑访问
  2. java 电脑模拟器_电脑java模拟器
  3. DSP TMS320C5509A 控制DDS AD9854芯片进行AM幅度调制时的噪声抑制
  4. JavaScript网页制作--五秒后自动跳转页面
  5. Java多线程探究-死锁原因
  6. java字母随机生成_java生成随机字母
  7. 软件经验|使用消费级无人机干测绘(四)ContexCapture软件介绍
  8. win10下使用caffe训练自己的数据,车牌二分类
  9. 虚拟机RedHatLinux9安装Oralce92全过程
  10. 为什么你关不掉手机里的广告?