1、Docker学习笔记
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 <alex@alexmclain.com> 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