Docker学习笔记(3)

Dockerfile 指令详解

1、COPY指令(复制文件)

格式:
        COPY [--chown=<user>:<group>] <源路径>... <目标路径>
        COPY[--chown=<user>:<group>]["<源路径1>",... "<目标路径>"]
用法:
		1、在命令行使用
		2、函数调用
说明:
	  1、COPY指令将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
	  2、源路径可以是多个,也可以是通配符
	  3、目标路径可以是绝对路径,也可以是相对路径
	  4、--chown=<user>:<group> 选项来改变文件的所属用户及所属组
示例:
	  1、COPY --chown=55:mygroup files* /mydir/
      2、COPY --chown=bin files* /mydir/
	  3、COPY --chown=1 files* /mydir/
	  4、COPY --chown=10:11 files* /mydir/

ADD指令(更高级的复制文件)

格式:
	ADD [--chown=<user>:<group>] <源路径>... <目标路径>
    ADD [--chown=<user>:<group>] ["<源路径1>",... "<目标路径>"]
用法:
	1、在命令行使用
	2、函数调用
说明:
	1、和COPY命令相同,但增加了一些特殊用法
	2、<源路径>可以是一个url,docker引擎会试图下url路径文件放到目标路径中
	3、碰见压缩文件会解压
示例:
	1、ADD --chown=55:mygroup files* /mydir/
	2、ADD --chown=bin files* /mydir/
	3、ADD --chown=1 files* /mydir/
	4、ADD --chown=10:11 files* /mydir/

CMD指令(容器启动命令)

格式:
	shell 格式:CMD <命令>
	exec 格式:CMD ["可执行文件", "参数1", "参数2"...]
	参数列表格式:CMD ["参数1", "参数2"...]
用法:
	CMD命令就是指定默认的容器主进程的启动命令的
说明:
	1、在运行时可以指定新的命令来替代镜像设置中的这个默认命令
		例:docker run -it ubuntu 会直接进入bash
			   docker run -it cat /etc/os-release 会输出系统版本信息
	2、exec格式在解析时会被解析为json数组,因此一定要使用双引号,不要使用单引号
	3、容器内没有前后台服务的概念,都是以前台运行的
示例:
	1、CMD echo $HOME
	2、CMD ["nginx", "-g", "daemon off;"]

ENTRYPOINT 指令(入口点)

格式:
	exec格式:
	shell格式:
用法:
	<ENTRYPOINT> "<CMD>"
说明:
	1、指定容启动程序及参数
	2、指定了ENTRYPOINT后cmd的含义会发生改变,不再直接运行其命令,而是将CMD的内容作为参数传给ENTRYPOINT指令
示例:
	1、让镜像变成像命令一样使用
		需要一个得知自己当前公网ip的镜像
		docker build -t myip .
		docker run myip -i
	2、应用运行前的准备工作
		FROM alpine:3.4
		...
		RUN addgroup -S redis && adduser -S -G redis redis
		...
		ENTRYPOINT ["docker-entrypoint.sh"]
		EXPOSE 6379
		CMD [ "redis-server" ]

ENV指令(设置环境变量)

格式:
	ENV <key><value>
	ENV<key1>=<value1> <key2>=<value2>
用法:
	定义环境变量
说明:
	通过环境变量,我们可以让一份 Dockerfile 制作更多的镜像,只需使用不同的环境变量即可。
示例:
	ENV VERSION=1.0 DEBUG=on \
		  NAME="Happy Feet"

ARG指令(构建参数)

格式:
	ARG <参数名>[=<默认值>]
用法:
说明:
	用法和ENV指令效果一样,都是设置环境变量,但是ARG设置的环境变量,在将来容器运行时是不会保存这些环境变量的
示例:

VOLUME指令(定义匿名卷)

格式:
	VOLUME ["<路径1>","<路径2>",.....]
	VOLUME <路径>
用法:
说明:
	对于数据库等需要保存动态数据的应用,其数据库文件应保存于卷(volume中)
示例:
	VOLUME /data

EXPOSE指令(暴露端口)

格式:
	EXPOSE <端口1> [<端口2>.....]
用法:
说明:
	声明运行容器时提供服务端口,只是声明,在运行时并不会因为声明就会开启此端口服务
示例

WORKDIR指令(指定工作目录)

格式:
	WORKDIR <工作目录路径>
用法:
	使用WORKDIR指定工作目录,以后各层的当前目录就被改为指定目录,如该目录不存在,WORKDIR会帮你建立目录
说明:
示例:

USER指令(指定当前用户)

格式:
	USER <用户名>[:<用户组>]
用法:
	USER和WORKDIR相似,都是改变环境状态并影响以后的层,WORKDIR是改变工作目录,USER是改变之后的执行层
说明:
	只是帮切换用户,此用户必须事先建立好,否则无法切换
示例:

HEALTHCHECK指令(健康检查)

格式:
	HEALTHCHECK [选项] CMD <命令> 设置检查容器健康状况的命令
	HEALTHCHECK NONE 如果基础镜像有健康检查指令,那么这行可以屏蔽掉其健康检查指令
用法:
	--interval=<间隔>:两次健康检查的间隔,默认为 30 秒;
	--timeout=<时长>:健康检查命令运行超时时间,如果超过这个时间,本次健康检查就被视为失败,默认 30 秒;
	--retries=<次数>:当连续失败指定次数后,则将容器状态视为 unhealthy,默认 3 次。
说明:
	HEALTHCHECK是告诉docker应该如何判断容器的状态是否正常
示例:

ONBUILD指令(为他人做嫁衣)

格式:
	ONBUILD <其他指令>
用法:
说明:
	1、ONBUILD指令是一个特殊指令,它后面跟其他指令,比如COPY,RUN,而这些指令,在当前镜像构建时并不会被执行,只有当以前镜像为基础镜像,去构建下一级镜像时才会被执行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当谈到Docker学习笔记时,我可以为你提供一些基本的指导和主题,以帮助你开始学习Docker。以下是一些可能涵盖的主题: 1. Docker简介:了解Docker的基本概念、优势以及它如何与虚拟化技术不同。 2. Docker安装:学习如何在不同的操作系统上安装Docker,并熟悉Docker引擎的组成部分。 3. Docker镜像:了解Docker镜像的概念,以及如何通过构建、拉取和推送镜像来管理和共享容器环境。 4. Docker容器学习如何创建、启动、停止和删除容器,并了解容器和主机之间的交互方式。 5. Docker网络:探索Docker网络模式,包括桥接网络、主机网络和覆盖网络,并理解容器之间以及容器与主机之间的通信方式。 6. Docker存储:了解Docker存储技术,包括数据卷和绑定挂载,并学习如何在容器中持久化数据。 7. Docker Compose:介绍Docker Compose工具,它可以用于定义和运行多个容器的应用程序。 8. Docker Swarm:探索Docker Swarm,它是Docker官方的容器编排和集群管理工具,于在多个主机上部署和管理容器应用。 9. Docker和持续集成/持续部署(CI/CD):了解如何将Docker与CI/CD工具(如Jenkins、GitLab CI等)集成,以简化应用程序的构建和部署过程。 这只是一些可能的主题,你可以根据自己的需求和兴趣来选择学习内容。希望这些指导可以帮助你开始学习Docker!如果你有任何特定的问题,我很乐意回答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颜大哦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值