docker 04: dockerfile

2年前 (2022) 程序员胖胖胖虎阿
274 0 0

基础知识

  1. 每个保留关键字(指令),都必须是大写字母
  2. 从上到下的顺序执行
  3. '#'表示注释
  4. 每一个指令都会创建并提交一个新的镜像层

docker三部曲

  1. dockerfile:构建文件,定义了一切
  2. dockerimages:通过dockerfile构建生成的镜像,最终发布和运行的产品
  3. docker容器:镜像运行起来,提供服务

dockerfile常用指令

  1. build时执行

    FROM               # 基础镜像,从这里开始构建
    MAINTAINER         # 镜像是谁写的: 姓名 + 邮箱
    RUN                # 镜像构建时需要运行的命令以及提交运行结果
    
    ADD                # 构建镜像的一些步骤,要逐层添加东西时用
                       # 一个复制命令,把文件复制到景象中
                       # 如果把虚拟机与容器想象成两台linux服务器的话,那么这个命令就类似于scp,只是scp需要加用户名和密码的权限验证,而ADD不用
                       
    COPY               # 性质类似于ADD,将文件拷贝到镜像中
                       # 与ADD的区别,COPY的只能是本地文件
                       
    ONBUILD            # 这个命令只对当前镜像的子镜像生效
                       # 有一个镜像B是基于A镜像构建的,那么这个指定的命令会在B镜像构建的时候被执行
                       
    ENV                # 构建的时候设置环境变量
    
  2. both时执行

    WORKDIR			   # 设置工作目录,对RUN,CMD,ENTRYPOINT,COPY,ADD生效,如果不存在则会创建,也可以设置多次
    
  3. run时执行

    VOLUME             # 挂载的目录
    EXPOSE             # 功能只是暴漏容器运行时的监听端口给外部,实际应用时的端口映射要用 -P 或者 -p参数指定
    CMD                # 已经构建出的镜像被启动为容器时,要运行的命令,只有最后一个会生效,可被替代
    ENTRYPOINT         # 已经构建出的镜像被启动为容器时,要运行的命令,可以追加命令
    

dockerfile 4个练习

练习1:构建1个自己的centos

编写dockerfile脚本

  1. cd /home/wangxun
  2. mkdir dockerfile_test
  3. cd dockerfile_test
  4. vim 01_dockerfile_centos
  5. docker pull centos:7
  6. 脚本内容如下:
FROM centos:7         #用最新版的话,执行脚本时,下载安装包时会出错
MAINTAINER wangxun<3304097013@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "--- this is the end ---"
CMD /bin/bash

构建镜像

docker build -f 01_dockerfile_centos -t wangxun/centos7:1.0 .		#构建过程输出的信息可能比你想象的多的多

查看镜像的构建历史

docker history 镜像id/镜像名

运行自己构建的镜像

docker images		#查看镜像
docker run -it --name=centos_test wangxun/centos7:1.0 /bin/bash		#运行镜像

#进入镜像后,执行命令,验证配置
pwd
ifconfig
vim

练习2:CMD与ENTRYPOINT的区别

练习3:构建tomcat镜像

练习4:发布自己的镜像到dockerhub或者阿里云容器服务

版权声明:程序员胖胖胖虎阿 发表于 2022年10月10日 上午1:40。
转载请注明:docker 04: dockerfile | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...