DockerFile

简介: DockerFile

DockerFile

指令介绍

| 指令名称 | 指令作用 |
| -------------------- | ------------------------------------------------------------ |
| FROM | 基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板,有效的Dockerfile必须以FROM指令开始 |
| MAINTAINER(已弃用) | 设置镜像的作者,新版本建议采用LABEL指令 |
| RUN | 容器构建时需要运行的指令,包含两种语法:(1)RUN 相当于在终端执行shell命令 (2)RUN ["可执行命令","参数1","参数2"] 说明:RUN命令是在docker build时运行 |
| EXPOSE | 当前容器对外暴露出的端口 |
| WORKDIR | 指定在创建容器后,终端默认登录进来的工作目录,作为落脚点 |
| USER | 指定该镜像以什么样的用户去执行,如果不指定,默认为root |
| ENV | 用来在构建镜像过程中设置环境变量,语法:ENV 变量名 变量值,这个环境变量可以在后续的任何RUN指令中使用,也可以在其他指令中直接使用这些环境变量,例如:WORKDIR $JAVA_HOME |
| VOLUME | 配置容器数据卷,用于数据保存和持久化工作 |
| ADD | 将宿主机目录下的文件或将远程URL资源文件拷贝进镜像,并且会自动解压tar压缩包(远程资源不解压) |
| COPY | 类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>,语法: COPY src dest | COPY ["src","dest"] src:源文件或源目录 dest:容器内的指定路径,该路径自动创建 |
| CMD | 指定容器启动后要干的事情,语法1:CMD <命令> 语法2:CMD ["命令","参数1","参数2" ...] 注意事项:Dockerfile中可以有多个CMD指令,但是只有最后一个生效,CMD会被docker run之后的参数替换 与RUN命令的区别:CMD命令是在docker 启动时运行 RUN是在docker构建时执行 |
| ENTRYPOINT | 也是用来指定一个容器启动时要运行的命令,类似于CMD命令,但是ENTRYPONIT不会被docker run后面的命令覆盖,而是作为命令行参数传递刚给ENTRYPOINT指令指令的程序,如果和CMD一起使用,则CMD相当于为ENTRYPOINT传参 |

构建Docker镜像

docker build -t 新镜像名称:tag .
案例
为ubuntu安装vim,新建一个a.txt文件并添加内容
FROM ubuntu:latest  #根镜像
MAINTAINER g11n   #设置作者
ENV HOME_PATH /root  #设置环境变量
RUN apt-get update -y  #
RUN apt-get install vim -y
RUN touch $HOME_PATH/a.txt
RUN echo 'test' >> $HOME_PATH/a.txt
WORKDIR $HOME_PATH
EXPOSE 8080 #暴露端口
CMD /bin/bash #设置启动命令
为ubuntu安装jdk8
FROM ubuntu:latest

MAINTAINER g11n

USER root

ENV JAVA_HOME /usr/local/java/jdk1.8.0_77
ENV JRE_HOME /usr/local/java/jdk1.8.0_77/jre
ENV CLASSPATH $CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
ENV PATH $JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

# send package to docker image and unpack
ADD jdk-8u77-linux-x64.tar.gz  /usr/local/java

RUN apt-get update

CMD ["/bin/bash"]
发布微服务到docker
FROM java:8
MAINTAINER fmc
VOLUME /tmp:/docker_app/docker_service
WORKDIR /root/
ADD docker_service-0.0.1-SNAPSHOT.jar docker_service.jar
EXPOSE 6001
CMD  java -jar docker_service.jar
什么是虚悬镜像?
  • 编写Dockerfile
FROM ubuntu
CMD echo "success"
  • 构建

    docker build .
    REPOSITORY     TAG       IMAGE ID       CREATED         SIZE
    <none>         <none>    7f3463a6bea3   7 seconds ago   72.8MB

仓库和tag都是none的镜像称为虚悬镜像,一般为构建失败的镜像,删除即可

相关文章
|
20天前
|
应用服务中间件 nginx Docker
Dockerfile
【11月更文挑战第01天】
47 10
|
1月前
|
关系型数据库 MySQL Linux
DockerFile的介绍
Docker操作 (九)
|
1月前
|
Java 应用服务中间件 Docker
|
6月前
|
Java Linux 开发工具
|
11月前
|
缓存 Shell Go
dockerfile介绍与使用
dockerfile介绍与使用
102 1
|
缓存 Shell C语言
Dockerfile完全指南
Dockerfile完全指南
300 2
|
Linux 应用服务中间件 开发工具
dockerfile
dockerfile
104 0
|
Go 容器
一文了解 Dockerfile 鲜为人知的一面
Hello folks,今天给大家介绍一下如何在 Dockerfile 中进行 Go 代码编写及运用(备注:此处暂不关注所部署的容器大小及性能问题)。
92 0
|
缓存 Shell Go
DockerFile文件详解
DockerFile文件详解
203 0
|
应用服务中间件 Shell nginx