项目作者: wrfly

项目描述 :
一些Docker File, 基于alpine的微容器
高级语言: PHP
项目地址: git://github.com/wrfly/micro-docker.git
创建时间: 2016-04-17T06:21:03Z
项目社区:https://github.com/wrfly/micro-docker

开源协议:

下载


Micro Dockers

介绍

自己做的一些Dockerfile.

每个都有详细的介绍, 如果不详细, 那就说明容器很简单..

基于 alpine 系统的微容器.

Dcokerfile 基本结构

Dockerfile的四部分

  • 基础镜像信息
  • 维护者信息
  • 镜像操作指令
  • 容器启动指令

基础镜像信息

  • FROM ubuntu
  • FROM alpine
  • FROM nginx

维护者信息

MAINTAINER wrfly mr.wrfly@gmail.com

镜像操作指令

  1. RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /et
  2. RUN apt-get update && apt-get install -y nginx
  3. RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf

容器启动指令

  1. CMD /usr/sbin/nginx
  1. CMD ["nginx", "-g", "daemon off;"]

其他指令

  1. EXPOSE

EXPOSE <port> [<port>...]

容器暴露的端口, 启动时要指定 -P 自动给容器分配端口, 或者 -p aaa:bbb 手动分配端口

  1. ENV
  1. ENV PG_MAJOR 9.3
  2. ENV PG_VERSION 9.3.4
  3. ENV PATH /usr/local/postgres-$PG_MAJOR/bin:$PATH

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

  1. ADD

ADD <src> <dest>

复制源目录到容器中的目录, 源目录是dockerfile的相对路径, 也可以是URL或者一个tar文件.

  1. COPY

COPY <src> <dest>

ADD差不多, 不过只能复制相对路径, 推荐使用COPY.

  1. ENTRYPOINT

两种格式:

  • ENTRYPOINT ["executable", "param1", "param2"]
  • ENTRYPOINT command param1 param2

配置容器启动后执行的命令, 并且不会被docker run提供的参数覆盖.
如果有多个ENTRPOINT, 只有最后一个生效.

  1. VOLUME

VOLUME ["/date"]

挂载数据卷.

  1. USER

USER wrfly

指定容器启动时默认的用户名.

  1. WORKDIR

WORKDIR /path/to/workdir

为后续指令提供工作目录(默认目录).

可以理解为cd到这个目录中, 然后后面的指令都是基于这个目录的.

可以使用多个WORKDIR, 比如:

  1. WORKDIR /a
  2. WORKDIR b
  3. WORKDIR c

那么当前的目录则为/a/b/c

  1. ONBUILD

ONBUILD [INSTRUCTION]

如果一个镜像的dockerfile中含有这个指令, 则基于这个镜像创建新的镜像的时候,都会执行指令后的内容.

alpine 基本指令

项目主页:https://github.com/gliderlabs/docker-alpine

介绍: http://gliderlabs.viewdocs.io/docker-alpine

用法: http://gliderlabs.viewdocs.io/docker-alpine/usage

安装软件: apk add -update nginx

Dockerfile Example

  1. FROM gliderlabs/alpine:3.3
  2. RUN apk add --update \
  3. python \
  4. python-dev \
  5. py-pip \
  6. build-base \
  7. && pip install virtualenv \
  8. && rm -rf /var/cache/apk/*
  9. WORKDIR /app
  10. ONBUILD COPY . /app
  11. ONBUILD RUN virtualenv /env && /env/bin/pip install -r /app/requirements.txt
  12. EXPOSE 8080
  13. CMD ["/env/bin/python", "main.py"]