2.docker file

Docker File
	Dockerfile 是一个文本文件,里面包含了一条条的指令,每一条指令都对应构建一个镜像层。按顺序执行这些指令,就可以收动构建出一个Docker镜像。这些镜像层是堆叠的,每⼀层都是基于前一层构建的增量

1.docker file常用命令帮助
		常用指令
		FROM 
			指定现有的容器名称
			
		COPY
			拷贝当前Dockerfile目录里的文件
			COPY <src> <sest>
			COPY ["<src>" "<src>" "<dest>"]
			<src> 要复制的源文件或目录,支持使用通配符
			<dest> 目标路径,既正在创建的image的文件系统路径,建议<dest>使用绝对路径,否则COPY指定则以WORKDIR为起始路径
			文件复制准则
			如果<src>是目录,则其内部文件或子目录会被递归复制,但<stc>目录自身不会被复制·如果指定了多个<src>,
			或在<src>中使用了通配符,则<dest>必须是一个目录,且必须以结尾
			如果<dest>事先不存在,它将会被自动创建,这包括其父目录路径
			例子:
				COPY index.html /www/html/
					解释"
						把当前Dockerfile目录下的index.html复制容器的/www/html/下
		
	
		ADD
			ADD指令类似于COPY命令,ADD支持使用TAR文件和URL路径
			 Syntax
				ADD <src> ...<dest>或·ADD ["<src>".... "<dest>"]·操作准则
				
			同COPY指令
				如果<src>为URL且<dest>不以/结尾,则<src>指定的文件将被下载并直接被创建为<dest>;如果<dest>以/结尾,
				则文件名URL指定的文件将被直接下载并保存为<dest>/<filename>·如果<sc>是一个本地系统上的压缩格式的tar文件,
				它将被展开为一个目录,其行为类似于“tar -x"命令;然而,通过URL获取到的tar文件将不会自动展开
				如果<src>有多个,或其间接或直接使用了通配符,则<dest>必须是一个以/结尾的目录路径﹔如果<dest>不以/结尾则其被视作一个普通文件,
				<src>的内容将被直接写入到<dest>
			
			如果ADD 后面根的是URL,而且是tar文件,则不会展开
				例子:
					ADD http://nginx.org/download/nginx-1.26.0.tar.gz /usr/loca/src/
					
			如果ADD后面跟着是一个tar文件,它会自动解压到你所指定的目录
				例子:
					ADD nginx-1.26.0.tar.gz /usr/local/src/
			
			
		WORKDIR
			指定容器的默认工作目录
			指定一个环境变量
				例子:
					WORKDIR /usr/local/src/
			
			
		LABEL
			制作镜像者,名字和邮箱
			
			
		MAINTAINER
			管理者的信息和LABEL功能一样新版本建议用LABEL
			
			
		ENTRYPOINT
			容器启动的时候执行的初始命令,不能被替换,如果同时使用CMD和ENTRYPOINT,CMD命令将作为ENTRYPOINT命令的参数
			
			
		EXPOST
			要暴露的端口
			
			
		VOLUME
			持久化卷
			
		ENV
			环境变量,(ssh的密码,数据库的密码)给容器里面指定一个环境变量
			
		HEALTHCHECK
			HEALTHCHECK指令是用来检测容器内执行的应程程序是否处于健康状态;
			HEALTHCHECK语法示例: HEALTHCHECK [OPTIONS] CMD command例如,每30s左右检查每次网站服务是否能够在三秒内提供访问(默认 --retries 尝试3次,如果都不成功则失败)
			
2.从头构建属于自己的镜像包
	
	2.1自己单独构建一个alpine镜像
		2.1.1原始镜像下载地址
			https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/
			
		2.1.2这里以alpine为例
			https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/alpine/3.20/amd64/default/20240717_13%3A00/rootfs.tar.xz
			
		2.1.3创建容器存放的目录
			mkdir -pv /data/dockerfile/{web/{nginx,tomcat,jdk,apache},system/{centos,ubuntu,alpine,debian}}
			
		2.1.4在centos里把这个镜像下载到你存放dockerfile
			先进入到目录里面
				cd /data/dockerfile/system/alpine/
				
		2.1.5下载
				wget  https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/alpine/3.20/amd64/default/20240717_13%3A00/rootfs.tar.xz
			
		2.1.6查看下载的文件
				# ls
				rootfs.tar.xz
				
		2.1.7创建一个Dockerfile
				vim Dockerfile
				写入以下内容
				FROM scratch
				ADD rootfs.tar.xz /
				CMD ["/bin/sh"]
				
				解释:
					FROM scratch
						重新开始,创建一个初始镜像
						scratch=起跑线,从头开始
						
					ADD rootfs.tar.xz /
						把下载好的rootfs.tar.xz的文件解压到/根下
						
					CMD ["/bin/sh"]
						系统启动命令,这里是启动是[/bin/sh]
		2.1.8开始构建
				docker build -t alpine:v1 .
					把新创建的alpine名称改成V1
					
	2.2自己单独构建一个rocky镜像
		2.2.1原始镜像下载地址
			https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/	
			
		2.2.2这里以rocky为例
			https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/rockylinux/9/amd64/default/20240718_02%3A06/
			
		2.2.3下载rocky的镜像,这里不一定能下载成功
			wget https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/rockylinux/9/amd64/default/20240718_02%3A06/rootfs.tar.xz

			
		2.2.4查看下载的文件
				# ls
				rootfs.tar.xz
			
			
		2.2.5创建一个Dockerfile
				vim Dockerfile
				写入以下内容
				FROM scratch
				ADD rootfs.tar.xz /
				CMD ["/bin/bash"]
				解释:
					FROM scratch
						重新开始,创建一个初始镜像
						scratch=起跑线,从头开始
						
					ADD rootfs.tar.xz /
						把下载好的rootfs.tar.xz的文件解压到/根下
						
					CMD ["/bin/sh"]
						系统启动命令,这里是启动是[/bin/bash]
			
			
		2.2.6开始构建
				docker build -t rocky9.4:v1 .	
	
	2.3自己单独构建一个ubuntu2404镜像
		2.3.1原始镜像下载地址
			https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/	
			
		2.3.2这里以rocky为例
			https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/ubuntu/xenial/amd64/default/20240718_07%3A42/
			
		2.3.3下载rocky的镜像,这里不一定能下载成功
			wget https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/ubuntu/xenial/amd64/default/20240718_07%3A42/rootfs.tar.xz
	
			
		2.3.4查看下载的文件
				# ls
				rootfs.tar.xz
			
			
		2.3.5创建一个Dockerfile
				vim Dockerfile
				写入以下内容
				FROM scratch
				ADD rootfs.tar.xz /
				CMD ["/bin/bash"]
				解释:
					FROM scratch
						重新开始,创建一个初始镜像
						scratch=起跑线,从头开始
						
					ADD rootfs.tar.xz /
						把下载好的rootfs.tar.xz的文件解压到/根下
						
					CMD ["/bin/sh"]
						系统启动命令,这里是启动是[/bin/bash]
			
			
		2.3.6开始构建
				docker build -t ubuntu2404:v1 .	
	
3.Dockerfile实践
	3.1构建一个基于RockyLinux环境的Nginx镜像
		
			
	
	
	


Powered By Z-BlogPHP 1.7.3

 Theme By 优美模版

本博客为开源博客,本博客联系QQ:372097243