From 7fda9225a1a313fbfbddfa24d54df09d3c4cfb34 Mon Sep 17 00:00:00 2001 From: Baohua Yang Date: Wed, 17 Sep 2014 19:23:52 +0800 Subject: [PATCH] fix code formatting and rewrite part content --- advanced_network/communication.md | 4 +++- practice/local_repo.md | 24 ++++++++++++------------ practice/supervisor.md | 24 ++++++++++++++++-------- 3 files changed, 31 insertions(+), 21 deletions(-) diff --git a/advanced_network/communication.md b/advanced_network/communication.md index 5f526c0..22e3bde 100644 --- a/advanced_network/communication.md +++ b/advanced_network/communication.md @@ -2,7 +2,9 @@ 判断2个容器之间是否能够通信,在操作系统层面,取决于3个因素: * 网络拓扑是否连接到容器的网络接口?默认docker会将所有的容器连接到docker0这网桥来提供数据包通信。其他拓扑结构将在稍后的文档中详细介绍。 * 主机是否开启ip转发,ip_forward参数为1的时候可以提供数据包转发。通常你只需要为docker 设定 --ip-forward=true, -docker 就会在服务启动的时候设定ip_forward参数为1。下面是手工检查并手工设定该参数的方法。 +docker 就会在服务启动的时候设定ip_forward参数为1。 + +下面是手工检查并手工设定该参数的方法。 ``` # Usually not necessary: turning on forwarding, # on the host where your Docker server is running diff --git a/practice/local_repo.md b/practice/local_repo.md index 9f17ff9..f54c80a 100644 --- a/practice/local_repo.md +++ b/practice/local_repo.md @@ -1,20 +1,20 @@ ##部署本地仓库 -由于网络的关系,国内用户在使用docker hub的时候,很难pull一个基本的镜像下来。 +有时候使用Docker Hub这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。 + 本节介绍如何创建部署本地仓库。 -###安装docker -参见本文第三小节 -###从文件系统创建一个image镜像 -创建镜像有很多方法,官方的推荐是pull一个,不过在墙内,想pull一个基本的ubuntu都没办法完成。 -这里推荐一个办法就是从一个文件系统import一个镜像,个人推荐可以使用opvz的模板来创建:(openvz可以说是容器虚拟化的先锋吧) +###从文件系统创建一个镜像 +创建镜像有很多方法,用户可以从Docker Hub获取一个,也可以利用本地文件系统创建一个。 + +要从本地文件系统import一个镜像,个人推荐可以使用openvz(容器虚拟化的先锋技术)的模板来创建: openvz的模板下载地址如下: http://openvz.org/Download/templates/precreated -下载完之后,比如:下载了一个ubuntu14.04的镜像 -使用以下命令: +比如:下载了一个ubuntu14.04的镜像, +下载完之后,使用以下命令: ``` sudo cat ubuntu-14.04-x86_64-minimal.tar.gz |docker import - ubuntu:14.04 ``` -然后用docker images看下: +然后查看镜像: ``` docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE @@ -23,7 +23,7 @@ ubuntu 14.04 05ac7c0b9383 17 seconds ago 就多了一个我们的ubuntu镜像 ###创建私有仓库 -官方指南称最简单的办法是 docker run -p 5000:5000 registry,如果被墙了,也无法下载该images。感谢CSDN,我有一个1M的腾讯云服务器,上面搭建了一个私有仓库大家可以使用 +官方指南称最简单的办法是`docker run -p 5000:5000 registry` 但是如果被墙了,也无法下载该images。感谢CSDN,我有一个1M的腾讯云服务器,上面搭建了一个私有仓库大家可以使用 docker pull 203.195.193.251:5000/registry 到我的服务器下载 速度虽然慢点,但有保证! 另外的方法是使用刚才的创建的ubuntu来创建,官方有个docker仓库的源码地址 https://github.com/dotcloud/docker-registry 下载私有仓库的源码,可以根据上面的docker file来创建。 @@ -32,9 +32,9 @@ docker pull 203.195.193.251:5000/registry http://www.vpsee.com/2013/11/build-your-own-docker-private-regsitry-service/ ###在私有仓库上传、下载、搜索images -创建好自己的私有仓库之后,可以使用docker tag 一个镜像,然后push,然后在别的机器上pull下来就好了。这样我们的局域网私有docker仓库就搭建好了。 +创建好自己的私有仓库之后,可以使用`docker tag` 一个镜像,然后push,然后在别的机器上pull下来就好了。这样我们的局域网私有Docker仓库就搭建好了。 步骤如下: -使用 docker run -p 5000:5000 registry 在局域网的一台机器上开启一个容器之后,我的局域网私有仓库地址为192.168.7.26:5000 +使用`docker run -p 5000:5000 registry` 在局域网的一台机器上开启一个容器之后,我的局域网私有仓库地址为192.168.7.26:5000 先在本机看下现有的images ``` root ~ # docker images diff --git a/practice/supervisor.md b/practice/supervisor.md index fff71f2..4e94472 100644 --- a/practice/supervisor.md +++ b/practice/supervisor.md @@ -1,29 +1,38 @@ ##使用 Supervisor来管理进程 -docker 容器在启动的时候开启单个进程,比如,一个ssh或则apache 的daemon服务。但我们经常需要在一个机器上开启多个服务,这可以有很多方法,最简单的就是把多个启动命令方到一个启动脚本里面,启动的时候直接启动这个脚本,另外就是安装进程管理工具。. +docker 容器在启动的时候开启单个进程,比如,一个ssh或则apache 的daemon服务。但我们经常需要在一个机器上开启多个服务,这可以有很多方法,最简单的就是把多个启动命令方到一个启动脚本里面,启动的时候直接启动这个脚本,另外就是安装进程管理工具。 + 本小节将使用进程管理工具supervisor来管理容器中的多个进程。使用Supervisor可以更好的控制、管理、重启我们希望运行的进程。在这里我们演示一下如何同时使用ssh和apache服务。 -###dockerfile + +###配置 +首先创建一个dockerfile。 +``` FROM ubuntu:13.04 MAINTAINER examples@docker.com RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list RUN apt-get update RUN apt-get upgrade -y +``` 安装supervisor 安装 ssh apache supervisor - +``` RUN apt-get install -y openssh-server apache2 supervisor RUN mkdir -p /var/run/sshd RUN mkdir -p /var/log/supervisor +``` 这里安装3个软件,还创建了2个用来允许ssh和supervisor的目录 COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf 添加supervisor‘s的配置文件 添加配置文件到对应目录下面 映射端口,开启supervisor 使用dockerfile来映射指定的端口,使用cmd来启动supervisord +``` EXPOSE 22 80 CMD ["/usr/bin/supervisord"] +``` 这里我们映射了22 和80端口,使用supervisord的可执行路径启动服务。 -###supervisor配置文件内容 + +supervisor配置文件内容为。 ``` [supervisord] nodaemon=true @@ -35,7 +44,7 @@ command=/bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFO ``` 配置文件包含目录和进程,第一段supervsord配置软件本身,使用nodaemon参数来运行。下面2段包含我们要控制的2个服务。每一段包含一个服务的目录和启动这个服务的命令 ###使用方法 -创建image +创建镜像 ``` $ sudo docker build -t test/supervisord . ``` @@ -48,7 +57,6 @@ $ sudo docker run -p 22 -p 80 -t -i test/supervisords 2013-11-25 18:53:23,346 INFO spawned: 'sshd' with pid 6 2013-11-25 18:53:23,349 INFO spawned: 'apache2' with pid 7 ``` -使用docker run来启动我们创建的容器。使用多个-p 来映射多个端口,这样我们就能同时访问ssh和apache服务了。 +使用`docker run`来启动我们创建的容器。使用多个`-p` 来映射多个端口,这样我们就能同时访问ssh和apache服务了。 -###可以使用这个方法创建一个只有ssh服务基础image -之后创建image可以以这个image为基础来创建 +可以使用这个方法创建一个只有ssh服务基础image,之后创建镜像可以以这个镜像为基础来创建