Dockerfile

142 阅读3分钟

DockerFile

  • DockerFile是用来构建docker镜像的构建文件
  • 文件中指令全都要大写
  • 文件中的每一个命令就是镜像的一层

docker镜像构建步骤

  • 编写dockerFile文件
  • docker build 构建成为一个镜像
  • docker run 运行镜像
  • docker push 发布镜像

构建镜像的命令

docker build -f dockerfile文件地址 -t 生成的镜像名字:镜像版本 生成镜像的目录(.表示当前目录)
# docker文件的名字官方推荐使用:Dockerfile
# 如果docker文件的名字是Dockerfile则不需要增加-f参数,构建的时候会自动找在当前目录找Dockerfile文件

dockerFile常用命令

FROM            # 基础镜像,一切从这里开始构建
MAINTAINER      # 镜像是谁写的, 姓名+邮箱
RUN             # 镜像构建的时候需要运行的命令
ADD             # 步骤,tomcat镜像,这个tomcat压缩包!添加内容 添加同目录
WORKDIR         # 镜像的工作目录
VOLUME          # 挂载的目录
EXPOSE          # 保留端口配置
CMD             # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代。
ENTRYPOINT      # 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD         # 当构建一个被继承 DockerFile 这个时候就会运行ONBUILD的指令,触发指令。 
COPY            # 类似ADD,将我们文件拷贝到镜像中
ENV             # 构建的时候设置环境变量!

构建CentOS镜像增加命令

  • 编写Dockerfile文件
FROM centos
MAINTAINER sunCloud

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 Dockfile -t mycenteos:0.1 .

CMD 和 ENTRYPOINT区别

CMD					# 指这个容器启动的时候需要运行的命令,只有最后一个生效,可以被替代
ENTRYPOINT	# 也表示容器启动的时候需要运行的命令,可以追加命令

测试CMD

  • 编写dockerfile文件
# 编辑文件
vim dockerfile-cmd-test

# 添加文件内容
FROM centos
CMD ["ls", "-a"]
  • 构建镜像
docker build -f dockerfile-cmd-test -t cmdtestcentos:0.1 .
  • 运行镜像
# 直接运行镜像能执行命令:ls -a
docker run cmdtestcentos:0.1

# 在运行镜像命令后拼接 -l会报错,不能执行ls -al,因为cmd只有最后一个命令生效,-l不是ls的参数
docker run cmdtestcentos:0.1 -l

测试ENTRYPOINT

  • 编写dockerfile文件
# 编辑文件
vim dockerfile-entry-test

# 添加文件内容
FROM centos
ENTRYPOINT ["ls", "-a"]
  • 构建镜像
docker build -f dockerfile-entry-test -t entrytestcentos:0.1 .
  • 运行镜像
# 直接运行镜像能执行命令:ls -a
docker run entrytestcentos:0.1

# 在运行镜像命令后拼接 -l 也能正常运行,命令会被拼接成ls -al列出目录的详细信息
docker run entrytestcentos:0.1 -l

使用其他命令构建Tomcat

  • 下载JDK和Tomcat的文件

  • JDK和Tomcat放到dockerfile文件所在的位置,在dockerfile中不能通过指定路径来add

  • 编写dockerfile文件

# 编辑文件
vim dokcerfile-tomcat

# 文件添加如下内容,注意:注释不能跟在命令后面需要单独写一行
FROM centos
MAINTAINER sunCloud
COPY README /usr/local
ADD ali_openjdk_8.7.7_x64_linux.tar.gz /usr/local
ADD apache-tomcat-8.5.69.tar.gz /usr/local
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk8u292-b01
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.69
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib
EXPOSE 8080
CMD /usr/local/apache-tomcat-8.5.69/bin/startup.sh && tail -f /usr/local/apache-tomcat-8.5.69/logs/catalina.out
  • 构建镜像
docker build -f dockerfile-tomcat -t mytomcat:0.1 .