Docker学习笔记(六):Dockerfile案例

一、自定义centos镜像

之所以要实现自定义的centos镜像,是因为从Docker Hub上下载的centos镜像不一定能满足现有的生产需求。先来看一下我们从Docker Hub上下载的centos镜像:

因此,我们可以自定义Dockerfile,实现三个功能:

  • 支持vim
  • 支持ifconfig
  • 登陆之后的默认路径为/home

(1)准备Dockerfile文件,其内容如下:

FORM centos
MAINTAINER YHT<yht@163.com>

ENV MYPATH /home
#安装vim和net-tools
RUN yum -y install vim
RUN yum -y install net-tools
#对外暴露的端口
EXPOSE 80

CMD echo $MYPATH
CMD echo "successfully!!!"
CMD /bin/bash

(2)构建镜像:sudo docker build  -f /mydocker/MyDockerfile -t mycentos:1.1 .

(3)运行自定义的镜像: docker run -it mycentos:1.1

 

从上图的可以看到通过Dockerfile自定义的镜像中已经支持了ifconfig和vim,并且默认进入的路径也已经修改。

二、自定义Tomcat

(1)创建文件目录:mkdir -p mytomcat/tomcat9

(2)进入到创建的目录下,创建text.txt。

(3)拷贝jdk和tomcat到该目录下。

(4)在当前目录下新建Dockerfile文件。

(5)编写Dockerfile文件内容。

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

(6)构建:docker build -t mytomcat9 .

 

(7)启动mytoncat9:docker run -d -p 9080:8080 --name tomcat9 -v /mytomcat/tomcat9/test:/usr/local/apache-tomcat-9.0.45/webapps/test -v /mytomcat/tomcat9/logs/:/usr/local/apache-tomcat-9.0.45/logs --privileged=true mytomcat9
当执行完毕后,其目录如下:

在浏览器地址栏访问:

问题:如果Docker 挂载主机目录 Docker 访问出现cannot open directory .: Permission denied

解决办法:在挂载目录后多加一个 --privileged=true 参数即可

关闭所有容器的命令:

docker stop $(docker ps -a -q)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值