【docker】Dockerfile的编写

Dockerfile的编写

bash 复制代码
1、访问容器中的服务

	1、端口映射
	
	2、使用IP


# 构建镜像

	1、Dockerfile
	
		规范:
			Dockerfile命名必须D大写其他必须小写。
			Dockerfile中所有的指令必须大写
			
		构建镜像的命令
		
			docker build 
			
			参数:
				-t : 指定构建镜像的名称
	
		1、FROM
		
			指定基础镜像。在Dockerfile中唯一一个必须项。
		
		2、RUN
		
			在构建镜像时,运行指定的命令。
			
			注意:运行的命令必须是基础镜像中包含的命令;执行的结果直接保存在镜像中。
		
		3、ADD
			
			将指定的文件上传到镜像中。
		
		4、COPY
			
			将指定的文件复制到镜像中。
			
			
		COPY 和 ADD 之间的区别?
		
			1、ADD支持自动解压功能(只支持tar包解压),COPY不支持
			2、ADD支持通过URL下载文件(不支持自动解压),COPY不支持

		5、EXPOSE
		
			指定容器需要向外暴露的端口
			如果没有指定任何端口,可以使用-p做端口映射,但是不能使用-P做端口映射。
		
		6、VOLUME
			指定挂在卷,指定的挂载卷并不是设置了就挂载到指定的目录。当容器启动的时候,如果添加了-v参数,以-v参数为准,如果没有,则在宿主主机上的/var/lib/docker/volumes,随机映射。
			
		
		7、CMD
		
			指定一个容器的启动命令。全局只能有一个,如果有多个,最后一个生效。
			
			exec格式
			
				["nginx", "-g", "daemon off;"]
			
			shell格式
			
				nginx -g 'daemon off;'

		8、WORKDIR
			设置工作目录。运行应用程序时的启始目录(默认是根目录),可以这样理解,执行命令时相对路径的原始目录。
		
		9、ARG
		
			设置运行时变量。
			
			案例:要求写一个Dockerfile,实现每次安装的软件都是自定义。
			
			[root@kubernetes docker]# docker build --build-arg=PACKAGE=zsh -t nginx:v15 .
		
		10、ONBUILD
		
			触发器,ONBUILD后面跟指令,在构建是不会执行,当当前镜像作为基础镜像构建时执行。
			
			
		11、ENV
		
			设置一个环境变量。
		
		12、MAINTAINER
		
			设置维护者信息。
		
		13、ENTRYPOINT
			
			设置启动命令。
			
### ENTRYPOINT 和 CMD 的区别

1、ENTRYPOINT 作为启动命令时无法被docker run覆盖(如果docker run指定命令,会被认为成ENTRYPOINT的参数)。
2、如果ENTRYPOINT和CMD指令同时存在,则CMD的相关内容会被设置成ENTRYPOINT的参数


# nginx中
server {

	server_name _;
	listen 80;
	
	root /usr/share/nginx/html;
	
	location / {
		index index.php ;
	}
	
	location ~* \.php$ {
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
	}

}
相关推荐
功德+n28 分钟前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
小敬爱吃饭1 小时前
Ragflow Docker部署及问题解决方案(界面为Welcome to nginx,ragflow上传文件失败,Docker中的ragflow-cpu-1一直重启)
人工智能·python·nginx·docker·语言模型·容器·数据挖掘
木子欢儿2 小时前
Docker Hub 镜像发布指南
java·spring cloud·docker·容器·eureka
coppher3 小时前
Ubuntu 22.04 amd64 离线安装 Docker 完整教程
linux·docker
虚伪的空想家4 小时前
k8s集群configmap和secrets备份脚本
linux·容器·kubernetes
SXJR4 小时前
k8s中的Pod
云原生·容器·kubernetes
文静小土豆4 小时前
K8s 滚动更新在 Java 应用中的实践与优化
java·容器·kubernetes
w6100104665 小时前
CKA-2026-Ingress
云原生·容器·kubernetes·cka
bloglin999995 小时前
docker logs 如何一直监听日志输出
运维·docker·容器
说实话起个名字真难啊6 小时前
Docker 入门之网络基础
网络·docker·php