一、自定义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)