Docker学习笔记(2):使用Dockerfile构建镜像
Dockerfile是用来构建Docker镜像的文件,是由一系列命令和参数构成的脚本。每条指令都必须为大写字母且后面要跟随至少一个参数,每条指令都会创建一个新的镜像层,并对镜像进行提交。
Dockerfile指令
FROM
初始化一个新的构建阶段,并为后续指令设置基本镜像。
RUN
容器构建时需要运行的命令。将在当前镜像之上的新层中执行任何命令并提交结果。生成的提交镜像将用于Dockerfile中的下一步。
EXPOSE
当前容器在运行时监听指定的网络端口,可以指定端口监听TCP还是UDP,如果没有指定协议,则默认为TCP。
WORKDIR
指定在创建容器后,终端默认登录进来的工作目录。
ENV
用来在构建镜像过程中设置环境变量。
ADD
将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包。
COPY
类似ADD,拷贝文件和目录到镜像中。
VOLUME
容器数据卷,用于数据保存和持久化工作。
CMD
指定一个容器启动时运行的命令。一个Dockerfile中只能有一条CMD指令,如果有多条CMD指令,那么只有最后一个CMD会生效,并且CMD会被docker run之后的参数替换。
ENTRYPOINT
指定一个容器启动时运行的命令。docker run的命令行参数将追加到ENTRYPOINT中的所有元素之后。
ONBUILD
当构建一个被继承的DockerFile时运行命令,父镜像在被子继承后父镜像的onbuild被触发。
USER
设置用户名(或UID)和可选的用户组(或GID),以便在运行镜像时使用。
构建一个SpringBoot镜像
1.编写dockerfile文件:
FROM centos
WORKDIR /myjar
RUN yum -y install java-1.8.0-openjdk.x86_64
COPY ./demo-0.0.1-SNAPSHOT.jar /myjar/demo.jar
EXPOSE 8080
CMD ["java","-jar","demo.jar"]
2.构建镜像
docker build -f dockerfile -t buhe/demo:1.0 .
输出:
Sending build context to Docker daemon 17.58MB
Step 1/6 : FROM centos
---> 470671670cac
Step 2/6 : WORKDIR /myjar
---> Running in 1f4ecc625997
Removing intermediate container 1f4ecc625997
---> 51d72f80b218
Step 3/6 : RUN yum -y install java-1.8.0-openjdk.x86_64
---> Running in 5988467076a7
......
3.查看构建的镜像

4.运行
docker run -d -p 8080:8080 buhe/demo:1.0
5.访问
curl -i http://localhost:8080/hello
输出:
HTTP/1.1 200
Content-Type: text/plain;charset=UTF-8
Content-Length: 14
Date: Tue, 18 Feb 2020 08:56:02 GMT
Hello World!!!
Docker学习笔记(2):使用Dockerfile构建镜像的更多相关文章
- Docker学习笔记之通过 Dockerfile 创建镜像
0x00 概述 由于 Docker 镜像的结构优势,使它的占用空间远小于普通的虚拟机镜像,而这就大幅减少了 Docker 镜像在网络或者其他介质中转移所花费的时间,进而提高了我们进行迁移部署的效率.不 ...
- docker学习笔记(2) 构建镜像
一.手动构建一个简单镜像 我们以构建nginx的docker镜像为例:手动构建镜像 docker pull centos 安装基础镜像docker run --name mynginx -it ...
- DOCKER 学习笔记2 认识dockerfile自定义镜像
Dockerfile 概念 Dockerfile 是一个文本文件,但包含所构建容器在运行时候的参数.库.资源配置.可以简单理解为我们现有的镜像,比如Centos/Nginx 但我们需要构建一个容器的时 ...
- Docker学习(六)Dockerfile构建自定义镜像
Docker学习(六)Dockerfile构建自定义镜像 前言 通过前面一篇文章可以知道怎么去使用一个镜像搭建服务,但是,如何构造自己的一个镜像呢,docker提供了dockerfile可以让我们自己 ...
- docker学习笔记17:Dockerfile 指令 ONBUILD介绍
ONBUILD指令可以为镜像添加触发器.其参数是任意一个Dockerfile 指令. 当我们在一个Dockerfile文件中加上ONBUILD指令,该指令对利用该Dockerfile构建镜像(比如为A ...
- Docker学习笔记_使用Dockerfile创建flask的一个镜像
一.实验环境 1.宿主机OS:Win10 64位 2 .虚拟机OS:Ubuntu18.04 64位 虚拟机名称:Ubuntu18VM1 虚拟机IP:192.168.8.25 3.账号:doc ...
- docker学习笔记18:Dockerfile 指令 VOLUME 介绍
在介绍VOLUME指令之前,我们来看下如下场景需求: 1)容器是基于镜像创建的,最后的容器文件系统包括镜像的只读层+可写层,容器中的进程操作的数据持久化都是保存在容器的可写层上.一旦容器删除后,这些数 ...
- docker学习笔记14:Dockerfile 指令 ENV介绍
ENV指令用来在镜像构建过程中设置环境变量.我们来看一个Dockerfile的例子: #test FROM ubuntu MAINTAINER hello ENV MYDIR /mydir RUN m ...
- docker学习笔记13:Dockerfile 指令 WORKDIR介绍
Dockerfile中的WORKDIR指令用于指定容器的一个目录, 容器启动时执行的命令会在该目录下执行. 相当于设置容器的工作目录了.我们来看一个dockerfile文件 #test FROM ub ...
- docker学习笔记12:Dockerfile 指令 ENTRYPOINT介绍
本文介绍Dockerfile的 ENTRYPOINT指令的含义. 先回顾下CMD指令的含义,CMD指令可以指定容器启动时要执行的命令,但它可以被docker run命令的参数覆盖掉. ENTRYPOI ...
随机推荐
- CoachAI 2019年12月~2020年3月实习总结
CoachAI 2019年12月~2020年3月实习总结 一句话总结: 方向对口,大有所得. CoachAI公司简介 CoachAI是一家做在线健身的公司,目前在手机端和IOS端都有自己的服务,并 ...
- 【转载】SPI总线和I2C总线的异同点
来源:https://blog.csdn.net/lishun1422840684/article/details/77776763 总结的简单.明了.适用! 一:SPI接口的全称是"Ser ...
- vue路由--嵌套路由
静态嵌套路由: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- 国产安全自主可控IT智能运维管理解决方案
新一轮科技革命和产业变革席卷全球,大数据.云计算.物联网.人工智能.区块链等新技术不断涌现,数字经济正深刻地改变着人类的生产和生活方式,作为经济增长新动能的作用日益凸显.伴随增长的,还有网络中不断涌现 ...
- Idea操作ElasticSearch
前提: 1.ES服务成功启动 2.node.js成功启动 一.创建索引库 1.目录展示 2.导入依赖 <dependency> <groupId>org.elasticsear ...
- python基础入门之四 —— 列表
1.格式 [数据1,数据2,数据3,...] 列表可以一次性存多个数据,可以为不同的数据类型 2.下标 从0开始循序向下分配 3.常用函数 查找 index():返回指定数据所在位置下标,不存在就报错 ...
- uniapp简易直播
实验准备 在服务器部署nginx-rtmp作为我们直播推流和拉流的服务器(如果服务商选择七牛,也是直接给地址推流).为了加快部署,我在这一步使用Docker. docker pull tiangolo ...
- 2、CentOS7密码重置
一.重启系统,在开机过程中,快速按下键盘上的方向键↑和↓.目的是告知引导程序,我们需要在引导页面选择不同的操作,以便让引导程序暂停. 以下是暂停后的界面,可以查看下方的英文可知↑和↓的作用. 二. ...
- winform重绘控件边框
首先添加一个用户控件 对于重绘边框有三个需要考虑的东西 1:是否显示边框 2:边框颜色 3:边框宽度 所以定义三个私有变量 /// <summary>/// 是否显示边框/// </ ...
- Ajax0002: 省市县三级联动案例