docker - [11] 数据卷之DockerFile
通过DockerFile可以生成一个镜像
一、DockerFile的介绍
狂神:
dockerfile是用来构建docker镜像的文件命令参数脚本。狂神:
dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件狂神:
Docker镜像逐渐成为企业交付的标准,必须要掌握!
DockerFile:构建文件,定义了一切的步骤,源代码
DockerImages:通过 DockerFile 构建生成的镜像,最终发布和运行的产品。
DockerContainer:容器就是镜像运行起来提供服务的。
二、DockerFile的指令
| 指令 | 说明 |
| FROM | 设置镜像使用的基础镜像 |
| MAINTAINER | 设置镜像的作者 |
| RUN | 编译镜像时运行的脚本 |
| CMD | 设置容器的启动命令 |
| LABEL | 设置镜像的标签 |
| EXPOSE | 设置镜像暴露的端口 |
| ENV | 设置容器的环境变量 |
| ADD | 编译镜像时复制文件到镜像中 |
| COPY | 编译镜像时复制文件到镜像中 |
| ENTRYPOINT | 设置容器的入口程序 |
| VOLUME | 设置容器的挂载卷 |
| USER | 设置运行RUN CMD ENTRYPOINT的用户名 |
| WORKDIR | 设置RUN CMD ENTRYPOINT COPY ADD指令的工作目录 |
| ARG | 设置编译镜像时加入的参数 |
| ONBUILD | 设置镜像的ONBUILD指令 |
| STOPSIGNAL | 设置容器的退出信号量 |
2.1、CMD和ENTRYPOINT的区别
CMD:指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
(1)编写dockerfile并构建镜像,之后启动镜像;

(2)直接运行镜像,会执行CMD处配置的命令。如果执行docker run 2b06f9641629 -l会报错。

(3)追加参数会报错:docker run 2b06f9641629 -l

ENTRYPOINT:指定这个容器启动的时候要运行的命令,可以追加命令
(1)编写dockerfile:dockerfile-entrypoint-test
FROM centos
ENTRYPOINT ["ls","-a"]
(2)构建镜像:docker build -f dockerfile-entrypoint-test -t entrypointtest .

(3)启动镜像:docker images | grep entrypoint

(4)追加参数:docker run a58b53c50da3 -l

三、DockerFile构建过程
3.1、docker file语法规范
1、每个保留关键字(指令)都必须是大写字母
2、执行从上到下顺序执行
3、
#表示注释4、每一个指令都会创建一个新的镜像层,并提交
示例:centos的dockerfile
FROM scratch
MAINTAINER The CentOS Project <cloud-ops@centos.org>
ADD c7-docker.tar.xz /
LABEL name="CentOS Base Image" \
vendor="CentOS" \
license="GPLv2" \
build-date="2016-03-04"
# Volumes for systemd
# VOLUME ["/run", "/tmp"]
# Environment for systemd
# ENV container=docker
# For systemd usage this changes to /usr/sbin/init
# Keeping it as /bin/bash for compatability with previous
CMD ["/bin/bash"]
3.2、docker file构建步骤
(1)编写一个dockerfile文件
(2)docker build构建成为一个镜像
(3)docker run运行镜像
(4)docker push发布镜像(DockerHub、阿里云镜像仓库)
(1)编写dockerfile文件:dockerfile1
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "----end----"
CMD /bin/bash
(2)docker build构建成为一个镜像:harleycentos:1.0
docker build -f dockerfile1 -t harleycentos:1.0 .

mydockerfile-centos:dockerfile文件路径
mycentos:0.1镜像名
(3)docker run运行镜像:docker run -it harleycentos:1.0 bash

(4)可以使用docker inspect看到demo中的挂载属于匿名挂载

(5)docker push发布镜像
3.3、制作一个centos镜像
(1)编写dockerfile文件:mydockerfile
# 以哪个镜像作为基础
FROM centos
MAINTAINER harley<hhl686666@163.com>
# 设置环境变量MYPATH
ENV MYPATH /usr/local
# 设置工作目录(docker run -it运行镜像之后所在的目录)
WORKDIR $MYPATH
# 安装vim、net-tools
RUN yum -y install vim
RUN yum -y install net-tools
# 暴露80端口
EXPOSE 80
CMD echo $MYPATH
CMD echo "-----end-----"
CMD /bin/bash
(2)构建镜像:docker build -f mydockerfile -t mycentos:0.1 .
— 要养成终身学习的习惯 —
docker - [11] 数据卷之DockerFile的更多相关文章
- Docker容器数据卷-Volume详解
Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷(Data Volume).数据卷可以用来存储Docker应用的数据,也可以用来在Docker容器间进行数据共享.数据 ...
- docker基础---数据卷volumes
1.数据卷 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效 对数据卷的更新,不会影响镜像 卷会一直存在 ...
- 5、docker容器数据卷: -v添加共享传递容器数据卷
1.是什么 1.docker理念 先来看看Docker的理念:* 将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的* 容器之间希望有可能共享数据 2.保 ...
- Docker学习笔记 - Docker的数据卷
一.什么是数据卷? 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效 对数据卷的更新,不会影响镜像 数据 ...
- docker之数据卷管理
转自:https://www.cnblogs.com/jsonhc/p/7777811.html docker之数据卷的备份和还原 1.现在利用镜像创建一个nginx的服务容器,并挂载一个数据卷 [r ...
- Docker数据管理(数据卷&数据卷容器)
生产环境中使用Docker的过程中,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作. 容器中管理数据主要有两种方式: 数据卷(Data Volumes):容 ...
- docker定义数据卷及数据卷的备份恢复
前言:生产环境中使用docker时,往往需要对数据进行持久化(只有把容器导出为镜像,才能够保存写的数据,否则容器删除或者停止,所有数据都会没有),或者需要在多个容器之间进行数据共享,这必然涉及容器的数 ...
- docker.[7] 数据卷容器
docker.[7] 数据卷容器 挂在数据卷容器的方法: # docker run --volumes-from [Container Name]
- docker.[6] 数据卷
docker.[6] 数据卷 操作指令: # docker run -v /data1:/data2 -i -t centos /bin/bash 参数说明: data1 : 这里指的是宿主机的目录( ...
- docker挂载数据卷
1.Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷,简单的理解就是将数据持久化的工具. 2.在使用docker容器的时候,会产生一系列的数据文件,这些数据文件在我们 ...
随机推荐
- R数据分析:cox模型如何做预测,高分文章复现
今天要给大家分享的文章是 Cone EB, Marchese M, Paciotti M, Nguyen DD, Nabi J, Cole AP, Molina G, Molina RL, Minam ...
- Terraform Aliyun 创建ecs, kubernetes 实例
Terraform Aliyun 创建ecs, kubernetes 实例 terraform demo for aliyun 创建vpc, 网关, EIP, ecs, kubernetes, Ser ...
- 用 16G 内存存放 30亿数据(Java Map)转载
在讨论怎么去重,提出用 direct buffer 建 btree,想到应该有现成方案,于是找到一个好东西: MapDB - MapDB : http://www.mapdb.org/ 以下来自:ko ...
- 我的世界服务端插件安装 AuthMe用户登录插件安装
Minecraft服务端插件安装-AuthMe用户登录插件安装 需要准备AuthMe插件 AuthMe-5.6.0.jar用户登录插件 例如使用/register <密码> <确认密 ...
- Write failed: Broken pipe > Couldn‘t read packet: Connection reset by peer SFTP服务器连接出现的问题
如果你链接服务器的时候出现下面的提示: Write failed: Broken pipeCouldn't read packet: Connection reset by peer这个问题的原因是C ...
- liquibase maven
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
- 操作系统messages文件位置更改
问题现象 在遇到一个问题的时候需要查看操作系统的日志,但是到操作系统上的 /var/log/messages 文件中发现该文件已经很久没有刷新过了. 这个系统之前是做过安全加固的,我怀疑它改过操作系统 ...
- Qt编写地图综合应用31-仪表盘
一.前言 用Qt开发仪表盘控件非常方便,无论是用widget的painter还是qml,尤其是qml,内置的那些动画效果非常适合做这类的应用,这次不讨论如何用qt开发仪表盘,而是直接用echart内置 ...
- Qt编写可视化大屏电子看板系统16-标准柱状图
一.前言 标准柱状图是大屏系统中最常用的一种展示数据效果图,提供不同的柱子显示数据值,在QCustomPlot的基础上拓展了顶部显示对应的值,不同的柱子不同的颜色,同时还可以调用内置的触发报警颜色的机 ...
- 主动式AI(代理式)与生成式AI的关键差异与影响
大型语言模型(LLMs)如GPT可以生成文本.回答问题并协助完成许多任务.然而,它们是被动的,这意味着它们仅根据已学到的模式对接收到的输入作出响应.LLMs无法自行决策:除此之外,它们无法规划或适应变 ...