一、dockerfile 概述

二、USER\WORKDIR 命令-----创建一个dockerfile文件[root@docker dockerfile]# vi Dockerfile       #必须文件为DockerfileFROM nginx:latest        #使用那个镜像作为底包   USER nginx                   #指定那个用户运行WORKDIR /usr/share/nginx/html          #指定运行的时的目录位置-----生成一个镜像[root@docker dockerfile]# docker build . -t myselfnginx:latestSending build context to Docker daemon  2.048kBStep 1/3 : FROM nginx:latest ---> f7bb5701a33cStep 2/3 : USER nginx ---> Running in 846447177e73Removing intermediate container 846447177e73 ---> 98d5ad96fdfaStep 3/3 : WORKDIR /usr/share/nginx/html ---> Running in e500aea99e2cRemoving intermediate container e500aea99e2c ---> a6e377307258Successfully built a6e377307258Successfully tagged myselfnginx:latest[root@docker dockerfile]# docker imagesREPOSITORY            TAG                     IMAGE ID            CREATED             SIZEmyselfnginx           latest                  a6e377307258        26 seconds ago      126MBzhoumingkang/nginx    curl                    d1b81c37853c        25 hours ago        152MBmyalpine              latest_with_hello.txt   3ce9b8b899ba        2 days ago          5.59MBnginx                 latest                  f7bb5701a33c        11 days ago         126MBzhoumingkang/alpine   v3.10.3                 cc0abc535e36        2 weeks ago         5.59MBalpine                latest                  cc0abc535e36        2 weeks ago         5.59MBalpine                3.9.4                   055936d39205        8 months ago        5.53MBhello-world           latest                  fce289e99eb9        12 months ago       1.84kB[root@docker dockerfile]# docker run -ti --rm myselfnginx:latest /bin/bashnginx@51ddb8d7c3e3:/usr/share/nginx/html$ whoaminginxnginx@51ddb8d7c3e3:/usr/share/nginx/html$ pwd/usr/share/nginx/htmlnginx@51ddb8d7c3e3:/usr/share/nginx/html$ 三、ADD\EXPOSE 命令-----创建一个dockerfile文件[root@docker dockerfile]# cat Dockerfile FROM nginx:latestADD index.html /usr/share/nginx/htmlEXPOSE 80-----生成一个镜像docker build . -t nginx:with_add_exposeSending build context to Docker daemon   5.12kBStep 1/3 : FROM nginx:latest ---> f7bb5701a33cStep 2/3 : ADD index.html /usr/share/nginx/html ---> 7e2b905eca85Step 3/3 : EXPOSE 80 ---> Running in f13c2538a707Removing intermediate container f13c2538a707 ---> d44bd64abd82Successfully built d44bd64abd82Successfully tagged nginx:with_add_expose[root@docker dockerfile]# docker build . -t centos7:with_install_bind-----通过该镜像运行容器[root@docker dockerfile]# docker run --rm -d -P nginx:with_add_expose    #大写P为宿主机随机生成一个端口指向内部80端口f19df2f5124538faf3660079e9d6bd5dbb10d54a75f3233847164caa0ef7c44c[root@docker dockerfile]# docker psCONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                   NAMESf19df2f51245        nginx:with_add_expose   "nginx -g 'daemon of…"   5 seconds ago       Up 4 seconds        0.0.0.0:32770->80/tcp   nervous_colden-----登陆容器查看index.html文件是否存在[root@docker dockerfile]# docker exec -ti nervous_colden /bin/bashroot@f19df2f51245:/# cd /usr/share/nginx/html/root@f19df2f51245:/usr/share/nginx/html# ls50x.html  index.html四、RUN\ENV 命令-----创建Dockerfile文件[root@docker dockerfile]# cat Dockerfile FROM centos:centos7ENV VER 9.11.4RUN yum -y install bind-$VER        #RUN 命令是在我们构建镜像时运行的命令,并不是指在容器里运行命令-----通过该镜像运行容器,并查环境变量与安装包是否已经成功[root@docker dockerfile]# docker run -ti centos7:with_install_bind /bin/bash[root@647dbdb37662 /]# envHOSTNAME=647dbdb37662TERM=xtermLS_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:/binPWD=/SHLVL=1HOME=/rootVER=9.11.4_=/usr/bin/env[root@647dbdb37662 /]# rpm -qa bindbind-9.11.4-9.P2.el7.x86_64[root@647dbdb37662 /]# 五、CMD 命令-----创建Dockerfile文件[root@docker dockerfile]# cat Dockerfile FROM centos:centos7RUN yum -y install httpdCMD ["httpd","-D","FOREGROUND"]#关于RUN与CMD的区别#RUN是创建镜像是运行的命令#CMD是启动容器后,帮你运行的命令[root@docker dockerfile]# docker build . -t centos7:httpd     #通过Dockerfile文件创建镜像-----通过该容器运行镜像[root@docker dockerfile]# docker run -d --rm -p80:80 --name myhttpd centos7:httpd2f2c3328befbbd6fffe14d2887c7d3c334e50218de027881659aa30276a0e8bf[root@docker dockerfile]# docker psCONTAINER ID        IMAGE                       COMMAND                 CREATED             STATUS              PORTS                NAMES2f2c3328befb        centos7:httpd               "httpd -D FOREGROUND"   5 seconds ago       Up 3 seconds        0.0.0.0:80->80/tcp   myhttpd六、ENTRYPOINT 命令-----创建Dockerfile文件[root@docker dockerfile]# cat Dockerfile FROM centos:centos7ADD entrypoint.sh /entrypoint.sh       #上传当前目录上的entrypoint.sh文件,要有执行权限RUN yum -y install epel-release -q  && yum -y install nginx   #镜像构建时执行命令ENTRYPOINT /entrypoint.sh           #定义ENTRYPOINT,并开机运行-----定义entrypoint.sh文件[root@docker dockerfile]# cat entrypoint.sh #!/bin/bash/sbin/nginx -g "daemon off;"-----构建镜像 [root@docker dockerfile]# docker build . -t centos7:mynginx-----运行容器查看效果[root@docker dockerfile]# docker run -d -p80:80 --name mynginx centos7:mynginxb8c8899bf0eb1012c925746f8d544159bbca4b99013f0aea7a7a625483d11868[root@docker dockerfile]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMESb8c8899bf0eb        centos7:mynginx     "/bin/sh -c /entrypo…"   4 seconds ago       Up 3 seconds        0.0.0.0:80->80/tcp   mynginx

Docker 之 Dockerfile 的概述与使用相关推荐

  1. 七、Docker:DockerFile

    其他文章: 一.Docker:概述 二.Docker:安装 三.Docker:命令 四.Docker:可视化管理 五.Docker:镜像(image) 六.Docker:数据卷 七.Docker:Do ...

  2. Docker用Dockerfile定制镜像

    用Dockerfile定制镜像 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那之前提示的无法重复的问题 ...

  3. Docker Review - dockerfile 实战_使用dockerfile制作tomcat镜像

    文章目录 Pre Docker 官方镜像 Dockerfile dockerfile制作tomcat镜像 准备软件 编写Dockerfile文件 dockerfile构建镜像 启动镜像 测试访问tom ...

  4. docker之Dockerfile指令介绍

    Docker通过对于在Dockerfile中的一系列指令的顺序解析实现自动的image的构建 通过使用build命令,根据Dockerfiel的描述来构建镜像 通过源代码路径的方式 通过标准输入流的方 ...

  5. Docker : Dockerfile 定制镜像

    使用 Dockerfile 定制镜像 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程.   镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们 ...

  6. Docker 精通之 Dockerfile

    Docker 精通系列 Docker 精通之入门 Docker 精通之微服务 Docker 精通之常用命令 Docker 精通之 Dockerfile 1.基本说明 Dockfile 是一个用于编写 ...

  7. Docker使用Dockerfile构建简单镜像

    Docker使用Dockerfile构建简单镜像 首先确保系统已经安装docker 构建镜像 安装基础镜像 sudo docker pull ubuntu 查看镜像是否已经拉取成功 REPOSITOR ...

  8. Docker使用Dockerfile构建镜像

    2019独角兽企业重金招聘Python工程师标准>>> Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条 ...

  9. (转)Docker 基础 : Dockerfile

    全文来自 Docker 基础 : Dockerfile Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 快速创建自定义的镜像.我们会先介绍 Dockerfile 的 ...

最新文章

  1. 最牛逼的 Java 日志框架,性能无敌,横扫所有对手.....
  2. Android实现相册分享功能,Android系统自带分享功能的实现(可同时分享文字和图片)...
  3. CodeForces - 1312D Count the Arrays(组合数学)
  4. 如何以可视化方式显示 Angular 应用构建后的 bundle 文件大小
  5. BZOJ4012 [HNOI2015]开店
  6. java定义一个方法,返回一个浮点数保留两位小数,考虑四舍五入的结果
  7. python 发邮件 动态html_python 邮件发送html文件
  8. linux启动项目报连不上mysql_Linux运维常见故障及处理的 32 个妙计
  9. oracle sql developer 执行sql语句,如何使用SQL Developer执行SQL语句(上)
  10. python段落注释的语法格式是_Python 基础语法
  11. win10专业版没有触摸板选项_win10没有显示触摸板
  12. 硬盘加密软件测试工资,实测加密软件BitLocker对硬盘性能有何影响
  13. MYSQL Error:You must SET PASSWORD before execut...
  14. Unity编辑器扩展——撤回
  15. AttributeError: 'module' object has no attribute 'urlopen报错解决办法
  16. C++循环结构设计——韩信点兵
  17. 找不到移动硬盘解决办法
  18. Android版添加phonegap--融云即时通讯插件教程
  19. 用汽车拉苹果的例子来说HTTPS的安全性很容易理解 但HTTPS并不是绝对可靠的
  20. 英特尔的指令集体系结构_INTEL 体系结构 MMX™ 技术开发者手册

热门文章

  1. 如何面对你—LNMP高并发时502
  2. “电梯演讲”最精炼、贴切的语言
  3. linux如何修改主机名
  4. ASP.NET3种验证码[转]
  5. Tensorflow tf.keras.models.load_model() 打开h5文件失败
  6. 单机编程c语言,完美的8051单机C语言编程模板.doc
  7. Alibre Design 2018中文版
  8. 个人代码库のC#千千静听 - 桌面歌词 (功能模拟)
  9. 【Python基础】14_Python中的TODO注释
  10. 2019牛客多校2 H Second Large Rectangle(悬线法)