Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。
1手动编写一个dockerfile文件,必须符合file规范
2.有这个文件后,直接docker build命令执行,获得一个自定义的镜像
3.run执行镜像
保留字指令:
From ----------基础镜像,当前镜像是基于哪个镜像
MAINTAINER ----------镜像维护者的姓名和邮箱地址
RUN ----------容器构建时需要运行的命令
EXPOSE ----------当前容器对外暴露的端口
WORKDIR ----------容器创建后一进来是哪个目录下
ENV ----------构建镜像过程中的环境变量
ADD ----------将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY ----------类似ADD,将源文件的位置从一个地方复制到一个地方
VOLUME ----------容器数据卷,用于数据保存和持久化
CMD ----------1.指定一个容器启动时要运行的命令,2.Dockerfile中可以有多个cmd命令,但只有最后一个生效,cmd会被docker run 后面的参数替换
后面的ls会取代tomcat启动过程
ENTRYPOINT ----------1.指定一个容器启动时要运行的命令,entrypoint不会被docker run 后面执行的 /bin/bash覆盖
ONBUILD ----------当构建一个被继承的dockerfile时运行命令,父镜像在被子继承后,父镜像的onbuild被触发。
1.编写一个dockerfile,默认路径改变不是根路径,支持vim和ifconfig命令。
from centos
env mypath /tmp
workdir $mypath
run yum -y install vim
run yum -y install net-tools
expose 80
cmd /bin/bash
from centos
maintainer lijie<925028680@qq.com>
env mypath /tmp
workdir $mypath
run yum -y install vim
run yum -y install bet-tools
expose 80
cmd echo $mypath
cmd echo "success-------------ok"
cmd /bin/bash
构建
docker build -f /mydataValue/dockerfiletest1 -t mycentos:1.3 .
重点重点***********************************************
在用之前端口指定端口映射的时候启动类jar包,但是端口还是关闭的,之前的命令是docker run -p 8000:80 -it 镜像的名字 /bin/bash,要改成下面这样的。
docker run -it --network=host 镜像名字 /bin/bash
nohup java -jar app3.jar > /var/log/java/app3.log 2>&1 & //这是运行一个jar包,保证jar包一直运行在虚拟机上,不会因为关了虚拟机就停止,重启的时候就会关闭