Docker 学习文档(知识结构整理)

2020-06-17 06:57:09易采站长站整理

Exec form ENTRYPOINT 例子

通过ENTRYPOINT使用 exec form 方式设置稳定的默认命令和选项,而使用CMD添加默认之外经常被改动的选项。

FROM ubuntuENTRYPOINT [“top”, “-b”]CMD [“-c”]

通过 Dockerfile 使用ENTRYPOINT展示前台运行 Apache 服务

FROM debian:stableRUN apt-get update && apt-get install -y –force-yes apache2EXPOSE 80 443VOLUME [“/var/www”, “/var/log/apache2”, “/etc/apache2”]ENTRYPOINT [“/usr/sbin/apache2ctl”, “-D”, “FOREGROUND”]

Shell form ENTRYPOINT 例子

这种方式会在/bin/sh -c中执行,会忽略任何CMD或者docker run命令行选项,为了确保docker stop能够停止长时间运行ENTRYPOINT的容器,确保执行的时候使用exec选项。

FROM ubuntuENTRYPOINT exec top -b

如果在ENTRYPOINT忘记使用exec选项,则可以使用CMD补上:

FROM ubuntuENTRYPOINT top -bCMD –ignored-param1 # –ignored-param2 … –ignored-param3 … 依此类推

7.9 VOLUME

VOLUME [“/data”]

创建一个可以从本地主机或其他容器挂载的挂载点,后续具体介绍。

7.10 USER

USER daemon

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

7.11 WORKDIR

WORKDIR /path/to/workdir

为后续的RUN、CMD、ENTRYPOINT指令配置工作目录。可以使用多个WORKDIR指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。

WORKDIR /aWORKDIR bWORKDIR cRUN pwd

最终路径是/a/b/c。

WORKDIR指令可以在ENV设置变量之后调用环境变量:

ENV DIRPATH /pathWORKDIR

$DIRPATH/$DIRNAME

最终路径则为 /path/$DIRNAME。

7.12 ONBUILD

ONBUILD [INSTRUCTION]

配置当所创建的镜像作为其它新创建镜像的基础镜像时,所执行的操作指令。

例如,Dockerfile 使用如下的内容创建了镜像 image-A:

[…]ONBUILD ADD . /app/srcONBUILD

RUN /usr/local/bin/python-build –dir /app/src[…]

如果基于 image-A 创建新的镜像时,新的 Dockerfile 中使用 FROM image-A 指定基础镜像时,会自动执行 ONBUILD 指令内容,等价于在后面添加了两条指令。

# Automatically run the following

ADD . /app/src

RUN /usr/local/bin/python-build –dir /app/src

使用ONBUILD指令的镜像,推荐在标签中注明,例如 ruby:1.9-onbuild。

7.13 Dockerfile Examples


# Nginx
#
# VERSION 0.0.1

FROM ubuntu
MAINTAINER Victor Vieux <victor@docker.com>

RUN apt-get update && apt-get install -y inotify-tools nginx apache2 openssh-server

# Firefox over VNC
#
# VERSION 0.3

FROM ubuntu

# Install vnc, xvfb in order to create a 'fake' display and firefox