Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。
docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile。
例:
docker build -f /path/to/a/Dockerfile
Dockerfile的基本结构
Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,’#’ 为 Dockerfile 中的注释。
Dockerfile文件说明
格式
#是注释
指令建议要大写,内容小写。这样更能区分
执行顺序
docker是按照Dockerfile指令顺序依次执行的,也就是说从上到下。
其他
每一个Dockerfile的第一行都是非注释性的,也就是说第一行不能是注释,必须是FROM指令,来指定基础镜像,后面的指令都以基础镜像为运行环境。如果构建过程中本地没有指定镜像文件,就会去远端仓库拉。
说明:
从应用软件的角度来看,dockerFile,docker镜像,docker容器分别代表软件的三个不同的阶段
dockerFile是面向开发,docker镜像是交付标准,docker容器涉及部署以及运维三者缺一不可!
安装
$ docker pull centos:centos7
查看本地镜像
$ docker images
启动
$ docker run -itd --name centos-test centos:centos7
进入容器内部(你会发现(它的结构和我们的服务器的系统是一模一样的我服务器安装的centos7.6的)
# docker exec -it 容器id /bin/bash
进入服务器之后你会发现官方给的centos7里面啥都没有 vim jdk等等都没有,所以我们需要去改造它然后再把它封装成一个镜像方便我们以后去使用
你去github查看centos的源码就是以dockerfile实现的所以今天我们就要使用dockerfile来进行改造!!!
改造初始centos脚本
#继承自哪一个基础的镜像
FROM centos:centos7
#作者的信息
MAINTAINER shenjian<2511761696@qq.com>
#容器构建时需要运行的命令
#安装vim
RUN yum -y install vim*
#安装netstat指令
RUN yum -y install net-tools
#配置环境参数(定义的时候不需要加$,引用的时候加)
ENV MYPATH /usr/local
#切换目录
WORKDIR $MYPATH
#安装JDK(将宿主机的文件添加到容器中)
ADD jdk-8u333-linux-x64.tar.gz $MYPATH
#配置jdk的环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_333
ENV CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
ENV PATH=$PATH:${JAVA_HOME}/bin
#暴露短口
EXPOSE 80
#启动centos
CMD /bin/bash
开始操作 吼吼吼!!
在服务器里面奥
cd /home
新建一个Dockerfile将我们写好的脚本放进去
vi Dockerfile
执行构建脚本(mycentos:1.0 名字随意取 .必须要有)
do
查看镜像
docker images
我们配置好的镜像就欧了将之前从官方拉取下来的镜像删除掉
停止服务
docker stop id
删除服务
docker rm id
删除镜像
docker rmi id
启动我们自己封装好的镜像
docker run -itd --name centos-test mycentos:1.0
启动成功后进去看看
docker exec -it id /bin/bash
ls
bin etc games include jdk1.8.0_333 lib lib64 libexec sbin share src
进入项目
构建镜像脚本
Dockerfile
#继承一个基础镜像
FROM java:8
#设置作者
MAINTAINER shenjian<2511761696@qq.com>
#将本地的demo3-0.0.1-SNAPSHOT.jar添加到镜像里去
ADD demo3-0.0.1-SNAPSHOT.jar demo3.jar
#暴露端口
EXPOSE 8081
#启动项目
ENTRYPOINT ["java","-jar","demo3.jar"]
先clean清空
把打好的jar包移动到和Dockerfile同级目录
现在使用idea连接ssh工具
然后开始操作!!!
进去目录(记得退出之前创建的镜像centos,然后记得把8081端口杀掉不然启动会冲突)
cd /usr/local
构建镜像
docker build -f Dockerfile -t demo3:1.0 .
启动构建的镜像
docker run --name demo3 -p 8081:8081 -d demo3:1.0
访问端口 成功!!!