mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-10 11:54:37 +00:00
Fix issue#20, format following the guidelines
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
|
||||
仓库(Repository)是集中存放镜像的地方。
|
||||
|
||||
一个容易混淆的概念是注册服务器(Registry)。实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。例如对于仓库地址`dl.dockerpool.com/ubuntu`来说,`dl.dockerpool.com`是注册服务器地址,`ubuntu`是仓库名。
|
||||
一个容易混淆的概念是注册服务器(Registry)。实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。例如对于仓库地址 `dl.dockerpool.com/ubuntu` 来说,`dl.dockerpool.com` 是注册服务器地址,`ubuntu` 是仓库名。
|
||||
|
||||
大部分时候,并不严格区分这两者的概念。
|
||||
大部分时候,并不需要严格区分这两者的概念。
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
## 仓库配置文件
|
||||
Docker的Registry利用配置文件提供了一些仓库的模板(flavor),用户可以直接使用它们来进行开发或生产部署。
|
||||
Docker 的 Registry 利用配置文件提供了一些仓库的模板(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]`。
|
||||
|
||||
### 示例配置
|
||||
```
|
||||
|
||||
@@ -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/) 中跟踪每次创建的状态。
|
||||
|
||||
@@ -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镜像来启动本地的私有仓库。
|
||||
用户可以通过指定参数来配置私有仓库位置,例如配置镜像存储到Amazon的S3服务
|
||||
这将使用官方的 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
|
||||
```
|
||||
|
||||
#### 本地安装
|
||||
对于Ubuntu或CentOS等发型包,可以直接通过源安装。
|
||||
对于 Ubuntu 或 CentOS 等发型包,可以直接通过源安装。
|
||||
* 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
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user