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 .