Remove the local repo case, add its content into the image and repository sections

This commit is contained in:
Baohua Yang 2014-09-22 16:40:18 +08:00
parent 71bcec05b7
commit 2a60b4ce7e
5 changed files with 119 additions and 118 deletions

View File

@ -28,7 +28,7 @@
* [删除](container/rm.md)
* [仓库](repository/README.md)
* [Docker Hub](repository/dockerhub.md)
* [仓库管理](repository/management.md)
* [私有仓库](repository/management.md)
* [数据管理](data_management/README.md)
* [数据卷](data_management/volume.md)
* [数据卷容器](data_management/container.md)
@ -47,7 +47,6 @@
* [编辑网络配置文件](advanced_network/config_file.md)
* [实例:创建一个点到点连接](advanced_network/ptp.md)
* [实战案例](cases/README.md)
* [部署本地仓库](cases/local_repo.md)
* [使用 Supervisor来管理进程](cases/supervisor.md)
* [创建tomcat/weblogic集群](cases/tomcat.md)
* [多台物理主机之间的容器互联](cases/container_connect.md)
@ -59,6 +58,7 @@
* [内核能力机制](security/kernel_capability.md)
* [其它安全特性](security/other_feature.md)
* [总结](security/summary.md)
* [Dockerfile配置](dockerfile/README.md)
* [底层实现](underly/README.md)
* [基本架构](underly/arch.md)
* [名字空间](underly/namespace.md)
@ -66,7 +66,6 @@
* [Union文件系统](underly/ufs.md)
* [容器格式](underly/container_format.md)
* [网络](underly/network.md)
* [Dockerfile](dockerfile/README.md)
* [附录一:命令查询](command/README.md)
* [附录二:资源链接](resources/README.md)

View File

@ -1,106 +0,0 @@
##部署本地仓库
有时候使用Docker Hub这样的公共仓库可能不方便用户可以创建一个本地仓库供私人使用。
本节介绍如何创建部署本地仓库。
###创建一个镜像
创建镜像有很多方法用户可以从Docker Hub获取一个也可以利用本地文件系统创建一个。
要从本地文件系统导入一个镜像可以使用openvz容器虚拟化的先锋技术的模板来创建
openvz的模板下载地址为http://openvz.org/Download/templates/precreated。
比如先下载了一个ubuntu14.04的镜像,之后使用以下命令导入:
```
sudo cat ubuntu-14.04-x86_64-minimal.tar.gz |docker import - ubuntu:14.04
```
然后查看新导入的镜像。
```
docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04 05ac7c0b9383 17 seconds ago 215.5 MB
```
###创建私有仓库
创建私有仓库可以使用`docker-registry`工具。
#### 系统自带
在安装了Docker后系统中就自带了`docker-registry`工具,可以运行
```
docker run -p 5000:5000 registry
```
这将使用官方的registry镜像来启动本地的私有仓库。可以通过指定参数来配置私有仓库位置例如配置镜像存储到Amazon的S3服务。
```
docker run \
-e SETTINGS_FLAVOR=s3 \
-e AWS_BUCKET=acme-docker \
-e STORAGE_PATH=/registry \
-e AWS_KEY=AKIAHSHB43HS3J92MXZ \
-e AWS_SECRET=xdDowwlK7TJajV1Y7EoOZrmuPEJlHYcNP2k4j49T \
-e SEARCH_BACKEND=sqlalchemy \
-p 5000:5000 \
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
$ sudo pip install .
```
`config/config_sample.yml`文件是配置文件。
###在私有仓库上传、下载、搜索镜像
创建好私有仓库之后,就可以使用`docker tag`来标记一个镜像,然后推送它到仓库,别的机器上就可以下载下来了。例如私有仓库地址为`192.168.7.26:5000`。
先在本机查看已有的镜像。
```
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu latest ba5877dc9bec 6 weeks ago 192.7 MB
ubuntu 14.04 ba5877dc9bec 6 weeks ago 192.7 MB
```
使用`docker tag`将ba58这个镜像标记为`192.168.7.26:5000/test`(格式为`[REGISTRYHOST/][USERNAME/]NAME[:TAG]`)。
```
$ sudo docker tag ba58 192.168.7.26:5000/test
root ~ # docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04 ba5877dc9bec 6 weeks ago 192.7 MB
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`上传标记的镜像。
```
$ sudo docker push 192.168.7.26:5000/test
The push refers to a repository [192.168.7.26:5000/test] (len: 1)
Sending image list
Pushing repository 192.168.7.26:5000/test (1 tags)
Image 511136ea3c5a already pushed, skipping
Image 9bad880da3d2 already pushed, skipping
Image 25f11f5fb0cb already pushed, skipping
Image ebc34468f71d already pushed, skipping
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 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"}`,表明镜像已经被成功上传了。
现在可以到另外一台机器去下载这个镜像
```
$ sudo docker pull 192.168.7.26:5000/test
Pulling repository 192.168.7.26:5000/test
ba5877dc9bec: Download complete
511136ea3c5a: Download complete
9bad880da3d2: Download complete
25f11f5fb0cb: Download complete
ebc34468f71d: Download complete
2318d26665ef: Download complete
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
192.168.7.26:5000/test latest ba5877dc9bec 6 weeks ago 192.7 MB
```

View File

@ -1,8 +1,8 @@
##创建镜像
别人的镜像虽然好,但不一定适合我们。
我们可以对这些镜像做一些修改有2个方法利用现成的镜像进行修改或者利用dockerfile创建。
###使用docker commit 来扩展一个镜像
创建镜像有很多方法用户可以从Docker Hub获取已有镜像并更新也可以利用本地文件系统创建一个。
### 修改已有镜像
先使用下载的镜像启动容器。
```
$ sudo docker run -t -i training/sinatra /bin/bash
@ -112,16 +112,14 @@ ADD myApp /var/www
EXPOSE 80
# the command to run
CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]
```
现在可以利用新创建的镜像来启动一个容器。
```
$ sudo docker run -t -i ouruser/sinatra:v2 /bin/bash
root@8196968dac35:/#
```
还可以用tag命令来修改镜像的tag
还可以用`docker tag`命令来修改镜像的标签
```
$ sudo docker tag 5db5f8471261 ouruser/sinatra:devel
$ sudo docker images ouruser/sinatra
@ -131,4 +129,19 @@ ouruser/sinatra devel 5db5f8471261 11 hours ago 446.7 MB
ouruser/sinatra v2 5db5f8471261 11 hours ago 446.7 MB
```
更多用法请参考dockerfile章节。
*注更多用法请参考dockerfile章节。
### 从本地文件系统导入
要从本地文件系统导入一个镜像可以使用openvz容器虚拟化的先锋技术的模板来创建
openvz的模板下载地址为http://openvz.org/Download/templates/precreated。
比如先下载了一个ubuntu14.04的镜像,之后使用以下命令导入:
```
sudo cat ubuntu-14.04-x86_64-minimal.tar.gz |docker import - ubuntu:14.04
```
然后查看新导入的镜像。
```
docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04 05ac7c0b9383 17 seconds ago 215.5 MB
```

View File

@ -17,7 +17,6 @@ subwiz/sinatra
bmorearty/sinatra 0
```
可以看到返回了很多包含sinatra的镜像。其中包括镜像名字、描述、星级表示该镜像的受欢迎程度、是否官方创建、是否自动创建。
官方的镜像是由stackbrew项目组创建和维护的automated 资源允许用户验证镜像的来源和内容。

View File

@ -1 +1,97 @@
##仓库管理
##私有仓库
有时候使用Docker Hub这样的公共仓库可能不方便用户可以创建一个本地仓库供私人使用。
本节介绍如何使用本地仓库。
docker-registry是官方提供的工具可以用于构建私有的镜像仓库。
###安装docker-registry
#### 系统自带
在安装了Docker后系统中就自带了`docker-registry`工具,可以运行
```
docker run -p 5000:5000 registry
```
这将使用官方的registry镜像来启动本地的私有仓库。可以通过指定参数来配置私有仓库位置例如配置镜像存储到Amazon的S3服务。
```
docker run \
-e SETTINGS_FLAVOR=s3 \
-e AWS_BUCKET=acme-docker \
-e STORAGE_PATH=/registry \
-e AWS_KEY=AKIAHSHB43HS3J92MXZ \
-e AWS_SECRET=xdDowwlK7TJajV1Y7EoOZrmuPEJlHYcNP2k4j49T \
-e SEARCH_BACKEND=sqlalchemy \
-p 5000:5000 \
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
$ sudo pip install .
```
然后修改配置文件,主要修改`storage_path`到本地的存储仓库的路径之后启动Web服务。
```
$ cp config/config_sample.yml config/config.yml
$ #do some change to config.yml
$ sudo /usr/bin/gunicorn --debug -k gevent -b 0.0.0.0:5000 -w 8 docker_registry.wsgi:application
```
此时使用访问本地的5000端口看到输出docker-registry的版本信息说明运行成功。
*注:`config/config_sample.yml`文件是示例配置文件。
###在私有仓库上传、下载、搜索镜像
创建好私有仓库之后,就可以使用`docker tag`来标记一个镜像,然后推送它到仓库,别的机器上就可以下载下来了。例如私有仓库地址为`192.168.7.26:5000`。
先在本机查看已有的镜像。
```
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu latest ba5877dc9bec 6 weeks ago 192.7 MB
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]`)。
```
$ sudo docker tag ba58 192.168.7.26:5000/test
root ~ # docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04 ba5877dc9bec 6 weeks ago 192.7 MB
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`上传标记的镜像。
```
$ sudo docker push 192.168.7.26:5000/test
The push refers to a repository [192.168.7.26:5000/test] (len: 1)
Sending image list
Pushing repository 192.168.7.26:5000/test (1 tags)
Image 511136ea3c5a already pushed, skipping
Image 9bad880da3d2 already pushed, skipping
Image 25f11f5fb0cb already pushed, skipping
Image ebc34468f71d already pushed, skipping
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 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"}`,表明镜像已经被成功上传了。
现在可以到另外一台机器去下载这个镜像
```
$ sudo docker pull 192.168.7.26:5000/test
Pulling repository 192.168.7.26:5000/test
ba5877dc9bec: Download complete
511136ea3c5a: Download complete
9bad880da3d2: Download complete
25f11f5fb0cb: Download complete
ebc34468f71d: Download complete
2318d26665ef: Download complete
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
192.168.7.26:5000/test latest ba5877dc9bec 6 weeks ago 192.7 MB
```