Fix issue#20, format following the guidelines

This commit is contained in:
Baohua Yang
2014-10-14 13:25:01 +08:00
parent 9d26f96ba2
commit cb903202ba
81 changed files with 682 additions and 679 deletions

View File

@@ -2,9 +2,9 @@
仓库Repository是集中存放镜像的地方。
一个容易混淆的概念是注册服务器Registry。实际上注册服务器是管理仓库的具体服务器每个服务器上可以有多个仓库而每个仓库下面有多个镜像。从这方面来说仓库可以被认为是一个具体的项目或目录。例如对于仓库地址`dl.dockerpool.com/ubuntu`来说,`dl.dockerpool.com`是注册服务器地址,`ubuntu`是仓库名。
一个容易混淆的概念是注册服务器Registry。实际上注册服务器是管理仓库的具体服务器每个服务器上可以有多个仓库而每个仓库下面有多个镜像。从这方面来说仓库可以被认为是一个具体的项目或目录。例如对于仓库地址 `dl.dockerpool.com/ubuntu` 来说,`dl.dockerpool.com` 是注册服务器地址,`ubuntu` 是仓库名。
大部分时候,并不严格区分这两者的概念。
大部分时候,并不需要严格区分这两者的概念。

View File

@@ -1,28 +1,28 @@
## 仓库配置文件
DockerRegistry利用配置文件提供了一些仓库的模板flavor用户可以直接使用它们来进行开发或生产部署。
DockerRegistry 利用配置文件提供了一些仓库的模板flavor用户可以直接使用它们来进行开发或生产部署。
### 模板
`config_sample.yml`文件中,可以看到一些现成的模板段:
`config_sample.yml` 文件中,可以看到一些现成的模板段:
* `common`:基础配置
* `local`:存储数据到本地文件系统
* `s3`存储数据到AWS S3中
* `dev`:使用`local`模板的基本配置
* `s3`:存储数据到 AWS S3
* `dev`:使用 `local` 模板的基本配置
* `test`:单元测试使用
* `prod`生产环境配置基本上跟s3配置类似
* `gcs`存储数据到Google的云存储
* `swift`存储数据到OpenStack Swift服务
* `glance`存储数据到OpenStack Glance服务本地文件系统为后备
* `glance-swift`存储数据到OpenStack Glance服务Swift为后备
* `elliptics`存储数据到Elliptics key/value存储
* `gcs`:存储数据到 Google 的云存储
* `swift`:存储数据到 OpenStack Swift 服务
* `glance`:存储数据到 OpenStack Glance 服务,本地文件系统为后备
* `glance-swift`:存储数据到 OpenStack Glance 服务Swift 为后备
* `elliptics`:存储数据到 Elliptics key/value 存储
用户也可以添加自定义的模版段。
默认情况下使用的模板是`dev`,要使用某个模板作为默认值,可以添加`SETTINGS_FLAVOR`到环境变量中,例如
默认情况下使用的模板是 `dev`,要使用某个模板作为默认值,可以添加 `SETTINGS_FLAVOR` 到环境变量中,例如
```
export SETTINGS_FLAVOR=dev
```
另外,配置文件中支持从环境变量中加载值,语法格式为`_env:VARIABLENAME[:DEFAULT]`
另外,配置文件中支持从环境变量中加载值,语法格式为 `_env:VARIABLENAME[:DEFAULT]`
### 示例配置
```

View File

@@ -1,14 +1,14 @@
##Docker Hub
目前Docker官方维护了一个公共仓库--[Docker Hub](https://hub.docker.com/)其中已经包括了超过15,000的镜像。大部分用户的需求都可以通过在Docker Hub中直接下载镜像来实现。
## Docker Hub
目前 Docker 官方维护了一个公共仓库 [Docker Hub](https://hub.docker.com/),其中已经包括了超过 15,000 的镜像。大部分需求,都可以通过在 Docker Hub 中直接下载镜像来实现。
### 登录
可以通过执行`docker login`命令来输入用户名、密码和邮箱来完成注册和登录。
注册成功后,本地用户目录的`.dockercfg`中将保存用户的认证信息。
可以通过执行 `docker login` 命令来输入用户名、密码和邮箱来完成注册和登录。
注册成功后,本地用户目录的 `.dockercfg` 中将保存用户的认证信息。
### 基本操作
用户无需登录即可通过`docker search`命令来查找官方仓库中的镜像,并利用`docker pull`命令来将它下载到本地。
用户无需登录即可通过 `docker search` 命令来查找官方仓库中的镜像,并利用 `docker pull` 命令来将它下载到本地。
例如以centos为关键词进行搜索
例如以 centos 为关键词进行搜索:
```
$ sudo docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
@@ -23,12 +23,12 @@ tutum/centos-6.4 DEPRECATED. Use tutum/centos:6.4
官方的镜像说明是官方项目组创建和维护的automated 资源允许用户验证镜像的来源和内容。
根据是否是官方提供,可将镜像资源分为两类。
一种是类似centos这样的基础镜像被称为基础或根镜像。这些基础镜像是由Docker公司创建、验证、支持、提供。这样的镜像往往使用单个单词作为名字。
还有一种类型,比如`tianon/centos`镜像它是由Docker的用户创建并维护的往往带有用户名称前缀。可以通过前缀`user_name/`来指定使用某个用户提供的镜像比如tianon用户。
一种是类似 centos 这样的基础镜像,被称为基础或根镜像。这些基础镜像是由 Docker 公司创建、验证、支持、提供。这样的镜像往往使用单个单词作为名字。
还有一种类型,比如 `tianon/centos` 镜像,它是由 Docker 的用户创建并维护的,往往带有用户名称前缀。可以通过前缀 `user_name/` 来指定使用某个用户提供的镜像,比如 tianon 用户。
另外,在查找的时候通过`-s n`参数可以指定仅显示评价为`n`星以上的镜像。
另外,在查找的时候通过 `-s N` 参数可以指定仅显示评价为 `N` 星以上的镜像。
下载官方centos镜像到本地。
下载官方 centos 镜像到本地。
```
$ sudo docker pull centos
Pulling repository centos
@@ -37,19 +37,19 @@ Pulling repository centos
511136ea3c5a: Download complete
7064731afe90: Download complete
```
用户也可以在登录后通过`docker push`命令来将镜像推送到Docker Hub
用户也可以在登录后通过 `docker push` 命令来将镜像推送到 Docker Hub。
###自动创建
### 自动创建
自动创建Automated Builds功能对于需要经常升级镜像内程序来说十分方便。
有时候,用户创建了镜像,安装了某个软件,如果软件发布新版本则需要手动更新镜像。。
而自动创建允许用户通过Docker Hub指定跟踪一个目标网站目前支持[GitHub](github.org)[BitBucket](bitbucket.org))上的项目,一旦项目发生新的提交,则自动执行创建。
而自动创建允许用户通过 Docker Hub 指定跟踪一个目标网站(目前支持 [GitHub](github.org)[BitBucket](bitbucket.org))上的项目,一旦项目发生新的提交,则自动执行创建。
要配置自动创建,包括如下的步骤:
* 创建并登陆Docker Hub以及目标网站
* 在目标网站中连接帐户到Docker Hub
* 在Docker Hub[配置一个自动创建](https://registry.hub.docker.com/builds/add/)
* 选取一个目标网站中的项目需要含Dockerfile和分支
* 指定Dockerfile的位置并提交创建。
* 创建并登陆 Docker Hub以及目标网站
* 在目标网站中连接帐户到 Docker Hub
* Docker Hub[配置一个自动创建](https://registry.hub.docker.com/builds/add/)
* 选取一个目标网站中的项目(需要含 Dockerfile和分支
* 指定 Dockerfile 的位置,并提交创建。
之后可以在Docker Hub[自动创建页面](https://registry.hub.docker.com/builds/)中跟踪每次创建的状态。
之后,可以 在Docker Hub[自动创建页面](https://registry.hub.docker.com/builds/) 中跟踪每次创建的状态。

View File

@@ -1,18 +1,18 @@
##私有仓库
## 私有仓库
有时候使用Docker Hub这样的公共仓库可能不方便用户可以创建一个本地仓库供私人使用。
有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。
本节介绍如何使用本地仓库。
`docker-registry`是官方提供的工具,可以用于构建私有的镜像仓库。
###安装运行docker-registry
`docker-registry` 是官方提供的工具,可以用于构建私有的镜像仓库。
### 安装运行 docker-registry
#### 容器运行
在安装了Docker后可以通过获取官方registry镜像来运行。
在安装了 Docker 后,可以通过获取官方 registry 镜像来运行。
```
$ sudo docker run -d -p 5000:5000 registry
```
这将使用官方的registry镜像来启动本地的私有仓库。
用户可以通过指定参数来配置私有仓库位置例如配置镜像存储到AmazonS3服务
这将使用官方的 registry 镜像来启动本地的私有仓库。
用户可以通过指定参数来配置私有仓库位置,例如配置镜像存储到 Amazon S3 服务
```
$ sudo docker run \
-e SETTINGS_FLAVOR=s3 \
@@ -24,18 +24,18 @@ $ sudo docker run \
-p 5000:5000 \
registry
````
此外,还可以指定本地路径(如`/home/user/registry-conf`)下的配置文件。
此外,还可以指定本地路径(如 `/home/user/registry-conf` )下的配置文件。
```
$ sudo docker run -d -p 5000:5000 -v /home/user/registry-conf:/registry-conf -e DOCKER_REGISTRY_CONFIG=/registry-conf/config.yml registry
```
默认情况下,仓库会被创建在容器的`/tmp/registry`下。可以通过`-v`参数来将镜像文件存放在本地的指定路径。
例如下面的例子将上传的镜像放到`/opt/data/registry`目录。
默认情况下,仓库会被创建在容器的 `/tmp/registry` 下。可以通过 `-v` 参数来将镜像文件存放在本地的指定路径。
例如下面的例子将上传的镜像放到 `/opt/data/registry` 目录。
```
$ sudo docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry
```
#### 本地安装
对于UbuntuCentOS等发型包可以直接通过源安装。
对于 UbuntuCentOS 等发型包,可以直接通过源安装。
* Ubuntu
```
$ sudo apt-get install -y build-essential python-dev libevent-dev python-pip liblzma-dev
@@ -47,18 +47,18 @@ $ sudo yum install -y python-devel libevent-devel python-pip gcc xz-devel
$ sudo python-pip install docker-registry
```
也可以从[docker-registry](https://github.com/docker/docker-registry)项目下载源码进行安装。
也可以从 [docker-registry](https://github.com/docker/docker-registry) 项目下载源码进行安装。
```
$ sudo apt-get install build-essential python-dev libevent-dev python-pip libssl-dev liblzma-dev libffi-dev
$ git clone https://github.com/docker/docker-registry.git
$ cd git-registry
$ sudo pip install .
```
然后修改配置文件主要修改dev模板段的`storage_path`到本地的存储仓库的路径。
然后修改配置文件主要修改dev模板段的 `storage_path` 到本地的存储仓库的路径。
```
$ cp config/config_sample.yml config/config.yml
```
之后启动Web服务。
之后启动 Web 服务。
```
$ sudo gunicorn -c contrib/gunicorn.py docker_registry.wsgi:application
```
@@ -66,12 +66,12 @@ $ sudo gunicorn -c contrib/gunicorn.py docker_registry.wsgi:application
```
$ sudo gunicorn --access-logfile - --error-logfile - -k gevent -b 0.0.0.0:5000 -w 4 --max-requests 100 docker_registry.wsgi:application
```
此时使用访问本地的5000端口看到输出docker-registry的版本信息说明运行成功。
此时使用访问本地的 5000 端口,看到输出 docker-registry 的版本信息说明运行成功。
*注:`config/config_sample.yml`文件是示例配置文件。
*注:`config/config_sample.yml` 文件是示例配置文件。
###在私有仓库上传、下载、搜索镜像
创建好私有仓库之后,就可以使用`docker tag`来标记一个镜像,然后推送它到仓库,别的机器上就可以下载下来了。例如私有仓库地址为`192.168.7.26:5000`。
创建好私有仓库之后,就可以使用 `docker tag` 来标记一个镜像,然后推送它到仓库,别的机器上就可以下载下来了。例如私有仓库地址为 `192.168.7.26:5000`。
先在本机查看已有的镜像。
```
@@ -81,7 +81,7 @@ ubuntu latest ba5877dc9bec 6 week
ubuntu 14.04 ba5877dc9bec 6 weeks ago 192.7 MB
```
使用`docker tag`ba58这个镜像标记为`192.168.7.26:5000/test`(格式为`docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]`)。
使用`docker tag` 将 `ba58` 这个镜像标记为 `192.168.7.26:5000/test`(格式为 `docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]`)。
```
$ sudo docker tag ba58 192.168.7.26:5000/test
root ~ # docker images
@@ -90,7 +90,7 @@ ubuntu 14.04 ba5877dc9bec 6 week
ubuntu latest ba5877dc9bec 6 weeks ago 192.7 MB
192.168.7.26:5000/test latest ba5877dc9bec 6 weeks ago 192.7 MB
```
使用`docker push`上传标记的镜像。
使用 `docker push` 上传标记的镜像。
```
$ sudo docker push 192.168.7.26:5000/test
The push refers to a repository [192.168.7.26:5000/test] (len: 1)
@@ -104,12 +104,12 @@ Image 2318d26665ef already pushed, skipping
Image ba5877dc9bec already pushed, skipping
Pushing tag for rev [ba5877dc9bec] on {http://192.168.7.26:5000/v1/repositories/test/tags/latest}
```
用curl查看仓库中的镜像。
curl 查看仓库中的镜像。
```
$ curl http://192.168.7.26:5000/v1/search
{"num_results": 7, "query": "", "results": [{"description": "", "name": "library/miaxis_j2ee"}, {"description": "", "name": "library/tomcat"}, {"description": "", "name": "library/ubuntu"}, {"description": "", "name": "library/ubuntu_office"}, {"description": "", "name": "library/desktop_ubu"}, {"description": "", "name": "dockerfile/ubuntu"}, {"description": "", "name": "library/test"}]}
```
这里可以看到`{"description": "", "name": "library/test"}`,表明镜像已经被成功上传了。
这里可以看到 `{"description": "", "name": "library/test"}`,表明镜像已经被成功上传了。
现在可以到另外一台机器去下载这个镜像。
```
@@ -126,7 +126,7 @@ REPOSITORY TAG IMAGE ID CREAT
192.168.7.26:5000/test latest ba5877dc9bec 6 weeks ago 192.7 MB
```
可以使用[这个脚本](https://github.com/yeasy/docker_practice/raw/master/_local/push_images.sh)批量上传本地的镜像到注册服务器中,默认是本地注册服务器`127.0.0.1:5000`。例如:
可以使用 [这个脚本](https://github.com/yeasy/docker_practice/raw/master/_local/push_images.sh) 批量上传本地的镜像到注册服务器中,默认是本地注册服务器 `127.0.0.1:5000`。例如:
```
$ wget https://github.com/yeasy/docker_practice/raw/master/_local/push_images.sh; sudo chmod a+x push_images.sh
$ ./push_images.sh ubuntu:latest centos:centos7
@@ -156,4 +156,3 @@ Pushing tag for rev [70214e5d0a90] on {http://127.0.0.1:5000/v1/repositories/cen
Untagged: 127.0.0.1:5000/centos:centos7
Done
```