express refine

pull/1/head
Baohua Yang 2014-09-11 22:52:28 +08:00
parent 1f5fb2d521
commit 1d101330fd
16 changed files with 122 additions and 96 deletions

View File

@ -1,7 +1,7 @@
Docker -- 从入门到实践 Docker -- 从入门到实践
=============== ===============
v0.1 v0.11
[Docker] (docker.com)是个伟大的项目! [Docker] (docker.com)是个伟大的项目!

View File

@ -1,53 +1,56 @@
#目录 # Summary
* [Introduction](README.md)
* [为什么要使用docker](why_use_docker/README.md) * [为什么要使用docker](why_use_docker/README.md)
- [快速交付应用程序](why_use_docker/fast_deployment.md) * [快速交付应用程序](why_use_docker/fast_deployment.md)
- [更容易部署和扩展](why_use_docker/easy_deployment.md) * [更容易部署和扩展](why_use_docker/easy_deployment.md)
- [效率更高](why_use_docker/high_efficiency.md) * [效率更高](why_use_docker/high_efficiency.md)
- [快速部署也意味着更简单的管理](why_use_docker/easy_management.md) * [快速部署也意味着更简单的管理](why_use_docker/easy_management.md)
* [Docker的体系结构](arch/README.md) * [Docker的体系结构](arch/README.md)
- [内部组件](arch/internal.md) * [内部组件](arch/internal.md)
- [image的工作原理](arch/image.md) * [image的工作原理](arch/image.md)
- [仓库](arch/repo.md) * [仓库](arch/repo.md)
- [容器](arch/container.md) * [容器](arch/container.md)
- [底层技术](arch/underly.md) * [底层技术](arch/underly.md)
* [安装](install/README.md) * [安装](install/README.md)
- [Ubuntu 14.04](install/ubuntu144.md) * [Ubuntu](install/ubuntu144.md)
- [Ubuntu 12.04](install/ubuntu124.md) * [CentOS](install/centos.md)
- [CentOS](install/centos.md)
* [image介绍](image/README.md) * [image介绍](image/README.md)
- [获取mage](image/get.md) * [获取mage](image/get.md)
- [查找image](image/search.md) * [查找image](image/search.md)
- [下载image](image/download.md) * [下载image](image/download.md)
- [创建自己的image](image/create.md) * [创建自己的image](image/create.md)
- [上传image](image/push.md) * [上传image](image/push.md)
- [移除本地image](image/rmi.md) * [移除本地image](image/rmi.md)
* [网络介绍](network/README.md) * [网络介绍](network/README.md)
- [端口映射](network/port_mapping.md) * [端口映射](network/port_mapping.md)
- [docker中的容器互联-linking系统](network/linking.md) * [docker中的容器互联-linking系统](network/linking.md)
* [高级网络配置](advanced_network/README.md) * [高级网络配置](advanced_network/README.md)
- [快速配置](advanced_network/fast_config.md) * [快速配置](advanced_network/fast_config.md)
- [配置DNS](advanced_network/dns.md) * [配置DNS](advanced_network/dns.md)
- [容器之间的通信](advanced_network/communication.md) * [容器之间的通信](advanced_network/communication.md)
- [映射一个容器端口到宿主主机](advanced_network/port_mapping.md) * [映射一个容器端口到宿主主机](advanced_network/port_mapping.md)
- [定制docker0](advanced_network/docker0.md) * [定制docker0](advanced_network/docker0.md)
- [创建自己的桥接](advanced_network/bridge.md) * [创建自己的桥接](advanced_network/bridge.md)
- [Docker 如何连接到容器](advanced_network/how_connect.md) * [Docker 如何连接到容器](advanced_network/how_connect.md)
- [工具和示例](advanced_network/example.md) * [工具和示例](advanced_network/example.md)
- [创建一个点到点连接](advanced_network/ptp.md) * [创建一个点到点连接](advanced_network/ptp.md)
* [数据管理](data_management/README.md) * [数据管理](data_management/README.md)
- [数据卷](data_management/volume.md) * [数据卷](data_management/volume.md)
- [数据卷容器](data_management/container.md) * [数据卷容器](data_management/container.md)
- [备份、恢复、移动数据卷](data_management/management.md) * [备份、恢复、移动数据卷](data_management/management.md)
* [容器安全](container_security/README.md) * [容器安全](container_security/README.md)
- [内核名字空间](container_security/kernel_ns.md) * [内核名字空间](container_security/kernel_ns.md)
- [控制组](container_security/control_group.md) * [控制组](container_security/control_group.md)
- [守护进程安全](container_security/daemon_sec.md) * [守护进程安全](container_security/daemon_sec.md)
- [内核权限](container_security/kernel_capability.md) * [内核权限](container_security/kernel_capability.md)
- [其他内核安全特性](container_security/other_feature.md) * [其他内核安全特性](container_security/other_feature.md)
- [结论](container_security/summary.md) * [结论](container_security/summary.md)
* [实战案例](practice/README.md) * [实战案例](practice/README.md)
- [部署本地仓库](practice/local_repo.md) * [部署本地仓库](practice/local_repo.md)
- [在Docker中使用 Supervisor来管理进程](practice/supervisor.md) * [使用 Supervisor来管理进程](practice/supervisor.md)
* [创建tomcat/weblogic集群](practice/tomcat.md) * [创建tomcat/weblogic集群](practice/tomcat.md)
* [多台物理主机之间的容器互联](practice/container_connect.md) * [多台物理主机之间的容器互联](practice/container_connect.md)
* [中小企业docker环境搭建](practice/environment.md) * [中小企业docker环境搭建](practice/environment.md)
* [附:命令查询](command/README.md)

View File

@ -8,7 +8,7 @@ docker把下载的images存储到docker主机上如果一个image不在主机
* 使用和管理本地主机上的images * 使用和管理本地主机上的images
* 创建一个基础的images * 创建一个基础的images
* 上传images到docker hub公共images仓库 * 上传images到docker hub公共images仓库
* 列出本地主机上已经存在的images
使用 docker images 显示本机上的images 使用 docker images 显示本机上的images
``` ```
@ -30,13 +30,15 @@ ubuntu 10.04 3db9c44f4520 4 weeks ago 183 MB
ubuntu lucid 3db9c44f4520 4 weeks ago 183 MB ubuntu lucid 3db9c44f4520 4 weeks ago 183 MB
``` ```
当我们启动一个使用这个image的容器时docker会从docker hub下载它。在列出信息中我们可以看到3个字段信息 在列出信息中,可以看到几个字段信息
* 来自于哪个仓库比如ubuntu * 来自于哪个仓库比如ubuntu
* image的标记比如 14.04 * image的标记比如 14.04
* 它的ID号 * 它的ID号唯一
* 什么时候被创建的
* 镜像大小
一个仓库可能有一个images的都个发行版比如ubuntu他们有10.04 12.04 12.10 13.04 14.04,每个发行版的标记都不同可以使用tag命令来指定images 仓库中可能有同一个images的多个发行版比如ubuntu镜像就有10.04、12.04、12.10、13.04、14.04等发行版,每个发行版的标记都不同可以使用tag信息来指定images
使用一个images的标记来启动容器 使用一个images的标记来启动容器
``` ```
$ sudo docker run -t -i ubuntu:14.04 /bin/bash $ sudo docker run -t -i ubuntu:14.04 /bin/bash

View File

@ -1,14 +1,15 @@
##创建我们自己的images ##创建我们自己的images
别人的镜像虽然好但不一定适合我们。我们可以对他们做一些改变有2个方法 别人的镜像虽然好,但不一定适合我们。
我们可以对这些镜像做一些修改有2个方法
###第一个方法使用docker commit 来扩展一个image ###第一个方法使用docker commit 来扩展一个image
先使用image启动容器更新后提交结果到新的image。 先使用image启动容器更新后提交结果到新的image。
``` ```
$ sudo docker run -t -i training/sinatra /bin/bash $ sudo docker run -t -i training/sinatra /bin/bash
root@0b2616b0e5a8:/# root@0b2616b0e5a8:/#
``` ```
注意记住容器的ID ,稍后我们还会用到 注意记住容器的ID ,稍后还会用到
这里我们在容器中添加json gem 在容器中添加json和gem两个应用
``` ```
root@0b2616b0e5a8:/# gem install json root@0b2616b0e5a8:/# gem install json
``` ```
@ -18,7 +19,7 @@ $ sudo docker commit -m="Added json gem" -a="Kate Smith" 0b2616b0e5a8 ouruser/si
4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c 4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c
``` ```
-m 来指定提交的信息,跟我们使用的版本控制工具一样。 -m 来指定提交的信息,跟我们使用的版本控制工具一样。
-a 可以指定我们更新的用户信息指定我们要从哪个容器ID来创建我们的副本最后指定目标image的名字。 -a 可以指定我们更新的用户信息指定我们要从哪个容器ID来创建我们的副本最后指定目标image的名字。
这个例子里面我们指定了一个新用户ouruser使用了sinatra的image最后指定了image的标记v2。 这个例子里面我们指定了一个新用户ouruser使用了sinatra的image最后指定了image的标记v2。
使用docker images来查看我们创建的新image。 使用docker images来查看我们创建的新image。

View File

@ -1,2 +1,2 @@
#安装 #安装
官方网站上有各个linux发行版的安装指南这里就写下centos和ubuntu的安装。 官方网站上有各个linux发行版的安装指南这里介绍下centos和ubuntu的安装。

View File

@ -1,15 +1,23 @@
##centos6\7系列安装docker ##centos6\7系列安装docker
使用EPEL软件仓库可以安装docker版本必须在centos6 以后 使用EPEL软件仓库可以安装docker版本必须在centos6 以后
如果是centos6 如果是centos6,用下面的命令安装
``` ```
#wget http://mirrors.hustunique.com/epel/6/i386/epel-release-6-8.noarch.rpm #wget http://mirrors.hustunique.com/epel/6/i386/epel-release-6-8.noarch.rpm
#rpm -ivhepel-release-6-8.noarch.rpm #rpm -ivhepel-release-6-8.noarch.rpm
#yum install docker-io #yum install docker-io
``` ```
用上面这个命令安装就可以了
centos7 直接安装就可以了 centos7 直接通过系统命令安装:
如果之前的系统中存在docker这个软件最好先删除掉这个包一个老旧的包 ```
yum install docker-io
```
如果之前的系统中存在docker这个软件最好先删除掉这个包。
```
yum remove docker-io
```
安装之后启动docker服务并添加自动启动到系统服务。
``` ```
$ service docker start $ service docker start
$ chkconfig docker on $ chkconfig docker on

View File

@ -1,4 +1,4 @@
##Ubuntu12.04安装Docker ##Ubuntu(低版本)安装Docker
如果是更低版本的ubuntu 如果是更低版本的ubuntu
``` ```
$ sudo apt-get update $ sudo apt-get update

View File

@ -1,4 +1,6 @@
##Ubuntu 14.04 安装Docker ##Ubuntu 安装Docker
###通过系统自带包安装
``` ```
$ sudo apt-get update $ sudo apt-get update
$ sudo apt-get install docker.io $ sudo apt-get install docker.io
@ -8,12 +10,22 @@ $ sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io
如果使用操作系统自带包安装docker 使用上面的办法安装的版本是0.9.1 (不建议因为1.0 生产版本已经发布,下面介绍安装方法) 如果使用操作系统自带包安装docker 使用上面的办法安装的版本是0.9.1 (不建议因为1.0 生产版本已经发布,下面介绍安装方法)
如果要安装最新的docker版本那么需要安装https支持 ###通过docker源安装最新版本
如果要安装最新的docker版本那么需要安装apt-get的https支持
``` ```
$apt-get install apt-transport-https $apt-get install apt-transport-https
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
$ sudo sh -c "echo deb https://get.docker.io/ubuntu docker main\ $ sudo sh -c "echo deb https://get.docker.io/ubuntu docker main /etc/apt/sources.list.d/docker.list"
> /etc/apt/sources.list.d/docker.list"
$ sudo apt-get update $ sudo apt-get update
$ sudo apt-get install lxc-docker $ sudo apt-get install lxc-docker
``` ```
###其它版本
如果是低版本的ubuntu
```
$ sudo apt-get update
$ sudo apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring
# reboot
$ sudo reboot
```
然后重复上面的步骤即可。

View File

@ -1,4 +1,4 @@
##在Docker中使用 Supervisor来管理进程 ##使用 Supervisor来管理进程
docker 容器在启动的时候开启单个进程比如一个ssh或则apache 的daemon服务。但我们经常需要在一个机器上开启多个服务这可以有很多方法最简单的就是把多个启动命令方到一个启动脚本里面启动的时候直接启动这个脚本另外就是安装进程管理工具。. docker 容器在启动的时候开启单个进程比如一个ssh或则apache 的daemon服务。但我们经常需要在一个机器上开启多个服务这可以有很多方法最简单的就是把多个启动命令方到一个启动脚本里面启动的时候直接启动这个脚本另外就是安装进程管理工具。.
本小节将使用进程管理工具supervisor来管理容器中的多个进程。使用Supervisor可以更好的控制、管理、重启我们希望运行的进程。在这里我们演示一下如何同时使用ssh和apache服务。 本小节将使用进程管理工具supervisor来管理容器中的多个进程。使用Supervisor可以更好的控制、管理、重启我们希望运行的进程。在这里我们演示一下如何同时使用ssh和apache服务。
###dockerfile ###dockerfile