Dockerfile构建镜像

  • 2019-09-02
  • 0
  • 0

[toc]

使用dockerfile构建镜像步骤:

1.手动制作一次镜像
2.根据历史命令编写dockerfile文件
3.使用dockerfile构建镜像
4.测试镜像

构建文件书写格式 dockerfile

dockerfile的文件名只能叫做dockefile

语法规则:

  • 指令必须大写,且后面必须跟参数
  • 第一条指令必须是FROM,指定基础镜像
  • 指令从上往下,依次执行
  • 每条指令都会创建一个新的镜像并提交
  • #表示注释

常用指令:

FROM            这个镜像的妈妈是谁?(指定基础镜像)
MAINTAINER      告诉别人,谁负责养它?(指定维护者信息,可以没有)
LABLE           描述,标签
ENV             环境变量
RUN             你想让它干啥(在命令前面加上RUN即可)
ADD             拷贝文件到镜像中(会自动解压tar) 
WORKDIR         我是cd(设置当前工作目录)
VOLUME          给它一个存放行李的地方(设置卷,挂载主机目录)创建挂载点,用户数据共享和持久化
EXPOSE          它要打开的门是啥(指定对外的端口)(-P 随机端口) 指定对外暴露的端口
CMD             奔跑吧,兄弟!(指定容器启动后的要干的事情)(容易被替换)
COPY            复制文件/目录到镜像中(不会解压)

dockerfile其他指令: 

ENTRYPOINT          容器启动后执行的命令(无法被替换,启容器的时候指定的命令,会被当成参数)

CMD 和ENTRYPOINT的区别:
CMD:在Dockerfile中可以有多个CMD指令,但只有最后一条指令生效,在命令行中跟上命令就只生效本命令
ENTRYPOINT:docker run之后的参数会被作为ENTRYPOINT指令的参数,组合形成新的命令;容器启动后执行的命令(无法被替换,启容器的时候指定的命令,会被当成参数)

参考:CMD和ENTRYPOINT的区别

范例:

[root@docker01 nginx]# vim dockerfile 
FROM centos:6.9
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo 
RUN curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
RUN yum install nginx -y
ADD test.tar.gz /usr/share/nginx/html
VOLUME /usr/share/nginx/html
EXPOSE 80 22   ##宿主机端口映射到容器内的80和22端口  多个端口用空格隔开
CMD ["nginx","-g","daemon off;"]

[root@docker01 nginx]# docker build --network=host -t centos_nginx:v1 .

构建命令:docker build

[root@docker01 xiaoniao]#  docker build --network=host -t xiaoniao:v1 .
--network=host  指定网络类型

评论

还没有任何评论,你来说两句吧

提供支持 - 友情链接 - 衫小寨