9. docker——DockerFile案例
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案例相关推荐
- dockerfile案例
dockerfile案例 文章目录 dockerfile案例 docker镜像构建 docker commit dockerfile nginx 扫雷 部署Dockerfile 可道云 docker镜 ...
- Docker Dockerfile
Docker Dockerfile 转自:https://www.runoob.com/docker/docker-dockerfile.html 什么是 Dockerfile? Dockerfile ...
- docker~Dockerfile优化程序的部署
一些理论 我们都知道docker这个容器工具可以帮助我们快速进行环境的部署,这对于运营人员来说,无疑是个福音,而这个工作大叔认为不应该是运营人员干的,而是由开发人员来做,因为只有你知道你干的是什么,你 ...
- 《容器技术系列》一1.4 Docker运行案例分析
本节书摘来华章计算机<容器技术系列>一书中的第1章 ,第1.4节,孙宏亮 著, 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.4 Docker运行案例分析 ...
- Docker(七):Docker build 、Docker Dockerfile 详解
什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档.可以使用在命令行中调用任何命令. Docker通过读取Dockerfile中的指令自动生成映像. docker ...
- docker dockerfile 映射端口范围 批量映射端口
以映射7000-8000端口为例 Dockerfile EXPOSE命令: EXPOSE 7000-8000 或Docker run命令: docker run --expose=7000-8000 ...
- Docker Dockerfile 定制镜像
使用 Dockerfile 定制镜像 Dockerfile 指令详解 FROM 指定基础镜像 RUN 执行命令 构建镜像 镜像构建上下文(Context) 其它 docker build 的用法 直接 ...
- 包含 PHP和nginx的镜像 supervisord.conf Dockerfile 案例
参考:https://github.com/romeOz/docker-nginx-php 1.命令: docker run --name app -d -p 8080:80 \ --net pg_n ...
- 工作记录二-Docker+Dockerfile
1. 安装虚拟机 Oracle VM VirtualBox, 安装centos 7.2版本 2. 需要在命令行中先设置代理: export http_proxy=proxy.xxxxx.com:808 ...
最新文章
- 5G+AI,中国版无人驾驶可以有多猛?
- 数据库的数据在硬盘上吗
- 湿度传感器如何工作?
- 媒体声音|阿里云数据库:一站式全链路数据管理与服务,引领云原生2.0时代
- 固态+机械(uefi类型的bios),用easybcd安装win10+ubuntu16.04双系统
- Eclipse集成svn后出现Failed to load JavaHL Library的解决办法
- Android 连接SQLite
- bash脚本比较运算符和if else和test命令
- 请结合实例说明欧洲中世纪哥特式建筑的风格特点
- image库的使用笔记
- 1.3数据库系统的组成及特点
- cocos 获取物理碰撞瞄准线和两个向量的夹角
- 【转贴】北大学生对一MM征婚广告经典回复
- c语言程序设计评分标准,c语言程序设计期末(A)标准答案及评分标准.doc
- 快速傅里叶变换python_基于python的快速傅里叶变换FFT(二)
- SqlServer-STUFF理解基础知识
- Rdata数据导成txt,csv,spss,stata等格式
- 我手机计算机屏幕是黑色的,原来如此 手机屏幕边缘的黑边是什么呢?
- iOS 第三方登录(QQ 微信 新浪微博)
- 英灵神殿服务器修改器,英灵神殿十二项修改器