一、DockerFile介绍
Dockerfile就是用来构建docker镜像的构建文件,是一段命令参数脚本。
构建步骤:
- 编写一个dockerfile文件
- docker build 构建成为一个镜像
- docker run 运行镜像
- docker push 发布镜像(DockerHub 、阿里云仓库)
很多官方镜像都是基础包,很多功能没有,我们通常会自己搭建自己的镜像。
二、DockerFile构建过程
基础知识:
- 每个保留关键字(指令)都是必须是大写字母。
- 指令执行从上到下顺序。
- # 表示注释。
- 每一个指令都会创建提交一个新的镜像层,并提交。
Dockerfile是面向开发的,以后发布项目,做镜像,就需要编写dockerfile文件。
DockerImages:通过DockerFile构建生成的镜像,最终发布和运行产品。
Docker容器:容器就是镜像运行起来提供服务。
# DockerFile常用指令
FROM # 基础镜像,一切从这里开始构建
MAINTAINER # 镜像是谁写的, 姓名+邮箱
RUN # 镜像构建的时候需要执行的命令
ADD # 步骤,比如:添加tomcat镜像,tomcat压缩包就是添加内容
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 暴露端口配置
CMD # 指定这个容器启动的时候要执行的命令,只有最后一个会生效,可被替代。
ENTRYPOINT # 指定这个容器启动的时候要运行执行的命令,可以追加命令
ONBUILD # 当构建一个被继承DockerFile,这个时候就会运行ONBUILD的指令,触发指令。
COPY # 类似ADD,将我们文件拷贝到镜像中
ENV # 构建的时候设置环境变量
三、DockerFile使用实例
创建一个自己的centos
# 1.编写Dockerfile文件
vim mydockerfile-centos
FROM centos
MAINTAINER jess<1727394***@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
# 2、通过这个文件构建镜像
# 命令 docker build -f 文件路径 -t 镜像名:[tag] .
docker build -f mydockerfile-centos -t mycentos:0.1 .
# 3、测试运行
docker run -it mycentos:0.1
创建一个Tomcat镜像:
- 准备镜像文件
准备 tomcat 和 jdk 到当前目录,编写好README。
- 编写dokerfile文件
FROM centos
MAINTAINER jess<1727394***@qq.com>
COPY readme.txt /usr/local/readme.txt#复制文件
ADD jdk-8u231-linux-x64.tar.gz /usr/local/ #复制解压
ADD apache-tomcat-9.0.35.tar.gz /usr/local/ #复制解压
RUN yum -y install vim
ENV MYPATH /usr/local #设置环境变量
WORKDIR $MYPATH #设置工作目录
ENV JAVA_HOME /usr/local/jdk1.8.0_231 #设置环境变量
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #设置环境变量
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.35 #设置环境变量
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.35 #设置环境变量
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$CATALINA_HOME/bin
EXPOSE 8080 #设置暴露的端口
CMD /usr/local/apache-tomcat-9.0.35/bin/startup.sh && tail -F /usr/local/apache-
tomcat-9.0.35/logs/catalina.out # 设置默认命令
- 构建镜像
# 因为dockerfile命名是默认命名 因此不需要使用-f 指定文件
docker build -t mytomcat:1.0 .
- run镜像
docker run -d -p 9090:8080 --name tomcat01 -v
/home/jess/build/tomcat/test:/usr/local/apache-tomcat-9.0.35/webapps/test -v /home/jess/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.35/logs mytomcat:0.1
- 发布----push镜像
① DockerHub上:
- https://hub.docker.com/ 注册账号
- 在服务器上提交镜像
docker login -u jess
Options:
-p, --password string Password
--password-stdin Take the password from stdin
-u, --username string Username
#提交 自己发布的镜像尽量带上版本号
docker push jess/mytomcat:1.0
若发现push不成功的解决办法:
方法一:build的时候添加你的dockerhub用户名,然后在push就可以放到自己的仓库了
docker build -t jess/mytomcat:1.0
方法二:使用docker tag 然后再次push
docker tag 容器id jess/mytomcat:1.0
② 阿里云镜像服务上:
官网 https://cr.console.aliyun.com/repository/
#登录阿里云
docker login --username=jess registry.cn-shenzhen.aliyuncs.com
#给镜像生成版本号
docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/dsadxzc/jess:[镜像
版本号]
# 修改id 和 版本
docker tag a5ef1f32aaae registry.cn-shenzhen.aliyuncs.com/dsadxzc/jess:1.0
# 修改版本
docker push registry.cn-shenzhen.aliyuncs.com/dsadxzc/jess:[镜像版本号]