Dockerfile学习笔记

#############Dockerfile学习###########
###Dockerfile的规则
   1.格式
		a.#为注释
		b.指令大写,内容小写
   2.Docker是按照顺序执行dockerfile里的指令集合的(从上到下)
   3.每个Dockerfile的第一个非注释行指令,必须是“FROM”指令,
     用于为镜像文件按构建过程中,指定基准镜像,后续的指令
	 运行于此基准镜像所提供的运行环境中。
###4组核心的Dockerfile指令#####
	#USER/WORKDIR指令
	    1.USER是指新镜像所启动容器的进程是以什么用户执行?
		2.WORKDIR是指新镜像所启动容器是在什么路径下执行命令。(有点像cd命令)
	    3.Dockerfile内容:
			FROM  nginx:latest
			USER nginx
			WORKDIR /usr/share/nginx/html/
		4.构建镜像docker build .[一般是当前路径的Dockerfile] -t IAMGE_NAME:TAG
		    docker build . -t bandongbudong/nginx:v1.0.1
		4.结果:
			[root@localhost docker_files]# docker run -it --rm 00deb847ea10 /bin/bash
			nginx@2ad0fe5332c6:/usr/share/nginx/html$ whoami
			nginx
			nginx@2ad0fe5332c6:/usr/share/nginx/html$ pwd
			/usr/share/nginx/html
			nginx@2ad0fe5332c6:/usr/share/nginx/html$ 
    #ADD/EXPOSE指令
	    1.ADD指令是将宿主机上的文件拷贝(添加)到新镜像里
		2.EXPOSE指令是将新镜像的指定端口爆露出来,作为通讯。
		3.Dockerfile内容:(本地的index文件是百度首页)
			FROM  nginx:latest
			ADD index.html /usr/share/nginx/html/index.html
			EXPOSE 80
		4.构建镜像
			docker build . -t bandongbudong/nginx:ADD_EXPOS_v1.0.1
		4.启动容器(-p会忽略EXPOSE)
		    docker run -it -rm -p 7884:80 bandongbudong/nginx:ADD_EXPOS_v1.0.1 /bin/bash
		5.启动nginx
		    nginx -g "daemon off;"
        6.验证:
			http://192.168.98.130:7884/
		备注:已知程序都有默认端口,nginx默认是80,故容器也暴漏80,才方便映射。部分端口和程序是绑定关系的。
		7.其实expose只能和-P一起配合,会随机绑定一个宿主机端口
			docker run -it --rm -P bandongbudong/nginx:ADD_EXPOS_v1.0.1 /bin/bash
			nginx -g "daemon off;"
			在宿主机执行netstat -luntp 
			tcp        0      0 0.0.0.0:49153           0.0.0.0:*               LISTEN      22803/docker-proxy
			验证:
			http://192.168.98.130:49153/
		8.不需要执行nginx -g "daemon off;" 的方式
            docker run -d  -P bandongbudong/nginx:ADD_EXPOS_v1.0.1
			http://192.168.98.130:49154/
			
	#RUN/ENV指令
		1.RUN指令是在构建镜像的时候可以运行一些shell命令,帮助构建镜像
		2.ENV是环境变量,即可以在Dockerfile中用,也会被写入到新的镜像中
		3.Dockerfile内容:
			FROM  centos:7
			ENV   VERSION 9.11.4
			RUN yum install bind-$VERSION -y
		4.构建镜像
			docker build . -t bandongbudong/centos:7.bind.9.11.4
		5.启动容器并打印环境变量
			[root@localhost docker_files]# docker run --rm -it bandongbudong/centos:7.bind.9.11.4
			[root@ca27f18c5634 /]# printenv
			HOSTNAME=ca27f18c5634
			TERM=xterm
			LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz
			=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
			PWD=/
			VERSION=9.11.4
			SHLVL=1
			HOME=/root
			_=/usr/bin/printenv

		6.备注
		  yum list bind --show-duplicates 查看某个软件的版本信息
		  
	#CMD/ENTRYPOINT指令
	1.CMD功能,显示的指定一个进程显示的运行在容器的前台,让容器一直运行。
	2.Dockerfile内容:
		FROM  centos:7
		RUN yum install httpd -y
		CMD ["httpd","-D","FOREGROUND"]
	3.构建镜像
	    docker build . -t bandongbudong/centos:7_http_cmd
	4.启动容器
	    docker run -d --rm --name myhttp -p7878:80 bandongbudong/centos:7_http_cmd
	5.验证:
	    在浏览器中输入http://192.168.98.130:7887/ 会看到阿帕奇首页
	6.ENTRYPOINT可以指定容器启动是直接执行的脚本,可替代CMD执行的命令
	7.Dockerfile内容:
		FROM  centos:7
		ADD test.sh /test.sh
		RUN yum install epel-release -q -y && yum install -y nginx
		ENTRYPOINT /test.sh  
    8.构建镜像
    	docker build . -t bandongbudong/centos:7_entripoint
	9.启动容器
	    docker run --rm -p7887:80 bandongbudong/centos:7_entripoint
	10.验证:
	    浏览器中输入http://192.168.98.130:7887/,会有403 forbidden
		
#####综合实验:运行一个dockers容器,在浏览器打开demo.od.com地址访问到百度首页#######
	1.demo.od.com.conf文件写虚拟主机(注意必须空一行)
	    server {
			listen 80;
			server_name demo.od.com;
			
			root /usr/share/nginx/html;
		}
    2.Dockerfile内容:
	    FROM  bandongbudong/nginx:v1.0.1
		USER root
		ENV WWW /usr/share/nginx/html
		ENV CONF /etc/nginx/conf.d
		# 修改时区
		RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&\
			echo 'Asia/Shanghai' > /etc/timezone
		WORKDIR $WWW
		ADD index.html $WWW/index.html
		ADD demo.od.com.conf $CONF/demo.od.com.conf
		EXPOSE 80
		CMD ["nginx","-g","daemon off;"]
	3.在自己的windows中win+r-->drivers-->etc/hosts--->任何一行添加192.168.98.130      demo.od.com
	3.验证:
	    浏览器输入http://demo.od.com/显示的是百度首页
	

	
	

	
    
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值