博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第 3 章 镜像 - 016 - Dockerfile 常用指令
阅读量:7115 次
发布时间:2019-06-28

本文共 2537 字,大约阅读时间需要 8 分钟。

Dockerfile 常用指令

1、FROM 指定base镜像

2、MAINTAINER 设置镜像的作者,可以为任意字符串
3、COPY 从build context 复制到镜像

  COPY 支持两种形式:

  • COPY src dest
  • COPY ["src", "dest"]

  注意:src 只能指定 build context 中的文件或目录。

4、ADD 与COPY类似,如果src是归档文件是会自动解压到dest。
5、ENV 设置环境变量,可被后面使用
6、EXPOSE 指定容器中的进程会监听的某个端口,Docker 可以将该端口暴露出来。
7、VOLUME 将文件或目录声明为volume
8、WORKDIR 为后面的 RUN, CMD, ENTRYPOINT, ADD 或 COPY 指令设置镜像的当前工作目录
9、RUN 在容器中运行指定的命令
10、CMD 容器启动时运行的指定的命令(可以有多个,但是只有最后一个生效,可以被docker run之后的一个参数代替)。
11、ENTRYPOINT 设置容器启动时运行的命令(可以有多个,但是只有最后一个生效,CMD或docker run之后的参数会被当作参数传递给ENTRYPOINT。

 

示例

较为全面的 Dockerfile(注:Dockerfile 支持以“#”开头的注释)

1 FROM busybox2 MAINTAINER gsophy@example.net3 WORKDIR /testdir4 RUN touch tmpfile15 COPY ["tmpfile2","."]6 ADD ["bunch.tar.gz","."]7 ENV WELCOME "You are in my container, welcome!"

 构建镜像并运行容器,验证镜像内容:

1 root@ubuntu:~/0107# ls 2 bunch.tar.gz  Dockerfile  tmpfile2 3 root@ubuntu:~/0107#  4 root@ubuntu:~/0107# docker build -t my-image . 5 Sending build context to Docker daemon  4.096kB 6 Step 1/7 : FROM busybox 7  ---> 3a093384ac30 8 Step 2/7 : MAINTAINER gsophy@example.net 9  ---> Running in 397d7d53c4be10 Removing intermediate container 397d7d53c4be11  ---> f259c0f5e5da12 Step 3/7 : WORKDIR /testdir13  ---> Running in f0282c6305d014 Removing intermediate container f0282c6305d015  ---> 51e62b757fef16 Step 4/7 : RUN touch tmpfile117  ---> Running in f80fb54dd08b18 Removing intermediate container f80fb54dd08b19  ---> e2590269bb4420 Step 5/7 : COPY ["tmpfile2","."]21  ---> f60ad0bd8a9e22 Step 6/7 : ADD ["bunch.tar.gz","."]23  ---> 5835dec7e44e24 Step 7/7 : ENV WELCOME "You are in my container, welcome!"25  ---> Running in c1862998478726 Removing intermediate container c1862998478727  ---> a5e0bf651f3928 Successfully built a5e0bf651f3929 Successfully tagged my-image:latest30 root@ubuntu:~/0107# 31 root@ubuntu:~/0107# 32 root@ubuntu:~/0107# docker run -it my-image33 /testdir # ls34 bunch      tmpfile1  tmpfile235 /testdir # 36 /testdir # echo $WELCOME37 You are in my container, welcome!38 /testdir #

1、进入容器,当前目录即为 WORKDIR。如果 WORKDIR 不存在,Docker 会自动为我们创建。

2、WORKDIR 中保存了我们希望的文件和目录:

目录 bunch:由 ADD 指令从 build context 复制的归档文件 bunch.tar.gz,已经自动解压。
文件 tmpfile1:由 RUN 指令创建。
文件 tmpfile2:由 COPY 指令从 build context 复制。

3、ENV 指令定义的环境变量已经生效。

 

---------------------引用来自--------------------------

https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587610&idx=1&sn=fc2c45c4eb11ecc20d6bba50cc7b8cad&chksm=8d308083ba470995f3e784386f4d09859fa7bdf93b0772d1b03669dd7612c818c6280f7f6b00&scene=21#wechat_redirect

转载于:https://www.cnblogs.com/gsophy/p/10234717.html

你可能感兴趣的文章
DM642图像处理程序的主要结构
查看>>
从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~三 分部类是否破坏了单一职责...
查看>>
redis的主从配置 扩容
查看>>
HDU1004 Let the Balloon Rise
查看>>
jquery 校验中国身份证号码
查看>>
PicPopupWindow的使用
查看>>
以最简单的登录为例,诠释JS面向对象的简单实例
查看>>
value toDF is not a member of org.apache.spark.rdd.RDD
查看>>
活动安排问题--贪心算法
查看>>
ZOJ1070 Bode Plot
查看>>
[LeetCode] Graph Valid Tree
查看>>
web程序员标准环境之DreamWeaver【推荐】
查看>>
springMvc源码学习之:利用springMVC随时随地获取HttpServletRequest等对象
查看>>
无限分页
查看>>
iOS - UIColor
查看>>
Java最最常用的100个类排序(非官方)
查看>>
C#如何控制方法的执行时间,超时则强制退出方法执行
查看>>
【Python】模块之subprocess
查看>>
由一条报警信息发现的一系列问题
查看>>
Oracle Executable Binary Mismatch Detected
查看>>