构建镜像步骤;

1、创建Dockerfile文件,该文件是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

vim Dockerfile

//每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的
FROM centos:7 //下面的两条指令可以简写为:
//RUN /bin/echo 'root:123456' | chpasswd 、
// && /bin/echo -e "LANG=\"en_US.UTF-8\"">/etc/default/local
RUN /bin/echo 'root:123456' | chpasswd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"">/etc/default/local //声明端口
EXPOSE 22
EXPOSE 80 //类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:
//RUN指令是在构建镜像docker build是生效;
//CMD是在运行镜像Docker run时生效
CMD /usr/sbin/sshd -D

通过Docker build指令构建新的镜像

docker build -t runoob/centos:7 .
// -t:指定要创建的目标镜像名
// runoob/centos:7:镜像名
// "." :表示Dockerfile文件所在的路径

其它指令说明

1、COPY:从上下文目录中复制文件到容器中的指定位置

格式:
COPY [--chown=<user>:<group>] <源路径1>... <目标路径> 例如:
COPY hom?.txt /mydir/ 注意:可以使用“?”或“*”等通配符。

2、ADD:类似于COPY的功能,可以把本地文件添加到容器中的指定配置

格式:
ADD [--chown=<user>:<group>] <源路径1>... <目标路径>

3、ENTRYPOINT:类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。但是, 如果运行 docker run 时使用了 --entrypoint 选项,将覆盖 ENTRYPOINT 指令指定的程序。如果 Dockerfile 中如果存在多个 ENTRYPOINT 指令,仅最后一个生效。

格式:
ENTRYPOINT ["<executeable>","<param1>","<param2>",...]
//可以搭配 CMD 命令使用:一般是变参才会使用 CMD ,这里的 CMD 等于是在给 ENTRYPOINT 传参
FROM nginx
ENTRYPOINT ["nginx", "-c"] # 定参
CMD ["/etc/nginx/nginx.conf"] # 变参

4、ENV:设置环境变量,后续就可以以 {$变量名}使用它

格式:
ENV <key> <value>
//以键值对的形式存在
例如;设置NODE_VERSION = 7.2.0 ENV NODE_VERSION 7.2.0
RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \
&& curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc"

5、ARG:与ENV的作用一致,但作用域仅在Dockerfile内有效,就是说仅在Docker build的过程中有效

格式:
ARG <参数名>[=<默认值>]

6、VOLUME:定义数据卷,在启动容器时会自动挂载到匿名卷。作用:避免重要的数据丢失。

格式:
VOLUME ["<路径1>", "<路径2>"...]

7、WORKDIR:指定工作目录。注意:指定的目录必须提前创建好。

格式:
WORKDIR <工作目录路径>

8、USER:用于指定执行后续命令的用户和用户组。注意:用户和用户组必须提前存在。

格式:
USER <用户名>[:<用户组>]

9、HEATHCHECK:用来指定某个程序或指令来监控docker容器服务的运行状态。

格式:
HEALTHCHECK [选项] CMD <命令>:设置检查容器健康状况的命令
HEALTHCHECK NONE:如果基础镜像有健康检查指令,使用这行可以屏蔽掉其健康检查指令

10、ONBUILD:用于延迟构建命令的执行。通俗来说,就是本次使用Dockerfile文件构建镜像(假设本次构建的镜像是Nginx_test)不会执行该命令,当有新的Dockerfile文件中使用FROM Nginx_test构建新的镜像时会执行该命令。

格式:
ONBUILD <指令>

11、LABEL:以键值对的形式给镜像添加一些元数据。

格式:
LABEL <key>=<value> <key>=<value> <key>=<value> ...
例如:添加镜像的作者
LABEL org.opencontainers.image.authors="runoob"

Docker使用Dockerfile构建新的镜像的更多相关文章

  1. docker通过dockerfile构建JDK最小镜像,Docker导出导入镜像

    docker通过dockerfile构建JDK最小镜像,Docker导出导入镜像 一.docker通过dockerfile构建JDK最小镜像 1.1 下载JRE 1.2 解压JRE,删除相关不需要文件 ...

  2. Docker 使用 Dockerfile 构建自己的镜像

    可以使用Dockerfile的配置文件方式进行构建自己的镜像 下面利用docker构建一个Caddy web服务器 构建脚本 Dockerfile有自己的命令,下面使用了一些比较常用的命令,更多的Do ...

  3. docker之手动构建新的镜像

    转自:https://www.cnblogs.com/jsonhc/p/7766561.html 查看本地现有镜像: [root@docker ~]# docker images REPOSITORY ...

  4. docker commit命令创建新的镜像

    docker commit命令创建新的镜像 1.运行容器 2.修改容器 3.将容器保存为新容器 (1)运行容器 [root@cmdb-server docker]# docker run -ti ce ...

  5. docker:Dockerfile构建LNMP平台

    docker:Dockerfile构建LNMP平台   1.dockerfile介绍  Dockerfile是Docker用来构建镜像的文本文件,包含自定义的指令和格式.可以通过docker buil ...

  6. Docker 使用Dockerfile构建redis镜像

    Dockerfile实现: FROM centos: MAINTAINER hongdada "hongdaqi159505@gmail.com" WORKDIR /home RU ...

  7. Docker 使用Dockerfile构建tomcat镜像

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

  8. 使用dockerfile构建自己的镜像

    CentOS Linux release 7.2.1511 Docker version 17.03.1-ce 首先应该了解docker镜像的分层机制,这个网上文章很多,简单说就是对镜像的每次修改都是 ...

  9. docker使用Dockerfile构建ssh容器

    一.使用Dockerfile构建centos 1.创建 Dockerfile mkdir centos # 创建一个目录存放之后的Dockerfile,目录名无所谓 cd centos # 进入目录 ...

随机推荐

  1. HDU ACM 8.13 T2 的 O(m)做法

    前言 由于本人比较拉所以看起来很啰嗦,将就看就好. 题目大意 \(n\)种包,每个包里面有一大一小两个球,选小球的代价是\(1\),大球的代价是\(2\),可以都不选,若一次性买两个包,则可以优惠\( ...

  2. [GDOI2021 Day2T1] 宝石

    题目大意 \(n\)个点的树, 树上每一个点有一个宝石\(w_i\), 给出一个固定的数字不重复的序列\(p_i\)和一些询问\(u_i, v_i\), 对于每一个询问求出\(u_i\)到\(v_i\ ...

  3. win10快捷方式小箭头怎么去掉

    为了演示,先来看看桌面图标是有小箭头的. 1.打开注册表 按下快捷键"win+R",然后输入"regedit",并点击确认按钮. 2.搜索HKEY_CLASSE ...

  4. 下面哪些命令可以查看file1文件的第300-500行的内容?

    下面哪些命令可以查看file1文件的第300-500行的内容? cat file1 | tail -n +300 | head -n 200 cat file1| head -n 500 | tail ...

  5. javascript中new url()属性,轻松解析url地址

    1.首先写一个假的地址(q=URLUtils.searchParams&topic=api)相当于当前的window.location.href const urlParams = new U ...

  6. 【Azure 应用服务】一个 App Service 同时部署运行两个及多个 Java 应用程序(Jar包)

    问题描述 如何在一个AppService下同时部署运行多个Java 应用程序呢? 问题解答 因为App Service的默认根目录为 wwwroot.如果需要运行多个Java 应用程序,需要在 www ...

  7. vue 因为使用scope后选择器和标签出现[data-v

    使用scope的以后出现datd-v,例如: <div data-v-2311c06a class="button-warp"> <button data-v-2 ...

  8. TestNG中 ITestListener 的使用

    1.关于testng中ITestListener 的相关介绍文档,请参考: http://javadox.com/org.testng/testng/6.8.7/org/testng/ITestLis ...

  9. unittest测试框架

    unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果. 一.u ...

  10. RHCSA 第八天

    1.查询ip的几种方式: ip, ifconfig, nmcli,nmtui 2.nmcli命令使用: a.在ens160网卡上新建连接static_con,并配置静态ip b.在ens160网卡上新 ...