(八)Docker Dockerfile

虽然,前面已经会 使用 Nginx 和 docker selenium 来启动容器,但也仅仅是会使用,Dcoker 中还有许多概念和细节需要我们继续学习。

Dockerfile 文件分析


Dockerfile 由一行行命令语句组成,并且支持以 # 开头的注释行。

一般的 Dockerfile 分为四部分:基础镜像信息、 维护者信息、 镜像操作指令 和 容器启动时执行指令 。

以Selenium/Hub 的 Dockerfile 文件为例:

# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# NOTE: DO *NOT* EDIT THIS FILE.  IT IS GENERATED.
# PLEASE UPDATE Dockerfile.txt INSTEAD OF THIS FILE
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FROM selenium/base:3.8.1-erbium
LABEL authors=SeleniumHQ

USER seluser

#========================
# Selenium Configuration
#========================

EXPOSE 4444

# As integer, maps to "maxSession"
ENV GRID_MAX_SESSION 5
# In milliseconds, maps to "newSessionWaitTimeout"
ENV GRID_NEW_SESSION_WAIT_TIMEOUT -1
# As a boolean, maps to "throwOnCapabilityNotPresent"
ENV GRID_THROW_ON_CAPABILITY_NOT_PRESENT true
# As an integer
ENV GRID_JETTY_MAX_THREADS -1
# In milliseconds, maps to "cleanUpCycle"
ENV GRID_CLEAN_UP_CYCLE 5000
# In seconds, maps to "browserTimeout"
ENV GRID_BROWSER_TIMEOUT 0
# In seconds, maps to "timeout"
ENV GRID_TIMEOUT 30
# Debug
ENV GRID_DEBUG false
# As integer, maps to "port"
ENV GRID_HUB_PORT 4444

COPY generate_config     entry_point.sh     /opt/bin/
# Running this command as sudo just to avoid the message:
# To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details.
# When logging into the container
RUN /opt/bin/generate_config > /opt/selenium/config.json

CMD ["/opt/bin/entry_point.sh"]
  • FROM

Dockerfile 都必须以 FROM 命令开始。 FROM命令会指定镜像基于哪个基础镜像创建,接下来的命令也会基于这个基础镜像。

  • USER

指定运行容器时的用户名或 UID,后续的RUN、CMD、ENTRYPOINT也会使用指定用户。

  • EXPOSE

告诉 Docker 服务端容器对外映射的本地端口,需要在 docker run 的时候使用-p或者-P选项生效。

  • ENV

指定一个环节变量,会被后续 RUN 指令使用,并在容器运行时保留。

  • CMD

CMD 有三种使用方式:

  • CMD “executable”,“param1”,“param2”
  • CMD “param1”,“param2”
  • CMD command param1 param2 (shell form)

CMD指定在 Dockerfile 中只能使用一次,如果有多个,则只有最后一个会生效。

CMD的目的是为了在启动容器时提供一个默认的命令执行选项。如果用户启动容器时指定了运行的命令,则会覆盖掉CMD指定的命令。

CMD会在启动容器的时候执行,build 时不执行,而RUN只是在构建镜像的时候执行,后续镜像构建完成之后,启动容器就与RUN无关了,这个初学者容易弄混这个概念,这里简单注解一下。

阅读 Dockerfile 文件的意义



阅读 Dockerfile 文件,可以帮助我们了解 容器启动时都做了哪些事情。我们还可以根据需求修改启动参数。

例如,Selenium/hub 的 Dockerfile 文件中定义,超时时间是30秒。

# In seconds, maps to "timeout"
ENV GRID_TIMEOUT 30

如果需要修改这个参数,可以在启动 selenium-hub 时修改 GRID_TIMEOUT 参数。

$ sudo docker run -d -P --name selenium-hub -e GRID_TIMEOUT=10 selenium/hub

Dockerfile 文件中还是其它参数,参考:http://www.docker.org.cn/dockerppt/114.html

原文地址:https://www.cnblogs.com/jason89/p/9034121.html

时间: 2024-07-31 09:40:22

(八)Docker Dockerfile的相关文章

(八) Docker 部署 mongodb

参考并感谢 官方文档 https://hub.docker.com/_/mongo 下载mongo镜像(不带tag标签则表示下载latest版本) docker pull mongo 启动 mongodb 容器 docker run -d -p 27017:27017 --name mongoDev --mount type=bind,source=/var/docker/configs/mongo/,target=/data/configdb --mount type=bind,source=

Docker Dockerfile详解

dockerfike快速创建自定义的Docker镜像 一.目录 1.docker典型结构 2.指令介绍 3.创建docker镜像 二.结构 DockerFile分为四部分组成:基础镜像信.维护者信息.镜像操作指令和容器启动时执行指令.例如: #第一行必须指令基于的基础镜像 From ubutu #维护者信息 MAINTAINER docker_user [email protected] #镜像的操作指令 apt/sourcelist.list RUN apt-get update &&

.Net Core+cenos7+Docker+Dockerfile 部署实践

因为这段时间比较忙,同时也在抽时间将开发框架转移到 .net Core 上 所以写博客的时间就少了,这次我利用dockerfile成功将.net Core程序部署到了cenos7容器中,特抽时间把我的操作过程总结出来和大家分享. 首先要准备一个LINUX系统,可以是ubuntu,也可以是centos,我用的是虚拟机上装ubuntu14.04 然后安装docker,这个安装过程我就不说了,大家自己在网上搜索一下吧,大把,操作也简单. 我用的版本是 然后我建议先pull一个centos 7的镜像到本

docker: Dockerfile命令介绍

pre.ctl { font-family: "Liberation Mono", monospace } p { margin-bottom: 0.25cm; line-height: 120% } a:link { } 前一章介绍了Dockerfile创建镜像的方法,Dockerfile文件都是一些指令,因此要掌握Dockerfile就必须了解这些指令.这一章就介绍下Dockerfile的指令. From: 功能为指定基础镜像,并且必须是第一条指令. 如果不以任何镜像为基础,那么写

Docker Dockerfile 指令

Dockerfile 指令 CMD CMD指令用于指定一个容器启动时要运行的命令.这有点儿类似于RUN指令,只是RUN指令是指定镜像被构建时要运行的命令,而CMD是指定容器被启动时要运行的命令.这和使用docker run命令启动容器时指定要运行的命令非常类似 $ sudo docker run -i -t jamtur01/static_web /bin/true 可以认为上述命令和在Dockerfile中使用如下的CMD 指令是等效的. CMD ["/bin/true"] 选项和命

Docker Dockerfile

一.什么是 Dockerfile 比如我想制作一个镜像,这个镜像安装了 lnmp .redis .elk 等各种软件,制作流程会是这样: ① 先下载一个基础镜像,如 centos② 使用这个镜像启动成一个容器③ 在容器中安装 lnmp .redis .elk 等各种软件④ 最后再把容器制作成一个镜像 什么是 Dockerfile:Dockerfile 相当于一个命令集 ( 命令的集合 ) 文件,我们可以把上面的步骤都写到这个文件,然后执行这个文件就能生成一个镜像 二.Dockerfile 常用指

Docker DockerFile文件指令

1.dockerfile指令格式 # Comment注释 INSTRUCTION argument指令名 + 参数 2.普通指令 1. FROM 已存在的镜像,基础镜像,第一条非注释指令 FROM <image> FROM <image>:<tag> 2. MAINTAINER 镜像作者信息.联系信息 与dockercommit -a类似 MAINTAINER <name> 3. RUN 指定当前镜像中运行的命令 每一个RUN指令都毁在当层镜像的上层创建一个

docker Dockerfile学习---构建redis环境

1.创建项目目录并下载包及文件 mkdir centos_redis cd centos_redis wget http://download.redis.io/releases/redis-5.0.5.tar.gz wget http://mirrors.aliyun.com/repo/epel-7.repo wget http://mirrors.163.com/.help/CentOS7-Base-163.repo tar -zxf redis-5.0.5.tar.gz 2.编辑Docke

docker Dockerfile文件的编写部分命令

镜像的构建过程:编写dockerfile文件,执行docker build 进行构建镜像,最后docker run 运行容器镜像实例. docker build -t mycentos:1.01 . 构建镜像,最终的名字为mycentos,docker build -f /root/firstdockerfile/Dockerfile2 -t cmdtest . -f参数需要加绝对路径,当当前没有dockerfile文件时需要使用这个参数. docker run -it mycentos:1.0