首页 > 技术文章 > Dockfile

zxy01 2021-08-23 19:44 原文

Dockfile:用来构建镜像的文本文件

alpine占用空间少 

 

Dockerfile:文件

# Dockerfile自定义创建image镜像:
# 1)base image基镜像
# 2)镜像名:tag,若tag省略会自动使用latest
# 3)若本地无base image,会从docker hub远程仓库下载,否则直接使用本地提供

FROM python:alpine

 

# 使用maintainer指定维护者信息,使用description指定Dockerfile描述信息

LABEL maintainer="zxy01 <zxy01@qq.com>"

LABEL description="this is demo"

 

# WORKDIR :相当于cd,进入容器某个目录;

                        若指定目录不存在,则自动创建并切换进该目录

WORKDIR /app

 

# 相当于Linux中的cp,将宿主机中文件或目录复制到容器中;

# copy 宿主机路径  容器路径

# .代表当前路径

# copy fun.py fff.py

 

# add

# 解压,复制到容器中

# COPY one.txt /mydir/

#add https://xxxx.xx.xx  /xx/xx(可远程仓库下载到容器)

 

 COPY . .

 

# RUN:指定需在docker中执行的Linux命令(此处之所以可以pip安装,是因base images是python:alpine,是有python环境的)

              尽量使用一个RUN,可减少层级

RUN pip install -r requirements.txt && cat /etc/passwd && \

          grep root /etc/passwd && \

           sed -nr '2,5 p' /etc/passwd

 

# 指定目录可与宿主机进行映射

VOLUME /app

 

# 指定容器中那个端口可与宿主机进行目录映射

EXPOSE 8080

 

# 容器中指定需创建的环境变量

ENV username=zxy01 \

         passwd=123456

 

# CMD:指定在运行容器时,默认运行的命令;若命令行有其他命令如ping,则优先执行命令行

              若有多个CMD,只最后一个会执行

# ENTRYPOINT:若有多个ENTRYPOINT,只最后一个会执行

# CMD python fun.py
#  CMD ls /
#  ENTRYPOINT python fun.py
#  ENTRYPOINT ls /

# CMD ["python","fun.py"]

 

# 推荐使用exec格式命令:["命令绝对路径","参数1","参数2"]

# ENTRYPOINT和CMD经常一块使用:CMD会作为ENTRYPOINT的默认参数来实现

 

ENTRYPOINT ["cat"]
CMD ["/etc/passwd","/etc/os-release"]

 

 构建:docker build -t mypython:v1 .

 

 

 

指定目录可与宿主机进行映射

VOLUME /app

 

 

CMD: 指定在运行容器时,默认运行的命令(若命令行有如ping,则优先执行命令行)

 

 

ENTRUPOINT:运行时指定运行的命令,即使命令行有其他命令也不会被覆盖

 

可&&连起命令

 

推荐阅读