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:运行时指定运行的命令,即使命令行有其他命令也不会被覆盖
可&&连起命令