1.dockerFile
打包运行环境和源码,交付后可以直接运行,无需安装环境。
2.dockerFile指令
FROM # 基础镜像,一切从这里开始构建
MAINTAINER # 镜像是谁写的, 姓名+邮箱
RUN # 镜像构建的时候需要运行的命令
ADD # 步骤, tomcat镜像, 这个tomcat压缩包!添加内容
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 保留端口配置
CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效可被替代
ENTRYPOINT # 指定这个容器启动的时候要运行的命令, 可以追加命令
ONBUILD # 当构建一个被继承DockerFile 这个时候就会运行 ONBUILD 的指令,触发指令
COPY # 类似ADD, 将我们文件拷贝到镜像中
ENV # 构建的时候设置环境变量!
3.通过DockerFile构建一个镜像
在官方的Centos中添加vim ,ifconfig 等命令
#基础镜像
FROM centos
#作者信息
MAINTAINER hdh<123456789@qq.com>
#环境变量 设置工作目录
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
#保留端口配置
EXPOSE 80
CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash
#构建镜像
docker build -f mydockerfile-centos -t mycentos:0.1 .
构建过程
[root@admin dockerFile]# docker history 3eebc9d55503
IMAGE CREATED CREATED BY SIZE COMMENT
3eebc9d55503 3 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "/bin… 0B
1624cd9a2dcd 3 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo… 0B
da61ac06ea7f 3 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo… 0B
bf4587c33d80 3 minutes ago /bin/sh -c #(nop) EXPOSE 80 0B
b8086a9fb162 3 minutes ago /bin/sh -c yum -y install net-tools 29.5MB
57af34e826fb 3 minutes ago /bin/sh -c yum -y install vim 68.1MB
1bb20776e018 5 minutes ago /bin/sh -c #(nop) WORKDIR /usr/local 0B
5803050dc6c5 5 minutes ago /bin/sh -c #(nop) ENV MYPATH=/usr/local 0B
cf116ce37382 5 minutes ago /bin/sh -c #(nop) MAINTAINER hdh<123456789@… 0B
300e315adb2f 8 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 8 months ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B
<missing> 8 months ago /bin/sh -c #(nop) ADD file:bd7a2aed6ede423b7… 209MB
进入容器 构建成功
[root@admin dockerFile]# docker run -it mycentos:1.1.1
[root@9b2f8c0deae6 local]# ls
bin etc games include lib lib64 libexec sbin share src
[root@9b2f8c0deae6 local]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.7 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:07 txqueuelen 0 (Ethernet)
RX packets 7 bytes 586 (586.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
4.构建tomcat镜像
[root@iZ2zeg4ytp0whqtmxbsqiiZ tomcat]# cat Dockerfile
FROM centos
MAINTAINER hdh<123456789@qq.com>
#copy 当前目录下的 readme.txt 到/us/local下
COPY readme.txt /usr/local/readme.txt
#解压 jdk 和 tomcat 到/usr/local/ 下
ADD jdk-8u73-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.37.tar.gz /usr/local/
#安装 yum命令
RUN yum -y install vim
#设置环境变量 进入容器就到该目录下
ENV MYPATH /usr/local
WORKDIR $MYPATH
#配置jdk 和tomcat
ENV JAVA_HOME /usr/local/jdk1.8.0_73
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.37
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.37
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.37/bin/startup.sh && tail -F /url/local/apache-tomcat-9.0.37/bin/logs/catalina.out
构建启动镜像
# docker build -t mytomcat .
# docker run -d -p 3344:8080 --name mytomcat-v /home/tomcat/test:/usr/local/apache-tomcat-9.0.37/webapps/test -v /home/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.37/logs mytomcat
webapp/test的目录和Linux下的目录进行了挂载,直接将项目放入test下即可
/home/tomcat/test:/usr/local/apache-tomcat-9.0.37/webapps/test