docker学习6--Dockerfile创建镜像文件

Dockerfile介绍

Dockerfile由一行行命令语句组成,并且支持用“#”开头作为注释,一般的,Dockerfile分为四部分:

  • 基础镜像信息
  • 维护者信息
  • 镜像操作指令
  • 容器启动时执行的指令

Dockerfile是用来构建Docker镜像的构建文件,简单来说,Dockerfile就是把我们安装环境的每个步骤和指令,放到一个文件,最后一键执行,最后做成一个你想要的环境。

Docker构建三步曲:
编写dockerfile文件
docker build 构建image镜像文件
docker run 运行容器

Dockerfile相关指令

  • FORM 基础镜像,当前镜像是基于哪个镜像的。第一条指定必须为FROM指令,如果同一个Dockerfile中创建多个镜像时,使用多个FROM指令
格式:
FROM <image> 或 FROM <image>:<tag>
  • MAINTAINER 镜像维护者的姓名和邮箱地址
格式:
MAINTAINER <name>
  • RUN 容器构建时需要执行的命令
格式:
RUN <command>
RUN ["executable","param1","param2"]

前者将在shell终端中运行命令,后者则使用exec执行。

  • CMD 指定一个容器启动时要运行的命令,dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换
格式:
CMD ["executable","param1","param2"]    使用exec执行
CMD command param1 prarm   在/bin/sh中执行,提供给需要交互的应用
CMD ["prarm1","param2"]   提供给ENTRYPOINT的默认参数
  • EXPOSE 当前容器对外暴露的端口号
格式:
EXPOSE <port> [<port>...]
  • ENV 用来在构建镜像过程中设置环境变量
格式:
ENV <key> <value>
  • ADD 将宿主机目录下的文件拷贝到镜像里面并且ADD命令会自动处理URL和解压tar压缩包
格式:
ADD <src> <dest>
  • COPY 类似ADD,拷贝文件和目录到镜像中,但是它只是拷贝,不会自动处理URL和解压tar压缩包
格式:
COPY <src> <dest>
  • ENTRYPOINT 指定一个容器启动时要运行的命令,并且不可被docker run 提供的参数覆盖。 每个Dockerfile中只能有一个ENTRYPOINT,当指定多个ENTRYPOINT时,只有最后一个生效
格式:
ENTRYPOINT ["executable","param1","param2"]
ENTRYPOING command param1 param2 (shell中执行)
  • VOLUME 容器数据卷,用于数据保存和持久化工作
格式:
VOLUME ["/data"]
  • USER 指定运行容器时的用户名或UID,后续的RUN也会使用指定用户
格式:
USER daemon
  • WORKDIR 指定在容器创建后,终端默认登录进来工作目录,一个落脚点
格式:
WORKDIR /path/to/workdir
  • ONBUILD 当构建一个被继承的dockerfile时运行命令,父镜像在被子及子继承后,父镜像的onbuild被触发
格式:
ONBUILD [INSTRUCTION]

Dockerfile编写

在本地新建一个Dockerfile文件(没有后缀),用“#”表示注释。该镜像文件是构建一个虚拟的python3.6的环境,安装好所需要的依赖包,这样自动化代码就可以移到其他环境也能运行。

# 基于3.6.10镜像
FROM python:3.6.10

MAINTAINER huangluping <1784146178@qq.com>

# 更新pip
RUN pip install --upgrade pip --index-url https://pypi.douban.com/simple

# 工作目录
WORKDIR /workcode

# 添加文件
ADD . /workcode

# pip安装依赖包
RUN pip install -r requirements.txt --index-url https://pypi.douban.com/simple
# requirements.txt文件是python的相关依赖包,可以通过freeze命令生成:pip3 freeze >requirements.txt

# 默认传递参数
ENTRYPOINT ["pytest"]

# 默认显示help帮助信息
CMD ["--help"]

在服务器新建一个目录,用于存放Dockerfile和requirements.txt,再将这两个文件传到服务器
在这里插入图片描述

build构建镜像文件

docker build 命令用于使用Dockerfile创建镜像,参数说明:

  • -f:指定要使用的Dockerfile路径
  • –pull:尝试去更新镜像的新版本
  • –quiet,-q:安静模式,成功后只输出镜像ID
  • –tag, -t:镜像的名字及标签,通常name:tag或者name

docker build -t pytest:study .’ . ’ 是 Dockerfile 所在的路径(当前目录)也可以替换为一个具体的 Dockerfile 的路径。
在这里插入图片描述
运行完成后,通过docker images查看生成的镜像
在这里插入图片描述

run运行容器

将需要运行的测试代码传到服务器,并解压
在这里插入图片描述
输入指令:docker run -it --rm -v "$PWD":/workcode pytest:study test_api -s
参数说明:

  • -it -t让docker分配一个伪终端并绑定在容器的标准输入上,-i则让容器的标准输入保持打开
  • –rm 容器退出时,自动清除容器,–rm选项不能与-d同时使用。
  • -v 将容器的工作目录/workcode挂载到宿主机的$PWD,也就当前目录
  • pytest:study 容器名称和tag名称
  • test_api 需要执行的测试脚本
    在这里插入图片描述
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值