fix code formatting and rewrite part content

pull/7/head
Baohua Yang 2014-09-17 19:23:52 +08:00
parent 22afe36b0f
commit 7fda9225a1
3 changed files with 31 additions and 21 deletions

View File

@ -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

View File

@ -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

View File

@ -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
添加supervisors的配置文件
添加配置文件到对应目录下面
映射端口开启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之后创建镜像可以以这个镜像为基础来创建