DOCKER04_详解Dockerfile基本指令、FROM、LABEL、RUN、CMD、ENTRYPOINT、ARG、ENV、VOLUME、USER(三)

简介: ③. RUN 构建时期运行的指令④. CMD(运行时期)、ENTRYPOINT 指定启动容器、镜像的默认入口

③. RUN 构建时期运行的指令


  • ①. RUN指令有两种形式,一种是shell,另外一个是exec形式


微信图片_20220107121011.png


②. 在shell形式中,您可以使用(反斜杠)将一条RUN指令继续到下一行


FROM alpine
LABEL maintainer="tangzhi"
ARG prams=helloword
RUN echo $prams &&\
echo tangzhi
RUN echo "123456"
RUN echo 123456789
# 这种方式取不到环境变量
RUN ["echo","$prams"]
# 下面这种写法和RUN echo 123456789等价
RUN ["/bin/sh","-c","echo $prams"]
[root@i-id8g0yu9 ~]# docker build -t mydockerfile4 -f dockerfile57 .
Sending build context to Docker daemon  3.119MB
Step 1/8 : FROM alpine
 ---> 6dbb9cc54074
Step 2/8 : LABEL maintainer="tangzhi"
 ---> Using cache
 ---> 3b6b777a2b23
Step 3/8 : ARG prams=helloword
 ---> Using cache
 ---> 80bcc56f3aee
Step 4/8 : RUN echo $prams &&echo tangzhi
 ---> Running in 9e1c545b68c9
helloword
tangzhi
Removing intermediate container 9e1c545b68c9
 ---> 93f7704f978b
Step 5/8 : RUN echo "123456"
 ---> Running in ae14d2044897
123456
Removing intermediate container ae14d2044897
 ---> 32ed2861f3e5
Step 6/8 : RUN echo 123456789
 ---> Running in 84db90a766c4
123456789
Removing intermediate container 84db90a766c4
 ---> d3fd8aeaec1f
Step 7/8 : RUN ["echo","$prams"]
 ---> Running in 99dddaaba442
$prams
Removing intermediate container 99dddaaba442
 ---> 31ed024c8569
Step 8/8 : RUN ["/bin/sh","-c","echo $prams"]
 ---> Running in 4fdfca35b59f
helloword
Removing intermediate container 4fdfca35b59f
 ---> a7457f8b7933
Successfully built a7457f8b7933
Successfully tagged mydockerfile4:latest
[root@i-id8g0yu9 ~]# 


④. CMD(运行时期)、ENTRYPOINT 指定启动容器、镜像的默认入口


  • ①. ENTRYPOINT或者CMD作为唯一入口,只能写一个,最后一个生效


#最终都是以ping tangzhi.com为准
CMD ping baidu.com 
CMD ping tangzhi.com


②. [“echo”,"${param}"] 不是bash -c的方式,取不出环境变量性[]

echo $param 等价于 ["/bin/sh","-c",“多长的命令都写在这里 echo ${param}”]


# CMD ["ping","baidu.com"]
# CMD ["useradd","-u","1000","-g","2000"]
# CMD ["ping","${url}"]  取不出变量
# CMD ping ${url} 


③. 官方都是建议使用[ ]方式(CMD ["/bin/sh","-c",“ping ${url}”]),变化的写CMD,固定不变的写ENTRYPO INT(未来他是容器启动的唯一入口)


# 一旦传递了cmd1,CMD指定的所有参数都会被覆盖
# 在控制台输入 docker run imageName  6 tangzhi.com 
# ping 5 -c baidu.com
CMD [ "5","baidu.com" ]
ENTRYPOINT [ "ping","-c" ]


④. 我们使用ENTRYPOINT ping baidu.com的形式输出,那么组合CMD怎么写都没用,容器启动都是以ENT RYPOINT的完整命令为准


# 最终都是以ping baidu.com为准
ENTRYPOINT ping baidu.com 
CMD ping tangzhi.com



相关文章
|
2月前
|
NoSQL Java Linux
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
274 75
|
3月前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
2160 12
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
2月前
|
数据库 Docker 容器
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。Dockerfile定义了构建镜像所需的所有指令,包括基础镜像选择、软件安装、文件复制等,极大提高了开发和部署的灵活性与一致性。掌握Dockerfile的编写,对于提升软件开发效率和环境管理具有重要意义。
80 9
|
3月前
|
JavaScript 数据库 Docker
一个有用的docker entrypoint脚本的范例
通过这个 Entrypoint 脚本,您可以确保在 Docker 容器启动时执行必要的初始化步骤,并且容器可以根据不同的运行时环境进行相应的配置和操作。这个范例展示了如何编写一个灵活且功能强大的 Entrypoint 脚本,使您的 Docker 容器更加可靠和易于管理。
62 3
|
3月前
|
应用服务中间件 PHP nginx
Docker-compose 编排lnmp(dockerfile) 完成Wordpress
通过使用Docker Compose,我们可以轻松编排LNMP环境并部署WordPress。本文详细介绍了各组件的Dockerfile和配置文件编写,并通过docker-compose.yml文件实现了整个环境的自动化部署。这种方法不仅简化了部署过程,还提高了环境的可移植性和一致性。希望本文能帮助你更好地理解和使用Docker Compose来管理和部署复杂的应用程序。
186 3
|
4月前
|
Docker 容器
docker中使用Dockerfile自动创建数据卷
【10月更文挑战第12天】
54 5
|
5月前
|
应用服务中间件 nginx Docker
Docker镜像-基于DockerFile制作编译版nginx镜像
这篇文章介绍了如何基于Dockerfile制作一个编译版的nginx镜像,并提供了详细的步骤和命令。
677 17
Docker镜像-基于DockerFile制作编译版nginx镜像
|
4月前
|
消息中间件 NoSQL Kafka
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
106 4
|
4月前
|
存储 应用服务中间件 nginx
Docker系列-5种方案超详细讲解docker数据存储持久化(volume,bind mounts,NFS等)
Docker系列-5种方案超详细讲解docker数据存储持久化(volume,bind mounts,NFS等)
|
5月前
|
Docker 容器
7-13|docker build -t image-name:tag path/to/Dockerfile 这个命令具体什么意思
7-13|docker build -t image-name:tag path/to/Dockerfile 这个命令具体什么意思

热门文章

最新文章