docker build使用

  1. docker build常用参数
--build-arg=[]
#设置镜像创建的变量
--cpu-shares
#设置cpu权重
-f
#指定要使用dockerfile所在路径
-t
#为容器打上标签
--network 
#指定网卡模式
  1. dockerfile制作
    常用命令
FROM	=======>指定基础镜像
RUN		=======>执行命令
COPY	=======>复制上下文中的文件
ADD		=======>更高级的复制文件
#如果<源路径>为一个tar压缩文件的话,压缩格式为gzip,bzip2以及xz的情况 下,ADD指令将会自动解压缩这个压缩文件到<目标路径>去
EXPOSE	=======>声明容器运行的端口
ENV		=======>设置容器内的环境变量
VOLUME 	=======>指定容器挂载点
USER   	=======>指定容器中运行的用户
WORKIR  =======>指定容器中的工作目录

在这里插入图片描述

dockerfile中上下文(Context)的理解
#使用dockerfile中是只需要指定目录就行了,也就是指定的目录以下的文件都可以使用但是类似于(../和/)这种形式的路径dockerfile中不会被识别。
dockerfile中使用COPY和ADD命令在使用的过程中
COPY	./package.json	/app/这个是正确的
COPY	../package.json	/app或者COPY	/opt/xxxx	/app无法工作的原因
helloworld-app
├── Dockerfile
└── docker
    ├── app-1.0-SNAPSHOT.jar
    ├── hello.txt
    └── html
        └── index.html
FROM busybox
COPY hello.txt .
COPY html/index.html .
#构建镜像时客户端会先给服务端发送构建上下路径下的内容(即 docker 目录下的文件);
#Dockerfile 可以不在构建上下文路径下;
#Dockerfile 中指令的工作目录是服务端解压客户端传输的 tar 包的路径
#docker中复制只能复制dockerfile目录下中的文件
  1. docker中的CMD和ENTRYPOINT
CMD格式:
1、CMD  命令 		2、CMD  ['可执行文件' '参数一' '参数二' ....]
3、CMD  ['参数一' '参数二' ...]
#docker中CMD命令只可以写一条,如果写了多条就只会执行最后一条命令。
#Docker不是虚拟机,容器就是进程。既然是进程,那么在启动容器的时候,需要指定所运行的程序及参数。CMD指令就是用于指定默认的容器主进程的启动命令的。
#在指令格式上,一般推荐使用exec格式,这类格式在解析时会被解析为JSON数组,因此 一定要使用双引号",而不要使用单引号。
#Docker	不是虚拟机,容器中的应用都应该以前台执行,而不是像虚拟机、物理机里面那样,用upstart/systemd去启动后台服务,容器内没有后台服务的概念,其对于容器来说启动服务就是容器的应用进程,docker中的容器是靠着主程序而存在的,当主程序没有了,容器也就么没有了存在的意义了,当把启动服务写成sytemctl  start   nginx  ,其中docker的容器就会把命令理解成sh -c的方式进行执行,执行完成后就会退出,当主程序没有了容器也就会自然没有存在的意义,就会直接退出了。
CMD   ping   localhost或者使用tail -f  sleep、man、top、iostat -t 100   、vmstat   -t 100等命令使docker容器不退出。
  1. ENTRYPOINT入口点
ENTRYPOINT的格式和RUN指令格式一样,分为exec格式和shell格式。
ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数。	ENTRYPOINT在运行时 也可以替代,不过比CMD要略显繁琐,需要通过docker	run的参数--etrypoint来指定。
当指定了ENTRYPOINT后,CMD的含义就发生了改变,不再是直接的运行其命令,而是将CMD的内容作为参数传给ENTRYPOINT指令,换句话说实际执行时,将变为:
ENTRYOINT   CMD
也就是说ENTRYPOINT相对于CMD可以传递参数进行重新执行相对应的操作。
  1. ENV设置环境变量
其中ENV定义变量方法有两种
1、ENV	<key>	<value>		
2、ENV	<key1>=<value1>	<key2>=<value2>
这里设置过变量后后面的RUN命令可以直接使用这个变量。
ENV VERSION 7.0
RUN echo $VERSION >version.txt
可以这么使用变量,这里可以用在版本升级中。
  1. ARG构建参数
格式:	ARG	<参数名>[=<默认值>]
构建参数和ENV的效果一样,都是设置环境变量。所不同的是,ARG所设置的构建环境的 环境变量,在将来容器运行时是不会存在这些环境变量的。但是不要因此就使ARG保存密 码之类的信息,因为docker	history还是可以看到所有值的。
  1. VOLUME定义匿名卷
格式为:
1、VOLUME	["<路径1>",	"<路径2>"...]		
2、VOLUME	<路径>
VOLUME  /data   
这里用作数据持久化,也可以启动容器时进行挂载-v  指定目录就行。
  1. EXPOSE声明开放端口
书写格式:expose 80
#这里也可以在启动容器时进行指定。
  1. 实验示例
	FROM  centos:7
	#指定镜像
	RUN yum install  httpd  -y
	RUN  echo "<html><body><h1>测测试文本</body></html>"/var/www/html/index.html
	WORKIR /root
	ADD  start.sh  /
	CMD ./start.sh

#注:启动脚本写入以下内容
systemctl start httpd 
systemctl start mariadb
systemctl start php-fpm
tail -f 

开始制作镜像:
docker  build  .  -t   web 
#制作完成后使用命令启动容器
docker  run  -itd   --name  web   web 

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值