Dockerfile 文件示例

Dockerfile各参数说明

# ############ 主要用来构建镜像
FROM                # 指定镜像(必须有)
MAINTAINER      # 声明维护者(可有可无;位置无所谓,放在FROM后比较合理)
USER                 # 设置容器运行的UID(可有可无)
ENV                    # 指定环境变量(后续命令可以直接引用“$envname”)
RUN                    # 执行shell命令,用于创建容器(一般地,每条RUN对应一条命令;也可以利用 `;\`来执行多条命令)
# ############ 主要是用于构建镜像后的部署过程
COPY                 # 复制宿主机的文件到容器内
ADD                    # 添加宿主机的文件`或者URL`到容器内(和COPY基本相同,区别多了个下载网络文件)
VOLUME             # 将容器内的目录映射到宿主机内(方便在宿主机内查看文件,比如日志,项目源码等)
WORKDIR           # 工作目录,指明`CMD命令的运行目录`
ENTRYPOINT      # `只能有一个entrypoint存在,不可被docker run 命令的命令行参数覆盖`
EXPOSE              # 容器暴露的端口
CMD                    # 执行shell命令,`和RUN区别`:run用于部署,cmd用于部署运行,并且可以和entrypoint配合使用

Dockerfile部分参数可被命令行参数覆盖

允许我们部署的时候动态输入参数,覆盖Dockefile的指定参数

具体示例建使用场景:2.

使用场景

1. 构建docker image提供给他人使用

常用命令: docker build -t image_name:iamge_tag -f path/Dockerfile --rm ./app

2. 其他人根据docker image部署项目

常用命令:docker run -d -e -v -u -w -p image_name
说明:-d:后台运行; -e:指定环境变量; -v: volume映射宿主机和容器内目录;-u:指定运行容器的UID;-w:指定workdir; -p:指定端口

解释

  1. dockerfile几乎总是放在项目根目录下;
  2. docker根据项目目录下的项目文件和提供dockerfile提供的项目配置构建一个独立的环境用来部署项目;
  3. 一般地,我们不需要保存docker image,因为Dockerfile更加易于保存和传递,而且更加轻量级,易于编辑,环境一致;
  4. 有时候为了更加快速的进行部署,节省构建的时间,可以保存docker镜像文件,运行容器的时候只需通过命令行调整运行参数即可。

猜你喜欢

转载自www.cnblogs.com/daedrathsoft/p/11865571.html
今日推荐