Docker是一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源。它是一个开发的平台,用来为开发者和系统管理员构建、发布和运行分布式应用。 是程序运行的“容器”(Linux containers),实现了应用级别的隔离(沙箱)。多个容器运行时互补影响,安全而稳定。
重要概念
image 镜像 镜像就是一个只读的模板。比如,一个镜像可以包含一个完整的 Ubuntu 系统,并且安装了 ap ache。 镜像可以用来创建 Docker 容器。 其他人制作好镜像,我们可以拿过来轻松的使用。这就是吸引我 的特性。
Docker container 容器 Docker 用容器来运行应用。容器是从镜像创建出来的实例(好有面向对象的感 觉,类和对象),它可以被启动、开始、停止和删除。
仓库 这个好理解了,就是放镜像的文件的场所。比如最大的公开仓库是 Docker Hub。 也可创建私有仓库。
Dockerfile
它是用户创建自定义镜像的文件。它通常分为四部分:基础镜像信息,维护者信息,镜像操作指令和容器启动时
的指令。
#基础系统信息,基于ubuntu 14.04构建的
FROM ubuntu:14.04
MAINTAINER Alex McLain <[email protected]> RUN apt-get -qq update
#安装apache、hg、php5
RUN apt-get -y install apache2 apache2-utils curl mercurial php5 php5-cli php5-mcrypt # TODO: Remove
#是的,vim确实很大,不安装为好
RUN apt-get -y install vim
RUN echo "colorscheme delek" > ~/.vimrc
# Configure hgweb
ADD hg/add.php /etc/default/hgweb/hg/
ADD hg/hgweb.config /etc/default/hgweb/hg/
ADD hg/hgweb.cgi /etc/default/hgweb/hg/
ADD hg/hgusers /etc/default/hgweb/hg/
# Configure Apache
ADD apache/hg.conf /etc/default/hgweb/apache/
RUN rm /etc/apache2/sites-enabled/*
RUN a2enmod rewrite && a2enmod cgi
ADD load-default-scripts /bin/
RUN chmod u+x /bin/load-default-scripts #创建一个挂载点,本机或其他容器可以将其挂载。启动时用-v参数进行挂载
VOLUME /var/hg
VOLUME /etc/apache2/sites-available
#暴露的端口号,启动时要通过-p参数指定
EXPOSE 80
#启动时执行的命令
CMD load-default-scripts && service apache2 start && /bin/bash