Dockerfile语法

Dockerfile 语法示例

Dockerfile语法由两部分构成,注释和命令+参数

  • # Line blocks used for commenting
  • command argument argument ..

一个简单的例子:

  • # Print "Hello docker!"
  • RUN echo "Hello docker!"

Dockerfile 命令

Dockerfile有十几条命令可用于构建镜像,下文将简略介绍这些命令。

ADD

ADD命令有两个参数,源和目标。它的基本作用是从源系统的文件系统上复制文件到目标容器的文件系统。如果源是一个URL,那该URL的内容将被下载并复制到容器中。

  1. # Usage: ADD [source directory or URL] [destination directory]
  2. ADD /my_app_folder /my_app_folder

CMD

和RUN命令相似,CMD可以用于执行特定的命令。和RUN不同的是,这些命令不是在镜像构建的过程中执行的,而是在用镜像构建容器后被调用。

  1. # Usage 1: CMD application "argument", "argument", ..
  2. CMD "echo" "Hello docker!"

ENTRYPOINT

配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。

每个 Dockerfile 中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效。

ENTRYPOINT 帮助你配置一个容器使之可执行化,如果你结合CMD命令和ENTRYPOINT命令,你可以从CMD命令中移除“application”而仅仅保留参数,参数将传递给ENTRYPOINT命令。

  1. # Usage: ENTRYPOINT application "argument", "argument", ..
  2. # Remember: arguments are optional. They can be provided by CMD
  3. # or during the creation of a container.
  4. ENTRYPOINT echo
  5. # Usage example with CMD:
  6. # Arguments set with CMD can be overridden during *run*
  7. CMD "Hello docker!"
  8. ENTRYPOINT echo

ENV

ENV命令用于设置环境变量。这些变量以”key=value”的形式存在,并可以在容器内被脚本或者程序调用。这个机制给在容器中运行应用带来了极大的便利。

  1. # Usage: ENV key value
  2. ENV SERVER_WORKS 4

EXPOSE

FROM命令可能是最重要的Dockerfile命令。改命令定义了使用哪个基础镜像启动构建流程。基础镜像可以为任意镜 像。如果基础镜像没有被发现,Docker将试图从Docker image index来查找该镜像。FROM命令必须是Dockerfile的首个命令

  1. # Usage: FROM [image name]
  2. FROM ubuntu

MAINTAINER

我建议这个命令放在Dockerfile的起始部分,虽然理论上它可以放置于Dockerfile的任意位置。这个命令用于声明作者,并应该放在FROM的后面。

  1. # Usage: MAINTAINER [name]
  2. MAINTAINER authors_name

RUN

RUN命令是Dockerfile执行命令的核心部分。它接受命令作为参数并用于创建镜像。不像CMD命令,RUN命令用于创建镜像(在之前commit的层之上形成新的层)。

  1. # Usage: RUN [command]
  2. RUN aptitude install -y riak

USER

USER命令用于设置运行容器的UID。

  1. # Usage: USER [UID]
  2. USER 751

VOLUME

VOLUME命令用于让你的容器访问宿主机上的目录。

  1. # Usage: VOLUME ["/dir_1", "/dir_2" ..]
  2. VOLUME ["/my_files"]

WORKDIR

WORKDIR命令用于设置CMD指明的命令的运行目录。

  1. # Usage: WORKDIR /path
  2. WORKDIR ~/

如何构建一个docker镜像

使用Dockerfiles和手工使用Docker Daemon运行命令一样简单。脚本运行后输出为新的镜像ID

sudo docker build -t my_mongodb .

实例创建一个nginx镜像

运用FROM命令和MAINTAINER命令

  1. ############################################################
  2. # Dockerfile to build Nginx Installed Containers
  3. # Based on Ubuntu
  4. ############################################################
  5. # Set the base image to Ubuntu
  6. FROM ubuntu
  7. # File Author / Maintainer
  8. MAINTAINER Maintaner Name

安装nginx

  1. # Install Nginx
  2. # Add application repository URL to the default sources
  3. RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/apt/sources.list
  4. # Update the repository
  5. RUN apt-get update
  6. # Install necessary tools
  7. RUN apt-get install -y nano wget dialog net-tools
  8. # Download and Install Nginx
  9. RUN apt-get install -y nginx

安装Nginx后,我们需要配置Nginx并且替换掉默认的配置文件

  1. # Remove the default Nginx configuration file
  2. RUN rm -v /etc/nginx/nginx.conf
  3. # Copy a configuration file from the current directory
  4. ADD nginx.conf /etc/nginx/
  5. # Append "daemon off;" to the beginning of the configuration
  6. RUN echo "daemon off;" >> /etc/nginx/nginx.conf
  7. # Expose ports
  8. EXPOSE 80
  9. # Set the default command to execute
  10. # when creating a new container
  11. CMD service nginx start

替换的配置文件内容

    worker_processes 1;events { worker_connections 1024; }http {sendfile on;server {listen 80;location / {proxy_pass http://httpstat.us/;proxy_set_header X-Real-IP $remote_addr;}}}

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/xzkzzz/p/9906547.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412934.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[css] 会引起Reflow和Repaint的操作有哪些?

[css] 会引起Reflow和Repaint的操作有哪些? 页面布局和几何信息(比如:增加删除dom,改变元素位置或者尺寸等)发生改变时,会触发Reflow。 给dom节点添加样式,会触发Repaint。 触发Reflow一定会引起Repaint,触…

Centos7离线安装Mysql8

一,下载tar包 1,直接下载:https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.15-1.el7.x86_64.rpm-bundle.tar 2,百度网盘:https://pan.baidu.com/s/1V180rx0FVFuUOrnPMqrVpQ 提取码:08jx 二&…

[css] 你有用过clip-path吗?说说你对它的理解和它都有哪些运用场景?

[css] 你有用过clip-path吗&#xff1f;说说你对它的理解和它都有哪些运用场景&#xff1f; clip-path属性可以创建一个只有元素的部分区域可以显示的剪切区域它的值可以为以下几种: 用 表示剪切元素的路径: 一种形状&#xff0c;其大小和位置由<几何盒>值定义。如果没有…

elasticsearch 6.x (五) 单一文档 API 介绍和使用 update和delete API

大家好&#xff0c;我是烤鸭&#xff1a;今天分享的是官网6.x 单一文档(Single document APIs)APIs。本文这是部分翻译&#xff0c;如果想看全部的&#xff0c;还是建议阅读官方api。链接&#xff1a;https://www.elastic.co/guide/en/elasticsearch/reference/current/docs…

Linux 编译安装BIND

下载网址&#xff1a;www.isc.org 首选需要安装开发环境&#xff0c;包括openssl等开发包&#xff1b; 解压文件 tar -zxvf bind*.tar.gz 创建named使用的系统用户 groupadd -g 53 -r named useradd -u 53 -r named 编译安装 …

Mysql设置忽略大小写

如果你不在意数据的话直接删除数据&#xff08;删数据库前请备份&#xff09; 1 停止MySQL 2 删除 MySQL的数据 /var/lib/mysql 3 修改该 lower_case_table_names 1 4 启动 mysql 4 搞定 解决Navicat连接MySQL出现1251-Client does not support authentication protocol requ…

[css] 你是怎么选择resetting和normalizing的?为什么?

[css] 你是怎么选择resetting和normalizing的&#xff1f;为什么&#xff1f; 一般选择normalizeReset: 比较粗暴的处理方式&#xff0c;不管有用没有统统处理成一种方式&#xff0c;如果是临时页面会采用。* {margin: 0;padding: 0;box-sizing: border-box; } *::after, *::be…

http://www.a.cn/?a.b=1 取a.b的值

$_GET[a_b] 转载于:https://www.cnblogs.com/liiu/p/9909286.html

解决svn:E200030: sqlite[S11]:database disk image is malformed

一&#xff0c;问题产生原因&#xff1a;我的电脑突然蓝屏&#xff0c;然后重启电脑后&#xff0c;更新项目提示这个鬼东西 二&#xff0c;解决方法&#xff1a; 1&#xff0c;下载sqlite3并把sqlite3.exe放到项目文件夹.svn同级目录 2&#xff0c;在项目文件夹的上面路径那里…

Java 正则表达式 工具类 中文 英文 email 手机号 身份证 数字 日期

大家好&#xff0c;我是烤鸭&#xff1a; 分享一个Java版本的正则校验工具类。 Validation.java package com.xxx.xxx.common.utils;import java.util.regex.Matcher; import java.util.regex.Pattern; /*** 验证工具类* author admin**/ public class Validation { //--…

[css] position跟margin collapse这些特性相互叠加后会怎么样?

[css] position跟margin collapse这些特性相互叠加后会怎么样&#xff1f; 怎样防止外边距重叠&#xff1f;底部元素脱离文档流(float: left/right || position: absolute/fixed)个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一…

Python_全局变量的定义

1.在my套件下新建一个关键字systemkey并进行脚本的编写&#xff1a;创建一个${var1}变量&#xff0c;并赋值为aaaaaaaaaa Set Global Variable ${var1} aaaaaaaaaa 2.在全局&#xff08;最顶部文件夹&#xff09;中Suite Setup→Edit→systemkey&#xff08…

Tomcat设置URL兼容特殊符号

catalina.properties配置&#xff1a; tomcat.util.http.parser.HttpParser.requestTargetAllow|{}[] org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASHtrueserver.xml配置&#xff1a; <Connector port"80" protocol"HTTP/1.1"connectionTi…

[css] 移动端的布局用过媒体查询吗?写一个试试

[css] 移动端的布局用过媒体查询吗&#xff1f;写一个试试 使用过Demo<style>.demo {width: 100px;height: 100px;background: #000000;}media only screen and (min-width: 680px ) {.demo {background: red;}} </style> <div class"demo"></d…

java 实现 常见排序算法(一) 冒泡排序

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享一下基础排序算法之冒泡排序。 1. 冒泡排序&#xff1a; 原理&#xff1a;比较两个相邻的元素&#xff0c;将较大的元素交换至右端。 思路&#xff1a;依次比较相邻的两个数&#xff0c;将小数放在前面&#xff0c;大…

vue学习之npm

任何一门计算机语言都包含了丰富的第三方库&#xff0c;npm就是JavaScript这门语言的第三方库管理工具&#xff0c;本文详细介绍了JavaScript的包管理工具&#xff0c;npm。 在计算机中安装好Node.js之后&#xff0c;默认已经安装好了npm包管理工具&#xff0c;我们可以输入npm…

idea的maven project消失解决方案

方案一&#xff1a;点击菜单栏View->Tool Windows->Maven projects 方案二&#xff1a;File -> Settings -> Plugins -> Installed ->找到下面两个并勾选->然后重启 1&#xff0c;Maven Integration 2&#xff0c;Maven Integration Extension

[css] 举例说明你知道的css技巧有哪些?

[css] 举例说明你知道的css技巧有哪些&#xff1f; /* 等比例容器 */ .ratio { position: relative; display: block; } .ratio:before { content: ; padding-top: 100%; float: left; } .ratio::after { content: ; display: block; clear: both; }/* 非表单元素也适用的 dis…

Java 深copy 浅copy 引用copy

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享一下浅copy和深copy。 1. 深copy 什么是深copy&#xff0c;只复制原对象属性值&#xff0c;不管地址。 说一下业务场景&#xff1a; 如果我想创建一个对象&#xff0c;只是对原对象的某个属性值改变。普通的做法就是new 一个…

ubuntu设置root密码及 Xftp连接linux(ubuntu)时提示ssh服务器拒绝了密码,请再试一次...

ubuntu设置root密码及 Xftp连接linux&#xff08;ubuntu&#xff09;时提示ssh服务器拒绝了密码&#xff0c;请再试一次 原文:ubuntu设置root密码及 Xftp连接linux&#xff08;ubuntu&#xff09;时提示ssh服务器拒绝了密码&#xff0c;请再试一次altf2,在弹出的运行窗口中输入…