Docker --Dockerfile(制作镜像)
Dockerfile
Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 快速创建自定义的镜像
Dockerfile 常用指令
FROM
作用:指定基础镜像,Dockerfile中FROM是必备指令,且必须是第一条指令;
格式:FROM <image>:[tag]
FROM busybox
LABEL
作用:设定元数据
格式:LABEL <key>=<vlaue> <key>=<value> ...
其中:LABEL指令将元数据以多个键值对方式指定
LABEL auther="du"
COPY
作用:将工作目录中的文件复制到所做得镜像的文件系统中
格式:COPY <src><src>... <dest>
COPY index.html /usr/share/nginx/html/
其中:
- <src>必须用相对路径,<dest>一般用绝对路径
- 源文件必须在工作目录或工作目录的子目录(相对路径可以找到)
- 支持通配符
- <dest>可以不存在,会自动创建
- <src>是一个目录,会自动复制目录下的文件到目标位置,
- 如果复制多个文件,或者<src>中使用了通配符,那么<dest>必须以/结尾
ADD
格式:ADD <src><src>... <dest>
作用:复制指定的 <src> 到容器中的 <dest>
其中: <src> 可以是 Dockerfile 所在目录的一个相对路径(文件或目录);也可以是一个 URL;还可以是一个 tar 文件(自动解压)
ADD https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/at-sysvinit-3.1.13-24.el7.x86_64.rpm ./
WORKDIR
作用:相当于cd命令;指定工作目录;可以使用多个 WORKDIR 指令
格式:WORKDIR PSTH
WORKDIR /pack/nginx/
VOLUME
作用:创建并指定数据卷挂载点
格式:VOLUME ["/data1","/data2"]
VOLUME /webroom
EXPOSE
作用:设置Docker容器内部暴露的端口号
格式:EXPOSE port port ...
EXPOSE 22 80
ENV
作用:设置环境变量
格式:ENV var1=value1 var2=value2 ...
ENV path=/usr/share/nginx/html/
ARG
作用:定义变量
格式:ARG key=value key=value
其中:ARG构建参数和 ENV 的效果一样,都是设置环境变量。所不同的是, ARG 所设置的构建的环境变量,在将来容器运行时是不会存在这些环境变量的
RUN
作用:基于镜像构建容器时运行命令
格式:RUN cmd && com
RUN touch testnginx
CMD
作用:定义容器启动以后要默认运行的程序,pid为1的程序
格式:CMD ["命令","参数","参数"]
CMD ["-g","daemon off;"]
其中:指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条 CMD 命令,只有最后一条会被执行。如果用户在启动容器时指定了要运行的命令,则会覆盖掉 CMD 指定的命令。
ENTRYPOINT
作用:配置容器启动后执行的命令和参数,类似CMD
区别:运行时CMD不能添加参数,而ENTRYPOINT可以添加参数 eg:docker run DockerFile -i
https://www.cnblogs.com/reachos/p/8609025.html
USER
作用:指定运行容器时的用户名和UID,
格式:USER username|uid
USER du
ONBUILD
作用:定义触发器,当本镜像被指定为基础镜像时触发
格式:ONBUILD cmd
...
ONBUILD ADD . /app/src
ONBUILD RUN /usr/local/bin/python-build –dir /app/src
...
创建镜像
第一步:编写dockerfile
╭─root@du-z ~
╰─➤ mkdir /nginx
╭─root@du-z ~
╰─➤ cd /nginx
╭─root@du-z /nginx
╰─➤ vim Dockerfile
FROM docker.io/nginx:latest
LABEL author=du
COPY ./passwd /data/
WORKDIR /pack/nginx/
ENV pkgname=nginx-1.14.0.tar.gz root=/data/mysql/mysql3306/data/
COPY nginx-1.14.0.tar.gz $root
VOLUME $root
EXPOSE 80/tcp
RUN tar xf $root$pkgname
CMD nginx -g "daemon off;"
第二步:构建镜像
╭─root@du-z /nginx
╰─➤ docker build -t nginx:v1 .
第三步:查看
# docker image ls
# docker history nginx:v1
Docker --Dockerfile(制作镜像)的更多相关文章
- Docker 0x05: Dockerfile制作镜像
目录 Dockerfile制作镜像 一句话什么是dockerfile dockerfile脚本指令 小结 Dockerfile制作镜像 dockerfile 可以是制作自己镜像的脚本文件,按照这个脚本 ...
- docker(9)Dockerfile制作镜像
前言 如果我们已经安装了一个python3的环境,如果另一台机器也需要安装同样的环境又要敲一遍,很麻烦,这里可以配置Dockerfile文件,让其自动安装,类似shell脚本 Dockerfile编写 ...
- docker-使用Dockerfile制作镜像
最近项目中有使用docker,组内做了关于docker的培训,然后自己跟着研究了一下,大概了解如何使用.我是基于tomcat镜像制作(不需要安装jdk,配置环境变量),基于centos镜像制作需要安装 ...
- Docker Dockerfile 定制镜像(转)
转自: https://yeasy.gitbooks.io/docker_practice/ 及 https://blog.csdn.net/wo18237095579/article/details ...
- docker Dockerfile 创建镜像
Docker 组件 1. docker client : docker的客户端 2. docker server : docker daemon的主要组成部分,接受用户通过docker client发 ...
- Docker Dockerfile 定制镜像
使用 Dockerfile 定制镜像 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么无法重复的问题 ...
- docker——Dockerfile创建镜像
写在前面: 继续docker的学习,昨天用docker成功跑了tomcat,但是在centos中镜像跑的容器手动装jdk和tomcat,今天学习用Dockerfile创建镜像,并在上面搭建java环境 ...
- 通过dockerfile制作镜像
Dockerfile是一个用于构建Docker镜像的文本文件,其中包含了创建Docker镜像的全部指令.就是将我们安装环境的每个步骤使用指令的形式存放在一个文件中,最后生成一个需要的环境. Docke ...
- Docker如何制作镜像-Dockerfile的使用
1:什么是Dockerfile Dockerfile是一个文本文档,可以通过docker build 命令构建成一个镜像. 我们可以在Dockerfile中定义一系列的命令,构建出我们想要的镜像. 想 ...
- Docker部署运行springboot项目,并使用Dockerfile制作镜像
前言: 本来是要搭建一个自动化部署分布式项目的服务器平台的,使用jenkins+k8s+ELK+springboot把一个简单的springboot项目给搞起来,由于工程太大,先分开把每个技术组件单独 ...
随机推荐
- 使用纯 CSS 实现滚动阴影效果
开门见山,有这样一种非常常见的情况,对于一些可滚动的元素而言.通常在滚动的时候会给垂直于滚动的一侧添加一个阴影,用于表明当前有元素被滚动给该滚出了可视区域,类似这样: 可以看到,在滚动的过程中,会出现 ...
- Centos7上以RPM包方式安装Oracle 18c XE
Centos7上以RPM包方式安装Oracle 18c XE 安装阿里云 YUM 源 https://opsx.alibaba.com/mirror?lang=zh-CN 一.安装oracle数据库 ...
- linq to entity不识别方法"System.String ToString()"
将班级id以字符串形式输入如:"1111,1112,1113".数据库里的id为int型,在数据路里找到匹配的相应班级转换成列表.在这里爆出问题:不识别方法"System ...
- .NET 云原生架构师训练营(模块二 基础巩固 RabbitMQ 工作队列和交换机)--学习笔记
2.6.4 RabbitMQ -- 工作队列和交换机 WorkQueue Publish/Subscribe Routing EmitLog WorkQueue WorkQueue:https://w ...
- 立完flag,你可能需要对flag进行量化
DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师. 官方网站:devui.design Ng组件库:ng-devui(欢 ...
- 洛谷P3275 [SCOI2011]糖果(差分约束)
题目描述 幼儿园里有 $N$ 个小朋友,$lxhgww $老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的 ...
- +load和+initialize方法调用时机
一.+load方法什么时候调用 +load方法会在runtime加载类.分类时调用(程序运行起来会先去加载调用+load 跟你引用没有引用其头文件没有关系).每个类.分类的+load,在程序运行过程中 ...
- v-model语法糖
其实v-model就是一个结合了v-bind和v-on的语法糖,实现了双向数据绑定. 举个(栗子):
- redis 主从复制(一主两从)
一.环境基本信息 系统 centos7 版本 redis 5.0.7 只用了一台机器,ip:192.168.64.123 master端口 6379,从机 端口 6380.6381 二.redis目录 ...
- 18V转5V,18V转3.3V,18V转3V稳压芯片,0.01A-3A输出
18V转5V,18V转3.3V,18V转3V, 18V转5V稳压芯片,18V转3.3V稳压芯片,18V转3V稳压芯片, 18V常降压转成5V电压,3.3V电压和3V电压给其他芯片或设备供电,适用于这个 ...