├── debian └── README.md ├── ubuntu └── README.md ├── registry └── README.md ├── fedora └── README.md ├── django └── README.md ├── node └── README.md ├── nginx └── README.md ├── golang └── README.md ├── python └── README.md ├── postgres └── README.md ├── java └── README.md ├── ruby └── README.md ├── rails └── README.md ├── rabbitmq └── README.md ├── README.md ├── centos └── README.md ├── php └── README.md ├── mongo └── README.md └── mysql └── README.md /debian/README.md: -------------------------------------------------------------------------------- 1 | # Debian 2 | > 此镜像从[Docker Hub](https://hub.docker.com/_/debian/)同步并由 DaoCloud 提供中文文档支持,用来帮助国内开发者更方便的使用 Docker 镜像。 3 | 4 | > 该镜像源维护在 [Github](https://github.com/docker-library/official-images/blob/master/library/debian)。 5 | 6 | ## 什么是Debian? 7 | 8 | Debian 是完全由自由软件组成的类UNIX操作系统,其包含的多数软件使用GNU通用公共许可协议授权,并由Debian计划的参与者组成团队对其进行打包、开发与维护。 9 | 10 | > 来自[维基百科](https://zh.wikipedia.org/wiki/Debian) 11 | 12 | ## 如何使用这个镜像? 13 | 14 | > 因所有镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。 15 | 16 | ### debian:8 17 | 18 | ``` 19 | $ docker run daocloud.io/debian:8 grep -v '^#' /etc/apt/sources.list 20 | ``` 21 | 22 | ### debian:7 23 | 24 | ``` 25 | $ docker run daocloud.io/debian:7 cat /etc/apt/sources.list 26 | ``` 27 | 28 | ## 支持的Docker版本 29 | 30 | 这个镜像在 Docker 1.7.0 上提供最佳的官方支持,对于其他老版本的 Docker(1.0 之后)也能提供基本的兼容。 31 | 32 | ## 该翻译的许可证 33 | 34 | 本作品采用[署名-非商业性使用-禁止演绎](http://creativecommons.org/licenses/by-nc-nd/4.0/)进行许可。 35 | -------------------------------------------------------------------------------- /ubuntu/README.md: -------------------------------------------------------------------------------- 1 | 2 | # Ubuntu 3 | > 此镜像从[Docker Hub](https://registry.hub.docker.com/_/ubuntu/)同步并由 DaoCloud 提供中文文档支持,用来帮助国内开发者更方便的使用 Docker 镜像。 4 | 5 | > 该镜像源维护在 [Github](https://github.com/docker-library/official-images/blob/master/library/ubuntu)。 6 | 7 | ## 什么是Ubuntu? 8 | 9 | Ubuntu 是基于 Debian GNU/Linux,支持 x86、amd64(即x64)和 ppc 架构,由全球化的专业开发团队(Canonical Ltd)打造的开源 GNU/Linux 操作系统。为桌面虚拟化提供支持平台。Ubuntu 对 GNU/Linux 的普及特别是桌面普及作出了巨大贡献,由此使更多人共享开源的成果与精彩。 10 | 11 | > 来自[百度百科](http://baike.baidu.com/view/4236.htm) 12 | 13 | ## 如何使用这个镜像? 14 | 15 | > 因所有镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。 16 | 17 | ### ubuntu:14.04 18 | 19 | ``` 20 | $ docker run daocloud.io/ubuntu:14.04 grep -v '^#' /etc/apt/sources.list 21 | ``` 22 | 23 | ### ubuntu:12.04 24 | 25 | ``` 26 | $ docker run daocloud.io/ubuntu:12.04 cat /etc/apt/sources.list 27 | ``` 28 | 29 | ## 支持的Docker版本 30 | 31 | 这个镜像在 Docker 1.7.0 上提供最佳的官方支持,对于其他老版本的 Docker(1.0 之后)也能提供基本的兼容。 32 | 33 | ## 该翻译的许可证 34 | 35 | 本作品采用[署名-非商业性使用-禁止演绎](http://creativecommons.org/licenses/by-nc-nd/4.0/)进行许可。 36 | -------------------------------------------------------------------------------- /registry/README.md: -------------------------------------------------------------------------------- 1 | # Docker Registry 2 | 3 | > 此镜像从[Docker Hub](https://registry.hub.docker.com/_/registry/)同步并由 DaoCloud 提供中文文档支持,用来帮助国内开发者更方便的使用 Docker 镜像。 4 | 5 | > 该镜像源维护在 [Github](https://github.com/docker-library/official-images/blob/master/library/registry)。 6 | 7 | 镜像标签高于「2」的为[新版的Registry](https://github.com/docker/distribution)。 8 | 9 | 其他标签则为[老版本的Registry](https://github.com/docker/docker-registry)。 10 | 11 | ## 如何使用这个镜像? 12 | 13 | > 因所有镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。 14 | 15 | 可以参考[安装站点](http://get.daocloud.io/)安装 Docker 16 | 17 | ### 快速启动 Registry 18 | 19 | * 启动 Registry: 20 | 21 | `docker run -p 5000:5000 -v :/tmp/registry daocloud.io/registry` 22 | 23 | * 修改 docker deamon 启动脚本,增加: 24 | 25 | `-H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock –insecure-registry :5000` 26 | 27 | 28 | ### 推荐的方式启动 Registry 29 | 30 | ``` 31 | docker run \ 32 | -e SETTINGS_FLAVOR=s3 \ 33 | -e AWS_BUCKET=acme-docker \ 34 | -e STORAGE_PATH=/registry \ 35 | -e AWS_KEY=AKIAHSHB43HS3J92MXZ \ 36 | -e AWS_SECRET=xdDowwlK7TJajV1Y7EoOZrmuPEJlHYcNP2k4j49T \ 37 | -e SEARCH_BACKEND=sqlalchemy \ 38 | -p 5000:5000 \ 39 | daocloud.io/registry 40 | ``` 41 | 42 | 注意:上面的示例中容器试图映射主机的 5000 端口,如果该端口已经被占用,可以映射其他空闲端口。 43 | 44 | ## 支持的 Docker 版本 45 | 46 | 这个镜像在 Docker 1.7.0 上提供最佳的官方支持,对于其他老版本的 Docker(1.0 之后)也能提供基本的兼容。 47 | 48 | ## 该翻译的许可证 49 | 50 | 本作品采用[署名-非商业性使用-禁止演绎](http://creativecommons.org/licenses/by-nc-nd/4.0/)进行许可。 51 | -------------------------------------------------------------------------------- /fedora/README.md: -------------------------------------------------------------------------------- 1 | # Fedora 2 | 3 | > 此镜像从 [Docker Hub](https://registry.hub.docker.com/_/fedora/) 同步并由 DaoCloud 提供中文文档支持,用来帮助国内开发者更方便的使用 Docker 镜像。 4 | 5 | > 该镜像源维护在 [Github](https://github.com/docker-library/official-images/blob/master/library/fedora)。 6 | 7 | ## Fedora 8 | 9 | Fedora 是一个知名的 Linux 发行版,是一款由全球社区爱好者构建的面向日常应用的快速、稳定、强大的操作系统。它允许任何人自由地使用、修改和重发布,无论现在还是将来。它由一个强大的社群开发,这个社群的成员以自己的不懈努力,提供并维护自由、开放源码的软件和开放的标准。Fedora 项目由 Fedora 基金会管理和控制,得到了 Red Hat, Inc. 的支持。 10 | 11 | > 来自[百度百科](http://baike.baidu.com/view/182182.htm) 12 | 13 | ## 如何使用这个镜像? 14 | 15 | > 因所有镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。 16 | 17 | 该镜像包括官方 Fedora 22, Fedora 21 和 半官方的 Fedora 20 (heisenbug)。 18 | 19 | 标签`fedora:latest`会一直指向到最新的稳定版本。目前的稳定版本是 Fedora 22。因此标签`fedora:latest`和`fedora:22`是同一个镜像。 20 | 21 | Fedora rawhide 可以通过`fedora:rawhide`获得。Fedora 20 可以通过`fedora:20`和`fedora:heisenbug`获得。 目前 Fedora 20 已经不再维护了,最后一个补丁是 CVE-2015-4000 (Logjam)。 22 | 23 | Federa 的源位置可以通过设置 metalink 的位置到`http://mirrors.fedoraproject.org`来自动选择。 24 | 25 | ``` 26 | $ docker run daocloud.io/fedora cat /etc/yum.repos.d/fedora.repo | grep metalink 27 | metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch 28 | metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-debug-$releasever&arch=$basearch 29 | metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-source-$releasever&arch=$basearch 30 | ``` 31 | 32 | ## 支持的Docker版本 33 | 34 | 这个镜像在 Docker 1.7.0 上提供最佳的官方支持,对于其他老版本的 Docker(1.0 之后)也能提供基本的兼容。 35 | 36 | ## 该翻译的许可证 37 | 38 | 本作品采用[署名-非商业性使用-禁止演绎](http://creativecommons.org/licenses/by-nc-nd/4.0/)进行许可。 39 | -------------------------------------------------------------------------------- /django/README.md: -------------------------------------------------------------------------------- 1 | # Django 2 | 3 | > 此镜像从 [Docker Hub](https://registry.hub.docker.com/_/django/) 同步并由 DaoCloud 提供中文文档支持,用来帮助国内开发者更方便的使用 Docker 镜像。 4 | 5 | > 该镜像源维护在 [Github](https://github.com/docker-library/official-images/blob/master/library/django)。 6 | 7 | ## 什么是 Django? 8 | 9 | Django 是一个开放源代码的 Web 应用框架,由 Python 写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是 CMS(内容管理系统)软件。并于 2005 年 7 月在 BSD 许可证下发布。这套框架是以比利时的吉普赛爵士吉他手 Django Reinhardt 来命名的。 10 | 11 | > 来自[百度百科](http://baike.baidu.com/subview/962167/9372788.htm) 12 | 13 | 14 | ## 如何使用这个镜像? 15 | 16 | > 因所有镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。 17 | 18 | ### 创建 Dockerfile(推荐) 19 | 20 | ``` 21 | FROM daocloud.io/django:onbuild 22 | ``` 23 | 24 | 把这个文件放到项目的根目录。 25 | 26 | 这个镜像包含很多`ONBUILD`,处理了大部分情况。构建时会执行`COPY . /usr/src/app`,`RUN pip install`,`EXPOSE 8000`,并且设置默认的执行命令:`python manage.py runserver`。 27 | 28 | 然后你可以构建并运行镜像: 29 | 30 | ``` 31 | docker build -t my-django-app . 32 | docker run --name some-django-app -d my-django-app 33 | ``` 34 | 35 | 你可以访问`http://容器 IP:8000` 来测试,如果想要通过主机 IP 来访问(如 `http://localhost:8000`),要执行下面的命令: 36 | 37 | ``` 38 | docker run --name some-django-app -p 8000:8000 -d my-django-app 39 | ``` 40 | 41 | ### 不创建 Dockerile 42 | 43 | 你可以直接使用`docker run`创建。 44 | 45 | ``` 46 | docker run --name some-django-app -v "$PWD":/usr/src/app -w /usr/src/app -p 8000:8000 -d daocloud.io/django bash -c "pip install -r requirements.txt && python manage.py runserver 0.0.0.0:8000" 47 | ``` 48 | 49 | 生成一个 django 项目 50 | 51 | ``` 52 | docker run -it --rm --user "$(id -u):$(id -g)" -v "$PWD":/usr/src/app -w /usr/src/app daocloud.io/django django-admin.py startproject mysite 53 | ``` 54 | 上面的命令会在你当前目录下产生一个名为`mysite`的子文件夹。 55 | 56 | ## 支持的Docker版本 57 | 58 | 这个镜像在 Docker 1.7.0 上提供最佳的官方支持,对于其他老版本的 Docker(1.0 之后)也能提供基本的兼容。 59 | 60 | ## 该翻译的许可证 61 | 62 | 本作品采用[署名-非商业性使用-禁止演绎](http://creativecommons.org/licenses/by-nc-nd/4.0/)进行许可。 63 | -------------------------------------------------------------------------------- /node/README.md: -------------------------------------------------------------------------------- 1 | # Node 2 | 3 | > 此镜像从 [Docker Hub](https://registry.hub.docker.com/u/library/node/) 同步并由 DaoCloud 提供中文文档支持,用来帮助国内开发者更方便的使用 Docker 镜像。 4 | 5 | > 该镜像源维护在 [Github](https://github.com/docker-library/official-images/blob/master/library/node)。 6 | 7 | ## 什么是 Node.js? 8 | 9 | Node.js 是一个基于 Chrome JavaScript 运行时建立的平台,用于方便地搭建响应速度快、易于扩展的网络应用。 Node.js 使用事件驱动,非阻塞 I/O 模型而得以轻量和高效,非常适合在分布式设备上运行的数据密集型的实时应用。 10 | 11 | >来自[百度百科](http://baike.baidu.com/view/3974030.htm) 12 | 13 | 14 | ## 如何使用这个镜像? 15 | 16 | > 因所有镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。 17 | 18 | ### 在您的 Node.js 应用项目中创建一个 `Dockerfile` 19 | 20 | ``` 21 | FROM daocloud.io/node:0.10-onbuild 22 | # replace this with your application's default port 23 | EXPOSE 8888 24 | ``` 25 | 26 | 然后您可以构建并且运行该 Docker 镜像 27 | 28 | ``` 29 | docker build -t my-nodejs-app . 30 | docker run -it --rm --name my-running-app my-nodejs-app 31 | ``` 32 | 33 | ### 注意 34 | 35 | 在该镜像中假定您的应用中有一个名为 `package.json` 的文件,其中列出了项目依赖以及定义了入口脚本 36 | 37 | ## 运行单个 Node.js 脚本 38 | 39 | 对于许多简单的单一文件项目,你会发现写一个完整的 `Dockerfile` 是不合适的。 所以,您可以直接通过使用 Node.js 镜像来运行一个 Node.js 脚本。 40 | 41 | ``` 42 | docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp 43 | daocloud.io/node:0.10 node your-daemon-or-script.js 44 | ``` 45 | 46 | ## 镜像的版本 47 | 48 | Node 的镜像有多个版本,分别适用于不同的场合。 49 | 50 | ### node: 51 | 52 | 这是标准的 Node 镜像分支,如果你没有什么特别的需求,默认使用这个分支即可。这个分支被用于常规的容器创建,同时也用来作为构建其它镜像的基础镜像。 `buildpack-deps` 方案被应用于此分支,这是一种专门为在系统中大范围使用 Docker 镜像的用户而设计的方案。通过提供大量的常用的 dpkg 应用软件包,减少了软件包的安装量,进而降低了整个系统内的镜像总大小。 53 | 54 | ### node:onbuild 55 | 56 | 这个分支可以用来很轻松地创建衍生镜像。在多数应用场景下,只需在项目中的 Dockfile 里添加一行 `FROM: daocloud.io/node:onbuild` 就完全可以创建一个独立的镜像。 57 | 58 | ### node:slim 59 | 60 | 这是一个精简分支,它仅仅包含了可以保证 node 运行的最少软件包。 除非您的部署环境对镜像尺寸大小的要求比较苛刻,否则我们强烈建议使用默认分支。 61 | 62 | ## 支持的Docker版本 63 | 64 | 这个镜像在 Docker 1.7.1 上提供最佳的官方支持,对于其他老版本的 Docker(1.0 之后)也能提供基本的兼容。 65 | 66 | ## 该翻译的许可证 67 | 68 | 本作品采用[署名-非商业性使用-禁止演绎](http://creativecommons.org/licenses/by-nc-nd/4.0/)进行许可。 69 | -------------------------------------------------------------------------------- /nginx/README.md: -------------------------------------------------------------------------------- 1 | # Nginx 2 | 3 | > 此镜像从 [Docker Hub](https://registry.hub.docker.com/_/nginx/) 同步并由 DaoCloud 提供中文文档支持,用来帮助国内开发者更方便的使用 Docker 镜像。 4 | 5 | > 该镜像源维护在 [Github](https://github.com/docker-library/official-images/blob/master/library/nginx)。 6 | 7 | ## 什么是 Nginx? 8 | 9 | Nginx 是一款轻量级的 Web 服务器、反向代理服务器、及电子邮件(IMAP/POP3)代理服务器,并在一个 BSD-like 协议下发行。由俄罗斯的程序设计师 Igor Sysoev 所开发,供俄国大型的入口网站及搜索引擎 Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 Nginx 网站用户有:新浪、网易、腾讯等。 10 | 11 | >来自[百度百科](http://baike.baidu.com/view/926025.htm) 12 | 13 | 14 | ## 如何使用这个镜像? 15 | 16 | > 因所有镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。 17 | 18 | ### 托管静态网页内容 19 | 20 | ``` 21 | docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -d daocloud.io/nginx 22 | ``` 23 | 24 | 另外一种比上面绑定 volume 更推荐的做法是用`Dockerfile`生成包含网页内容的新镜像,如下所示: 25 | 26 | ``` 27 | FROM daocloud.io/nginx 28 | COPY static-html-directory /usr/share/nginx/html 29 | ``` 30 | 31 | 把上面的`Dockerfile`和您的网页内容(static-html-directory)放在同一目录下,然后运行命令生成新镜像: 32 | 33 | ``` 34 | docker build -t some-content-nginx . 35 | ``` 36 | 37 | 最后启动容器: 38 | 39 | ``` 40 | docker run --name some-nginx -d some-content-nginx 41 | ``` 42 | 43 | ### 暴露端口 44 | 45 | ``` 46 | docker run --name some-nginx -d -p 8080:80 some-content-nginx 47 | ``` 48 | 49 | 这样启动,您就可以通过 `http://localhost:8080` 或者 `http://宿主 IP:8080` 访问 Nginx 了。 50 | 51 | 52 | ### 进阶配置 53 | ``` 54 | docker run --name some-nginx -v /some/nginx.conf:/etc/nginx/nginx.conf:ro -d daocloud.io/nginx 55 | ``` 56 | 57 | > 了解详细的 Nginx 配置文件语法,请参考:[官方文档](http://nginx.org/en/docs/)。 58 | 59 | 为了确保 Nginx 容器能够持续运行,请务必在您自定义的 Nginx 配置文件中包含`deamon off`配置项。 60 | 61 | 下面的命令从一个正在运行的 Nginx 容器中复制出配置文件: 62 | 63 | ``` 64 | docker cp some-nginx:/etc/nginx/nginx.conf /some/nginx.conf 65 | ``` 66 | 67 | 您也可以通过推荐的`Dockerfile`方式来生成一个包含自定义配置文件的镜像,如下所示: 68 | 69 | ``` 70 | FROM daocloud.io/nginx 71 | COPY nginx.conf /etc/nginx/nginx.conf 72 | ``` 73 | 74 | 再用下面的命令构建镜像: 75 | 76 | ``` 77 | docker build -t some-custom-nginx . 78 | ``` 79 | 80 | 最后启动容器: 81 | 82 | ``` 83 | docker run --name some-nginx -d some-custom-nginx 84 | ``` 85 | 86 | ## 支持的Docker版本 87 | 88 | 这个镜像在 Docker 1.7.0 上提供最佳的官方支持,对于其他老版本的 Docker(1.0 之后)也能提供基本的兼容。 89 | 90 | ## 该翻译的许可证 91 | 92 | 本作品采用[署名-非商业性使用-禁止演绎](http://creativecommons.org/licenses/by-nc-nd/4.0/)进行许可。 93 | -------------------------------------------------------------------------------- /golang/README.md: -------------------------------------------------------------------------------- 1 | # Golang 2 | > 此镜像从[Docker Hub](https://registry.hub.docker.com/_/golang/)同步并由 DaoCloud 提供中文文档支持,用来帮助国内开发者更方便的使用 Docker 镜像。 3 | > 该镜像源维护在 [Github](https://github.com/docker-library/official-images/blob/master/library/golang)。 4 | 5 | ## 什么是 Go? 6 | 7 | Go 是 Google 开发的一种编译型,可平行化,并具有垃圾回收功能的编程语言。罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊于 2007 年 9 月开始设计 Go 语言,稍后 Ian Lance Taylor, Russ Cox 加入项目中。Go 语言是基于 Inferno 操作系统所开发的。Go 语言于 2009 年 11 月正式宣布推出,成为开放源代码项目,并在 Linux 及 Mac OS X 平台上进行了实现,后追加 Windows 系统下的实现。 8 | 9 | > 来自[百度百科](http://baike.baidu.com/view/9257526.htm) 10 | 11 | ## 如何使用这个镜像? 12 | 13 | > 因所有镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。 14 | 15 | ### 在你的应用中启动一个 Go 实例 16 | 17 | 你可以使用本镜像来创建一个 Go 的容器作为应用的构建环境,也可作为运行环境。在你的`Dockerfile`中写下以下代码行,Docker 会编译并且运行你的项目: 18 | 19 | ``` 20 | FROM daocloud.io/golang:1.3-onbuild 21 | ``` 22 | 23 | 上面指定的这个镜像包含'ONBUILD'触发器,这个构建会依次执行`COPY . /usr/src/app`,`RUN go get -d -v`,和`RUN go install -v`。 24 | 25 | 这个镜像也包含`CMD ["app"]`指令,表示应用的默认启动命令,不带任何参数。 26 | 27 | 接着,你可以构建并运行你的 Docker 镜像: 28 | 29 | ``` 30 | docker build -t my-golang-app . 31 | docker run -it --rm --name my-running-app my-golang-app 32 | ``` 33 | 34 | ### 在 Docker 容器中编译你的应用 35 | 36 | 某些情况下,你并不需要在容器中运行你的应用,以下命令将使你在容器中编译,而不运行你的应用: 37 | 38 | ``` 39 | docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp daocloud.io/golang:1.3 go build -v 40 | ``` 41 | 42 | 这个命令将当前目录作为一个 volume 挂载进容器,并把这个 volume 设置成工作目录,然后运行命令`go build`来编译应用。如果你的工程包含一个`Makefile`,你也可以运行一下命令: 43 | 44 | ``` 45 | docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp daocloud.io/golang:1.3 make 46 | ``` 47 | 48 | ### 在 Docker 容器中交叉编译 49 | 50 | 如果你的应用并非运行在 linux/amd64 上,比如 windows/386, 你同样可以利用 Docker 来编译: 51 | 52 | ``` 53 | docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp -e GOOS=windows -e GOARCH=386 daocloud.io/golang:1.3-cross go build -v 54 | ``` 55 | 56 | 当然,你也可以使用以下脚本一次编译多个平台的版本: 57 | 58 | ``` 59 | docker run --rm -it -v "$PWD":/usr/src/myapp -w /usr/src/myapp daocloud.io/golang:1.3-cross bash 60 | $ for GOOS in darwin linux; do 61 | > for GOARCH in 386 amd64; do 62 | > go build -v -o myapp-$GOOS-$GOARCH 63 | > done 64 | > done 65 | ``` 66 | 67 | ## 支持的Docker版本 68 | 69 | 这个镜像在 Docker 1.7.0 上提供最佳的官方支持,对于其他老版本的 Docker(1.0 之后)也能提供基本的兼容。 70 | 71 | ## 该翻译的许可证 72 | 73 | 本作品采用[署名-非商业性使用-禁止演绎](http://creativecommons.org/licenses/by-nc-nd/4.0/)进行许可。 74 | -------------------------------------------------------------------------------- /python/README.md: -------------------------------------------------------------------------------- 1 | # Python 2 | > 此镜像从[Docker Hub](https://registry.hub.docker.com/_/python/)同步并由 DaoCloud 提供中文文档支持,用来帮助国内开发者更方便的使用 Docker 镜像。 3 | 4 | > 该镜像源维护在 [Github](https://github.com/docker-library/official-images/blob/master/library/python)。 5 | 6 | ## 什么是 Python? 7 | 8 | Python 是一种解释型、交互性、面向对象的开源编程语言。它集成了众多的高级功能,比如:模块、异常处理、动态输入、高级的动态数据以及动态类。Python 兼备异常清晰的语法。Python 拥有丰富的系统调用接口和库,还包括各式各样的窗口系统,同时 Python 还可扩展使用 C 语言和 C++ 语言。对于需要编程接口的应用而言,Python 还可以作为一种扩展语言进行使用。最后,Python 还具备强大的移植性:它可以很方便地运行在很多的 Unix 系统、Mac OS、以及 Windows 2000 及后续版本平台上。 9 | 10 | > 来自[百度百科](http://baike.baidu.com/view/21087.htm) 11 | 12 | ## 如何使用这个镜像? 13 | 14 | > 因所有镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。 15 | 16 | ### 在你的 Python 应用项目下创建一个`Dockerfile`文件 17 | 18 | ``` 19 | FROM daocloud.io/python:3-onbuild 20 | CMD [ "python", "./your-daemon-or-script.py" ] 21 | ``` 22 | 23 | 或者(如果你需要使用 Python 2): 24 | 25 | ``` 26 | FROM daocloud.io/python:2-onbuild 27 | CMD [ "python", "./your-daemon-or-script.py" ] 28 | ``` 29 | 30 | 这些镜像都包含了多个`ONBUILD`触发器,在大部分情况下这些触发器能满足你的需求。构建部分会`COPY`一个`requirements.txt`文件,在 Dockerfile 中`RUN pip install`,然后将当前目录复制至`/usr/src/app`。 31 | 32 | 然后,你就可以构建和运行 Docker 镜像了: 33 | 34 | ``` 35 | docker build -t my-python-app . 36 | docker run -it --rm --name my-running-app my-python-app 37 | ``` 38 | 39 | ### 运行单个Python脚本 40 | 41 | 对于很多简单的单个文件项目而言,编写一个完整的`Dockerfile`会带来些许的不方便。在这种情况下,你可以通过直接使用 Docker 镜像来运行 Python 脚本: 42 | 43 | ``` 44 | docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp daocloud.io/python:3 python your-daemon-or-script.py 45 | ``` 46 | 47 | 或者(如果你需要使用 Python 2): 48 | 49 | ``` 50 | docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp daocloud.io/python:2 python your-daemon-or-script.py 51 | ``` 52 | 53 | ## 镜像标签含义 54 | 55 | Python镜像会有很多的形式,每一种形式都用以一个特殊的用途. 56 | 57 | `daocloud.io/python:` 58 | 59 | 这是最原生的 Python 镜像。如果你不确定需要什么类型的 Python 镜像,那么你最有可能需要使用的就是这样的镜像。这类镜像设计的初衷,就是为了既满足直接运行的容器(挂载你的 Python 源代码并直接启动容器来运行你的应用),又满足基础镜像的需求,来构建其他的镜像。这些标签是`buildpack-deps` 的衍生和成熟版本。`buildpacks-deps`是设计用来满足那些在系统中拥有很多镜像的 Docker 用户的。从设计原则出发,它会包含很多冗余的 Debian 软件包。这将减少镜像在再构建时所需安装的软件数量,同时降低镜像在你系统中的存储空间。 60 | 61 | ## 支持的Docker版本 62 | 63 | 这个镜像在 Docker 1.7.0 上提供最佳的官方支持,对于其他老版本的 Docker(1.0 之后)也能提供基本的兼容。 64 | 65 | ## 该翻译的许可证 66 | 67 | 本作品采用[署名-非商业性使用-禁止演绎](http://creativecommons.org/licenses/by-nc-nd/4.0/)进行许可。 68 | -------------------------------------------------------------------------------- /postgres/README.md: -------------------------------------------------------------------------------- 1 | # Postgres 2 | > 此镜像从[Docker Hub](https://registry.hub.docker.com/_/postgres/)同步并由 DaoCloud 提供中文文档支持,用来帮助国内开发者更方便的使用 Docker 镜像。 3 | 4 | >该镜像源维护在 [Github](https://github.com/docker-library/official-images/blob/master/library/postgres)。 5 | 6 | ## 什么是 PostgreSQL? 7 | 8 | PostgreSQL 是以加州大学伯克利分校计算机系开发的 Postgres,现在已经更名为 PostgreSQL,是一个对象关系型数据库管理系统 (ORDBMS)。PostgreSQL支持大部分 SQL 标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引。开发者可以免费使用、修改、和分发 PostgreSQL,不管是私用、商用、还是学术研究使用。 9 | 10 | >来自[百度百科](http://baike.baidu.com/item/PostgreSQL) 11 | 12 | ## 如何使用这个镜像? 13 | 14 | > 因所有镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。 15 | 16 | ### 启动一个 Postgres 实例 17 | 18 | ``` 19 | docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d daocloud.io/postgres 20 | ``` 21 | 22 | 这个镜像会导出 Postgres 的 5432 端口, 因此通过标准的`link`机制就可以方便的访问 Postgres 数据库实例。 容器启动时会通过`initdb`自动创建默认的 `postgres`用户和数据库。 数据库`postgres`是可以被用户,工具和第三方应用程序访问的默认数据库。 23 | 24 | > 参考[Postgres 文档](postgresql.org/docs)。 25 | 26 | 27 | ### 从应用中连接数据库 28 | 29 | ``` 30 | docker run --name some-app --link some-postgres:postgres -d application-that-uses-postgres 31 | ``` 32 | 33 | ### 或者通过 psql 34 | 35 | ``` 36 | docker run -it --link some-postgres:postgres --rm postgres sh -c 'exec psql -h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U postgres' 37 | ``` 38 | 39 | ### 环境变量 40 | 41 | Postgres 镜像通过一系列环境变量来配置容器,虽然这些环境变量都不是必须的,但是它们会极大的方便您使用镜像。 42 | 43 | ` 44 | POSTGRES_PASSWORD 45 | ` 46 | 47 | 推荐您使用镜像时指定这个环境变量,它用来设置超级用户的密码。 默认的超级用户是由环境变量`POSTGRES_USER`指定的。 在开始的例子中,超级用户密码被设置为 "mysecretpassword"。 48 | 49 | ` 50 | POSTGRES_USER 51 | ` 52 | 53 | 这个可选的环境变量是搭配`POSTGRES_PASSWORD` 一起来设置用户名和密码的,它会创建一个指定名称的超级管理员和同名数据库。 如果没有设置这个环境变量,将使用默认值`postgres`。 54 | 55 | ## 如何扩展这个镜像 56 | 57 | 如果您希望在这个镜像的派生镜像中执行额外的初始化工作,可以在`/docker-entrypoint-init.d`目录下增加`*.sh`脚本 (如果该目录不存在则创建目录),在初始化过程调用`initdb`创建默认的`postgres`用户和数据库后,它会执行该目录下的所有`*.sh`脚本完成额外初始化操作再启动服务。 58 | 59 | > 如果您希望在初始化中执行 SQL 语句,强烈建议您使用 Postgres [单用户模式](http://www.postgresql.org/docs/9.3/static/app-postgres.html#AEN90580)。 60 | 61 | 您还可以通过一个简单的`Dockerfile`设置`locale`,下面这个例子将设置默认的`locale`为`de_DE.utf8`: 62 | 63 | ``` 64 | FROM daocloud.io/postgres:9.4 65 | RUN localedef -i de_DE -c -f UTF-8 -A /usr/share/locale/locale.alias de_DE.UTF-8 66 | ENV LANG de_DE.utf8 67 | ``` 68 | 因为数据库初始化仅发生在容器启动时,因此您可以在数据库创建前设置语言。 69 | 70 | ## 注意 71 | 72 | 如果容器启动时没有数据库,Postgres 会为您创建一个默认数据库。虽然这是 Postgres 正常的行为,但它意味着在这个阶段数据库是不接受连接请求的。 这个行为会对一些自动化工具产生影响,比如 `docker-compose` 会同时启动多个容器。 73 | 74 | ## 支持的Docker版本 75 | 76 | 这个镜像在 Docker 1.7.0 上提供最佳的官方支持,对于其他老版本的 Docker(1.0 之后)也能提供基本的兼容。 77 | 78 | ## 该翻译的许可证 79 | 80 | 本作品采用[署名-非商业性使用-禁止演绎](http://creativecommons.org/licenses/by-nc-nd/4.0/)进行许可。 81 | -------------------------------------------------------------------------------- /java/README.md: -------------------------------------------------------------------------------- 1 | # Java 2 | 3 | > 此镜像从 [Docker Hub](https://registry.hub.docker.com/_/java/) 同步并由 DaoCloud 提供中文文档支持,用来帮助国内开发者更方便的使用 Docker 镜像。 4 | 5 | > 该镜像源维护在 [Github](https://github.com/docker-library/java)。 6 | 7 | ## 什么是 Java? 8 | 9 | Java 是由 Sun Microsystems 公司推出的 Java 面向对象程序设计语言(以下简称 Java 语言)和 Java 平台的总称。由 James Gosling 和同事们共同研发,并在 1995 年正式推出。Java 最初被称为 Oak,是1991年为消费类电子产品的嵌入式芯片而设计的。1995年更名为 Java,并重新设计用于开发 Internet 应用程序。用 Java 实现的 HotJava 浏览器(支持Java Applet)显示了 Java 的魅力:跨平台、动态 Web、Internet 计算。从此,Java 被广泛接受并推动了 Web 的迅速发展。另一方面,Java 技术也不断更新。Java 自面世后就非常流行,发展迅速,对 C++ 语言形成有力冲击。在全球云计算和移动互联网的产业环境下,Java 更具备了显著优势和广阔前景。 10 | 11 | >来自[百度百科](http://baike.baidu.com/subview/29/12654100.htm) 12 | 13 | 14 | ## 如何使用这个镜像? 15 | 16 | > 因所有镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。 17 | 18 | ### 在你的应用中启动一个 Java 实例 19 | 20 | 用这个镜像最简单的方式是直接用一个 Java 容器作为应用构建环境或者运行时环境。 可以像下面这样编写你的`Dockerfile`去编译和运行你的项目: 21 | 22 | ``` 23 | FROM daocloud.io/java:7 24 | COPY . /usr/src/myapp 25 | WORKDIR /usr/src/myapp 26 | RUN javac Main.java 27 | CMD ["java", "Main"] 28 | ``` 29 | 30 | 然后你就可以构建和运行这个 Docker 镜像了: 31 | 32 | ``` 33 | docker build -t my-java-app . 34 | docker run -it --rm --name my-running-app my-java-app 35 | ``` 36 | 37 | ### 在你的容器内编译应用 38 | 39 | 在某些情况下,在容器内部运行你的应用可能不是很合适。你可以像下面这样,只在容器内编译你的应用,但是并不运行应用: 40 | 41 | ``` 42 | docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp daocloud.io/java:7 javac Main.java 43 | ``` 44 | 45 | 在上面的实例中,你的当前目录会以`volume`的形式挂接进容器,并且设置工作目录为 volume 目录,然后运行命令`javac Main.java`触发 Java 编译`Main.java`并指定输出文件为`Main.class`。 46 | 47 | ## 为什么是 OpenJDK/OpenJRE? 48 | 49 | 就像所用主流 Linux 发行版不会在它们的发行渠道中分发 Oracle Java 一样,我们也选择遵循这个惯例。 下面引用了一些发行版不分发 Oracle Java 的方式: 50 | 51 | * Ubuntu 在 Oracle 失效了 "Operating System Distributor License for Java" 授权后停止分发`sun-java6`软件包 ([lists.ubuntu.com](https://lists.ubuntu.com/archives/ubuntu-security-announce/2011-December/001528.html)) 52 | * Debian 要求用户从 oracle.com 手动下载 Java tar 包,然后用`java-package`安装 ([wiki.debian.net](https://wiki.debian.org/Java/Sun)) 53 | * Ubuntu 和 Debian 上的 webupd8 PPA 要求用户先接受 Oracle 授权才能用它们的软件下载和安装 Oracle Java ([webupd8.org](http://www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.html)) 54 | * Gentoo 有一个获取限制 (fetch-restriction) 要求用户从 Oracle 网站手动下载 Java tar 包并接受授权 ([wiki.gentoo.org](https://wiki.gentoo.org/wiki/Java)) 55 | * CentOS 要求用户从 java.com 下载 Oracle 提供的 rpm 包,然后接受 Oracle 授权。([wiki.centos.org](https://wiki.centos.org/HowTos/JavaRuntimeEnvironment)) 56 | * RedHat 提供如何增加一个 Oracle 维护的 repo 的说明 ([access.redhat.com](https://access.redhat.com/solutions/732883)) 57 | 58 | ## 支持的Docker版本 59 | 60 | 这个镜像在 Docker 1.7.0 上提供最佳的官方支持,对于其他老版本的 Docker(1.0 之后)也能提供基本的兼容。 61 | 62 | ## 该翻译的许可证 63 | 64 | 本作品采用[署名-非商业性使用-禁止演绎](http://creativecommons.org/licenses/by-nc-nd/4.0/)进行许可。 65 | -------------------------------------------------------------------------------- /ruby/README.md: -------------------------------------------------------------------------------- 1 | # Ruby 2 | > 此镜像从[Docker Hub](https://registry.hub.docker.com/_/ruby/) 3 | 同步并提供中文文档支持,用来帮助国内开发者更方便的使用 Docker 镜像。 4 | 5 | > 该镜像源维护在 [Github](https://github.com/docker-library/official-images/blob/master/library/ruby)。 6 | 7 | ## 什么是 Ruby? 8 | 9 | Ruby 是一个动态的,反射的,面向对象的,多用途的,开源的编程语言。根据它的作者所说,Ruby 是受 Perl,Smalltalk, Eiffel,Ada,和 Lisp 的影响。它支持多个编程范式,包括函数式,面向对象式,命令式。它也有一个动态类型系统和自动化内存管理。 10 | 11 | > 来自[维基百科](wikipedia.org/wiki/Ruby) 12 | 13 | ## 如何使用这个镜像? 14 | 15 | > 因所有镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。 16 | 17 | ### 创建一个`Dockerfile`在你的 Ruby 项目 18 | 19 | ``` 20 | FROM daocloud.io/ruby:2.1-onbuild 21 | CMD ["./your-daemon-or-script.rb"] 22 | 23 | ``` 24 | 25 | 放置这个`Dockerfile`在你的 app 根目录下,和`Gemfile`在一起。 26 | 27 | 这个镜像包含多个`ONBUILD`触发器,这些触发器包含了所有的你启动应用启动所需要的引导程序。触发器将`COPY . /usr/src/app`和`RUN bundle install`。 28 | 29 | 你能构建和运行 Ruby 镜像: 30 | 31 | ``` 32 | docker build -t my-ruby-app . 33 | docker run -it --name my-running-script my-ruby-app 34 | ``` 35 | 36 | ### 生成一个 Gemfile.lock 文件 37 | 38 | 标签`ONBUILD`期望在您的应用目录中找到一个`Gemfile.lock`文件。 下面的`docker run`指令将会帮您生成一个。请在您应用的顶级目录(`Gemfile`所在的目录)下执行这个指令: 39 | 40 | ``` 41 | docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app daocloud.io/ruby:2.1 bundle install 42 | ``` 43 | 44 | ### 运行一个单独的 Ruby 脚本 45 | 46 | 对于很多简单,单文件的工程,可以直接从本镜像直接运行一个 Ruby 脚本: 47 | 48 | ``` 49 | docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp daocloud.io/ruby:2.1 ruby your-daemon-or-script.rb 50 | ``` 51 | 52 | ## 镜像的版本 53 | 54 | Ruby 镜像有很多不同的分类,每种分类是为特定案例所设计的。 55 | 56 | ### `ruby:` 57 | 58 | 这个是默认镜像,如果你不确定你需要哪种镜像,你可能想去使用这个镜像。这个镜像被设计用着丢弃容器(绑定你的源代码和启动容器去运行程序),也可以作为基本镜像去构建其它镜像。这个标签的镜像是基于`buildpack-deps` 。 标签`buildpack-deps`是专门为 Docker 的普通使用者设计的。通常这些使用者有很多镜像在他们的系统上。它有很多的 Debain 的常用包。这个将减少他们在构建镜像时所需要拉取的包数量,因此也就减少了你系统上所有镜像的整体的大小。 59 | 60 | ### `ruby:onbuild` 61 | 62 | 这个镜像使得构建派生镜像更简单。对应很多用例,在你的工程中创建一个带有`FROM daocloud.io/ruby:onbuild`的`Dockerfile`去构建一个独立的镜像就已经足够了。 63 | 64 | 然而`ONBUILD`版本的真正用意在于创建一个构建好就可以跑的镜像(短期内从零到容器化),由于缺少对*何时*`ONBUILD`操作会触发的掌控,并不推荐在项目里长期使用这个版本。 65 | 66 | > 参考 **[`docker/docker#5714`](https://github.com/docker/docker/issues/5714)**,**[`docker/docker#8240`](https://github.com/docker/docker/issues/8240)**,**[`docker/docker#11917`](https://github.com/docker/docker/issues/11917)** 67 | 68 | 一旦您掌握了您的项目是如何在 Docker 里工作的,您可能想要将您的`Dockerfile`的基础镜像调整为一个非`ONBUILD`版本。并且拷贝`ONBUILD`版本中的命令到新的`Dockerfile`中(将带有`ONBUILD`的指令移动到文件底部并且移除`ONBUILD`关键词),这样您就有了对触发器何时触发的控制并且使得您自己和其他阅读您`Dockerfile`的人们更容易读懂。 69 | 70 | 同时这也会使随着时间的推移添加额外的需求变得更加容易(比如在执行`ONBUILD`前安装更多的软件包) 71 | 72 | ### `ruby:slim` 73 | 74 | 这个镜像不包含那些被包含在默认标签镜像中的那些包,仅仅包含运行 Ruby 所需要的最小化的包。除非你的工作环境只运行 Ruby 和你的空间有限,否则我们强烈推荐使用这个仓库的默认镜像。 75 | 76 | 77 | ## 支持的Docker版本 78 | 79 | 这个镜像在 Docker 1.7.0 上提供最佳的官方支持,对于其他老版本的 Docker(1.0 之后)也能提供基本的兼容。 80 | 81 | ## 该翻译的许可证 82 | 83 | 本作品采用[署名-非商业性使用-禁止演绎](http://creativecommons.org/licenses/by-nc-nd/4.0/)进行许可。 84 | -------------------------------------------------------------------------------- /rails/README.md: -------------------------------------------------------------------------------- 1 | # Rails 2 | 3 | > 此镜像从 [Docker Hub](https://registry.hub.docker.com/_/rails/) 同步并由 DaoCloud 提供中文文档支持,用来帮助国内开发者更方便的使用 Docker 镜像。 4 | 5 | > 该镜像源维护在 [Github](https://github.com/docker-library/official-images/blob/master/library/rails)。 6 | 7 | ## 什么是 Ruby on Rails? 8 | 9 | Ruby on Rails 或 Rails,是一个用 Ruby 运行的开源互联网应用框架。它是一个全栈框架。这就意味着它是「开箱即用」的,Rails 能够创建可以从网站服务器获取请求信息、连接和查询数据库、并且渲染模板的页面和应用。因此 Rails 还自带一个独立于网站服务器的路由体系。 10 | 11 | > 来自[维基百科](https://en.wikipedia.org/wiki/Ruby_on_Rails) 12 | 13 | ## 如何使用这个镜像? 14 | > 因所有镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。 15 | 16 | ### 在您的 Rails 项目中创建一个`Dockerfile` 17 | 18 | ``` 19 | FROM daocloud.io/rails:onbuild 20 | ``` 21 | 22 | 将这个文件置于您应用的顶层目录,与`Gemfile`在同一个目录下。 23 | 24 | 这个镜像包含了应该适用于大部分项目的多个`ONBUILD`触发器。这将会在构建时`COPY . /usr/src/app`,`RUN bundle install`,`EXPOSE 3000`,并且将默认的命令设置为`rails server`。 25 | 26 | 这时您就可以构建和运行这个 Docker 镜像: 27 | 28 | ``` 29 | docker build -t my-rails-app . 30 | docker run --name some-rails-app -d my-rails-app 31 | ``` 32 | 33 | 您可以通过在浏览器中访问 `http://<容器 IP>:3000` 来测试。如果您需要让宿主外的机器访问,您可以通过下面的指令来映射至 8080 端口。 34 | 35 | ``` 36 | docker run --name some-rails-app -p 8080:3000 -d my-rails-app 37 | ``` 38 | 39 | 这样您就可以在浏览器中通过访问 `http://localhost:8080` 或者 `http://<宿主 IP>:8080` 来查看了。 40 | 41 | ### 生成一个`Gemfile.lock` 42 | 43 | 标签`ONBUILD`期望在您的应用目录中找到一个`Gemfile.lock`文件。 下面的`docker run`指令将会帮您生成一个。请在您应用的顶级目录(`Gemfile`所在的目录)下执行这个指令: 44 | 45 | ``` 46 | docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app daocloud.io/ruby:2.1 bundle install 47 | ``` 48 | 49 | ### 创建一个新的 Rails 应用 50 | 51 | 如果您想为一个新的 Rails 项目生成一个目录结构,您可以这样: 52 | 53 | ``` 54 | docker run -it --rm --user "$(id -u):$(id -g)" -v "$PWD":/usr/src/app -w /usr/src/app daocloud.io/rails rails new webapp 55 | ``` 56 | 57 | 这将会在您的当前目录下创建一个叫做`webapp`的子目录。 58 | 59 | ## 镜像的版本 60 | 61 | `rails` 镜像带有很多不同标签的版本,每个版本都为一个特定的用例设计。 62 | 63 | ### `rails:<版本号>` 64 | 65 | 这是标准镜像。如果您不知道应该用哪个版本,您基本上应该选择这个。它即可以启动为一个用过就丢弃的容器(用来挂载您的源码和用容器启动您的应用),也可以当做另一个镜像的基础镜像。 66 | 67 | ### `rails:onbuild` 68 | 69 | 这个镜像使得构建衍生镜像变得更加容易。大部分项目中,在您的项目的顶级目录中创建一个以`FROM daocloud.io/rails:onbuild`开头的`Dockerfile`已经足够让您创建一个独立的镜像了。 70 | 71 | 然而`ONBUILD`版本的真正用意在于创建一个构建好就可以跑的镜像(短期内从零到容器化),由于缺少对*何时*`ONBUILD`操作会触发的掌控,并不推荐在项目里长期使用这个版本。 72 | 73 | > 参考 **[`docker/docker#5714`](https://github.com/docker/docker/issues/5714)**,**[`docker/docker#8240`](https://github.com/docker/docker/issues/8240)**,**[`docker/docker#11917`](https://github.com/docker/docker/issues/11917)** 74 | 75 | 一旦您掌握了您的项目是如何在 Docker 里工作的,您可能想要将您的`Dockerfile`的基础镜像调整为一个非`ONBUILD`版本。并且拷贝`ONBUILD`版本中的命令到新的`Dockerfile`中(将带有`ONBUILD`的指令移动到文件底部并且移除`ONBUILD`关键词),这样您就有了对触发器何时触发的控制并且使得您自己和其他阅读您`Dockerfile`的人们更容易读懂。 76 | 77 | 同时这也会使随着时间的推移添加额外的需求变得更加容易(比如在执行`ONBUILD`前安装更多的软件包)。 78 | 79 | ## 支持的 Docker 版本 80 | 81 | 这个镜像在 Docker 1.7.0 上提供最佳的官方支持,对于其他老版本的 Docker(1.0 之后)也能提供基本的兼容。 82 | 83 | ## 该翻译的许可证 84 | 85 | 本作品采用[署名-非商业性使用-禁止演绎](http://creativecommons.org/licenses/by-nc-nd/4.0/)进行许可。 86 | -------------------------------------------------------------------------------- /rabbitmq/README.md: -------------------------------------------------------------------------------- 1 | # RabbitMQ 2 | > 此镜像从[Docker Hub](https://registry.hub.docker.com/_/rabbitmq/)同步并由 DaoCloud 提供中文文档支持,用来帮助国内开发者更方便的使用 Docker 镜像。 3 | 4 | > 该镜像源维护在 [Github](https://github.com/docker-library/official-images/blob/master/library/rabbitmq)。 5 | 6 | ## 什么是 RabbitMQ? 7 | 8 | RabbitMQ 是开源的消息队列系统(或称消息中间件),它实现了高级的消息队列协议(AMQR)。RabbitMQ 服务端是由 Erlang 编写的,同时也是基于开放电信平台框架(OTP)开发的。客户端的接口则几乎兼容所有的主流语言。 9 | 10 | > 来自[维基百科](https://en.wikipedia.org/wiki/RabbitMQ) 11 | 12 | ## 如何使用这个镜像? 13 | 14 | > 因所有镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。 15 | 16 | ### 启动一个实例 17 | 18 | RabbitMQ 通过节点名(通常是主机名)存储数据。所以我们启动 Docker 时需要设置`-h/--hostname`参数,这样可以让我们知道数据存在哪里。 19 | 20 | ``` 21 | docker run -d --hostname my-rabbit --name some-rabbit daocloud.io/rabbitmq:3 22 | ``` 23 | 24 | 如果你已经执行了上面的命令,那你就可以通过`docker logs some-rabbit`查看这个容器实例的日志了: 25 | 26 | ``` 27 | =INFO REPORT==== 6-Jul-2015::20:47:02 === 28 | node : rabbit@my-rabbit 29 | home dir : /var/lib/rabbitmq 30 | config file(s) : /etc/rabbitmq/rabbitmq.config 31 | cookie hash : UoNOcDhfxW9uoZ92wh6BjA== 32 | log : tty 33 | sasl log : tty 34 | database dir : /var/lib/rabbitmq/mnesia/rabbit@my-rabbit 35 | ``` 36 | 37 | ### Erlang Cookie 38 | 39 | 节点之间使用 cookie([关于 RabbitMQ 集群](https://www.rabbitmq.com/clustering.html#erlang-cookie)) 来判断是否通信,唯有 cookie 相同的两个节点才能通信。 40 | 41 | 你可使用`RABBITMQ_ERLANG_COOKIE`来设置 RabbitMQ 实例的 cookie : 42 | 43 | ``` 44 | docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_ERLANG_COOKIE='secret cookie here' daocloud.io/rabbitmq:3 45 | ``` 46 | 47 | 设置完成后,通过`docker link`连接此 RabbitMQ 实例: 48 | 49 | 50 | ``` 51 | $ docker run -it --rm --link some-rabbit:my-rabbit -e RABBITMQ_ERLANG_COOKIE='secret cookie here' daocloud.io/rabbitmq:3 bash 52 | root@f2a2d3d27c75:/# rabbitmqctl -n rabbit@my-rabbit list_users 53 | Listing users ... 54 | guest [administrator] 55 | ``` 56 | 57 | 当然,你也可以设置`RABBITMQ_NODENAME`,这样你就可以更好的使用`rabbitmqctl`命令了。 58 | 59 | ``` 60 | $ docker run -it --rm --link some-rabbit:my-rabbit -e RABBITMQ_ERLANG_COOKIE='secret cookie here' -e RABBITMQ_NODENAME=rabbit@my-rabbit daocloud.io/rabbitmq:3 bash 61 | root@f2a2d3d27c75:/# rabbitmqctl list_users 62 | Listing users ... 63 | guest [administrator] 64 | ``` 65 | 66 | ### 管理你的 RabbitMQ 服务 67 | 68 | RabbitMQ 已经有一些自带管理插件的镜像。用这些镜像创建的容器实例可以直接使用默认的 15672 端口访问,默认账号密码是`guest/guest`: 69 | 70 | ``` 71 | docker run -d --hostname my-rabbit --name some-rabbit daocloud.io/rabbitmq:3-management 72 | ``` 73 | 74 | 然后打开浏览器访问 `http://容器 IP:15672` ,就可以管理你的 RabbitMQ 实例了,或者你可以暴露主机端口来访问: 75 | 76 | ``` 77 | docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672 daocloud.io/rabbitmq:3-management 78 | ``` 79 | 这时,你可访问 `http://localhost:8080` 或者 `http://宿主 IP:8080` 管理 RabbitMQ 服务了。 80 | 81 | 82 | ### 连接 Daemon 83 | 84 | ``` 85 | docker run --name some-app --link some-rabbit:rabbit -d application-that-uses-rabbitmq 86 | ``` 87 | 88 | ## 支持的Docker版本 89 | 90 | 这个镜像在 Docker 1.7.1 上提供最佳的官方支持,对于其他老版本的 Docker(1.0 之后)也能提供基本的兼容。 91 | 92 | ## 该翻译的许可证 93 | 94 | 本作品采用[署名-非商业性使用-禁止演绎](http://creativecommons.org/licenses/by-nc-nd/4.0/)进行许可。 95 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # library-image 2 | Maintain the images synced from dockerhub 3 | 4 | ## 公司及产品名称 5 | 我们的公司及产品名称是「DaoCloud」。注意这是两个单词的合成词,所以中间沒有空格(參考:GitHub)。如作为 URL 的一部分,应该使用全小写的「daocloud」。 6 | 7 | ## 文案风格 8 | 1. 一定多检查,确保没有错别字。 9 | 2. 即使是流行语中故意的谐音错别字也不要使用,比如「墙裂」、「童鞋」等。 10 | 3. 我们崇尚精练的文风。请在检查中把对表达意思没有明显作用的字、词、句删除,在不影响表达效果的前提下把文案长度减到最短。 11 | 12 | ## 中文、英文、数字混合时空格的使用 13 | 1. 英文与非标点的中文之间需要有一个空格,如「使用 DaoCloud 自动构建和部署」而不是「使用DaoCloud自动构建和部署」。(fn) 14 | 15 | 2. 数字与非标点的中文之间需要有一个空格,如「我们发布了 5 个产品」而不是「我们发布了5个产品」。 16 | - 正确:「这是 1 款 Android 应用」,错误:「这是1款Android应用」。 17 | - 正确:「2014 年 2 月 14 日」,错误:「2014年2月14日」。 18 | 19 | 3. 尽可能使用中文数词,特别是当前后都是中文时。上面的例子写为「我们发布了五个产品」会更好。 20 | 21 | 4. 除了"%", "°C", 以及倍数单位(如 2x, 3n)之外,其余数字与单位之间需要加空格。 22 | 23 | 5. 注意特殊名词的大小写:Android、iOS、iPhone、Google、Apple,无论是否在句首都应该以同样的方式写。 24 | 25 | 6. 在官方文案中尽量使用中文,避免中英文混合的情况。例如「app」一般应写为「应用」或「移动应用」。品牌、产品名、人名、地名等特殊名词,如果来自英文,请使用英文以避免在不同译法间选择。 26 | 27 | 7. 书写时括号中全为数字,则括号用半角括号且首括号前要空一格,例如「联系人 (22)」; 28 | 29 | 30 | ## 标点相关 31 | 1. 只有中文或中英文混排中,一律使用中文/全角标点。 32 | 2. 中英文混排中如果出现整句英文,则在这句英文中使用英文/半角标点。 33 | 3. 中文标点与其他字符间一律不加空格。 34 | > 正确:「有:Apple,Android,诺基亚」错误:「有:Apple , Android ,Nokia」 35 | 4. 中文文案中使用中文引号「」和『』,其中「」为外层引号。Mac 上如「百度输入法」等都可以方便地输入中文引号。 36 | 5. 省略号请使用「……」标准用法,不要使用「。。。」 ,也不要使用三个英文句点「.」。 37 | 6. 感叹号:请勿使用「!!」。尽量避免使用「!」。请先冷静下来再坐电脑前敲键盘。 38 | 7. 波浪号:请勿在文章内使用「~」,活泼卖萌有很多其他的表达方式。 39 | 40 | ## 段落 41 | 1. 如果是纯文本,段落之间使用一个空行隔开。如果是 HTML 或其他富文本格式,使用额外空白作为段落间的分隔。 42 | 2. 段落开头不要留出空白字符。 43 | 44 | ## 引用来源 45 | 1. 如果在正文中部分引用第三方内容,请使用恰当的引用格式并注明出处。如: 46 | > One man’s constant is another man’s variable. 47 | > — Alan Perlis 48 | 2. 如果是全篇转载,请在全文开头显著位置注明作者和出处,并链接至原文,如: 49 | > 本文转载自 WikiQuote 50 | 3. 如果格式不允许超链接,请以文本方式直接给出原文链接。如果原文链接太长影响美观,可以使用短链接服务。如: 51 | > 本文转载自 WikiQuote:http://bit.ly/UlHIdN 52 | 4. 文中有使用外站图片,必须在文末标明。来源如果来自外站必须添加链接,来源如果来自外部作品则不需要。如:「本文部分图片来自 ifanr」「题图来自:《春娇与志明》截图」。 53 | 5. 若文章为全文翻译,必须在注明作者和出处,并链接至原文。 54 | 6. 若文章为部分编译,则需在文末注明作者和出处。如:「本文部分内容编译自 Apple」「本文部分观点来自 煮机网微博」。 55 | 56 | ## 细节问题 57 | 1. 「你」和「您」:在不是很正式或没有明确的个体指代对象的时候请用「你」,如文档、博客、群发的邮件等;在指代特定个体时请用「您」,如活动邀请函等。 58 | 2. 自我称呼:使用「我」,不推荐使用「小编」「笔者」「兼职编辑」「兼职作者」自称。 59 | 3. 字体和字号的一致:在富文本格式文档中,特别是 HTML 邮件中,常有人因为从不同来源复制粘贴而导致同一层次的文本字体和字号不一致。这给人不专业的感觉,请避免。 60 | 4. App 是 application 的缩写,发音为 /ˈæp/,所以要注意不要把三个字母拆开念。App 是一个普通名词而不是多个单词的首字母缩写,所以不应该用全大写的 APP。和其他词一样,大小写规则取决于是否处于句首、标题、或特殊短语(如 App Store)中。大多数情况下应该使用中文「应用」以避免这样的问题。 61 | 62 | ## 遣词造句 63 | 1. 用主动语态,不要用被动语态。一般情况下,主动语态比被动语态更有力。 64 | 2. 使用具体、明确、展示细节的词汇,能激发想象,使读者自己代入情境。「把硬币放进口袋里,他咧开嘴笑了」,远远强过「他满意地拿走了辛苦挣来的奖赏」。 65 | 3. 减少形容词的使用,少用 「的」。 66 | 4. 「的」「地」「得」要用对。是的,连小学都不要求了但是要用对。 67 | 5. 记住,如果你写了一条文案觉得非常聪明非常好笑,很可能需要停下来想一下用户是否能理解了。(本条感谢 37signals 的文案建议) 68 | 69 | ## 文章引言 70 | 71 | 文章引言非常重要。它的作用主要是用于网站首页展示和微博分享,它是为了吸引读者阅读文章而存在,它的目的是让读者能够仅通过这一小段话,就能迅速了解到这篇文章的大致内容。因此,引言实际就是文章的「内容概要」,而非文章的开头首段。 72 | 73 | 我们建议通常在写完整篇文章后,再结合内容大纲撰写引言。引言务必要讲清两个问题: 74 | 75 | 1. 是什么?(例如:这是一款什么应用?这篇文章是讲的什么?) 76 | 2. 为什么?(例如:这款应用之所以被推荐,是由于它有哪些特色/亮点?) 77 | 3. 给谁看?(例如:这篇文章主要针对 PHP 开发者,初学者水平。) 78 | 79 | 引言的语言文字务必要清晰、直观、简洁,通常字数需控制在 90 字左右。 80 | 81 | ## 一些常用名词的正确用法 82 | - App / 应用(错误:APP、软件、程序) 83 | - Android(错误:android、安卓) 84 | - iOS(错误:ios、IOS) 85 | - iPhone(错误:IPHONE、iphone) 86 | - App Store(中间有空格,错误:AppStore、app store) 87 | - WiFi(错误:wifi、Wifi、Wi-fi) 88 | - email (错误:E-mail、Email) 89 | - *账户*(错误:账号,账号,帐户) 90 | - [http://www.jianshu.com/p/baa85caede21] 91 | - 苹果台湾用「帳號」,大陆用「账户」 92 | - 谷歌用「帐户」,百度用「帐号」 93 | - 登录(错误:登陆) 94 | - P.S. (错误:PS、ps、Ps.) 95 | -------------------------------------------------------------------------------- /centos/README.md: -------------------------------------------------------------------------------- 1 | # CentOS 2 | > 此镜像从[Docker Hub](https://registry.hub.docker.com/_/centos/)同步并由 DaoCloud 提供中文文档支持,用来帮助国内开发者更方便的使用 Docker 镜像。 3 | 4 | > 该镜像源维护在 [Github](https://github.com/docker-library/official-images/blob/master/library/centos)。 5 | 6 | ## CentOS 7 | 8 | CentOS 是一个基于 RedHat Linux 提供的可自由使用源代码的企业级 Linux 发行版本。每个版本的 CentOS 都会获得十年的支持(通过安全更新方式)。 新版本的 CentOS 大约每两年发行一次,而每个版本的 CentOS 会定期(大概每六个月)更新一次,以便支持新的硬件。 这样,建立一个安全、低维护、稳定、高预测性、高重复性的 Linux 环境。 CentOS 是 Community Enterprise Operating System 的缩写。 9 | 10 | > 来自[百度百科](http://baike.baidu.com/view/26404.htm) 11 | 12 | ## 如何使用这个镜像? 13 | 14 | > 因所有镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。 15 | 16 | ### 持续构建 17 | 18 | 标签`daocloud.io/centos:latest`总是指向了最新的可用版本。 19 | 20 | CentOS 项目会对所有活跃操作系统版本进行定期的更新,这些镜像会每月更新或者针对紧急情况立刻更新。这些持续构建的镜像只会打上主版本标签,比如: 21 | 22 | ``` 23 | docker pull daocloud.io/centos:6 24 | 25 | docker pull daocloud.io/centos:7 26 | ``` 27 | 28 | ### 小版本标签 29 | 30 | 除此之外,还会根据操作系统厂商提供的不同版本提供包括小版本的镜像。请注意,这些小版本的镜像一旦推出就不会更新了。 如果您选择这些镜像,强烈推荐您在 Dockerfile 里包括`RUN yum -y update && yum clean all`, 否则有可能会有安全隐患。 这些镜像的使用方式如下: 31 | 32 | ``` 33 | docker pull daocloud.io/centos:5.11 34 | ``` 35 | 36 | ## 包管理 37 | 38 | 默认情况下,为了减小镜像的尺寸,在构建 CentOS 镜像时用了`yum`的`nodocs`选项。 如果您安装一个包后发现文件缺失,请在`/etc/yum.conf`中注释掉`tsflogs=nodocs`并重新安装您的包。 39 | 40 | ## systemd 整合 41 | 42 | 当前,因为 systemd 要求 CAP_SYS_ADMIN 权限,从而得到了读取主机 cgroup 的能力,CentOS7 中已经用 fakesystemd 代替了 systemd 来解决依赖问题。 如果您仍然希望使用 systemd,可用参考下面的 Dockerfile: 43 | 44 | ``` 45 | FROM daocloud.io/centos:7 46 | MAINTAINER "you" 47 | ENV container docker 48 | RUN yum -y swap -- remove fakesystemd -- install systemd systemd-libs 49 | RUN yum -y update; yum clean all; \ 50 | (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == 51 | systemd-tmpfiles-setup.service ] || rm -f $i; done); \ 52 | rm -f /lib/systemd/system/multi-user.target.wants/*;\ 53 | rm -f /etc/systemd/system/*.wants/*;\ 54 | rm -f /lib/systemd/system/local-fs.target.wants/*; \ 55 | rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ 56 | rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ 57 | rm -f /lib/systemd/system/basic.target.wants/*;\ 58 | rm -f /lib/systemd/system/anaconda.target.wants/*; 59 | VOLUME [ "/sys/fs/cgroup" ] 60 | CMD ["/usr/sbin/init"] 61 | ``` 62 | 63 | 上面这个`Dockerfile`首先删除了 fakesystemd 并且安装了 systemd。然后您就可以构建基础镜像了。 64 | 65 | ``` 66 | docker build --rm -t local/c7-systemd . 67 | ``` 68 | 69 | ### 一个包含 systemd 的应用容器示例 70 | 71 | 为了使用像上面那样包含 systemd 的容器,你需要创建一个类似下面的`Dockerfile`: 72 | 73 | ``` 74 | FROM local/c7-systemd 75 | RUN yum -y install httpd; yum clean all; systemctl enable httpd.service 76 | EXPOSE 80 77 | CMD ["/usr/sbin/init"] 78 | ``` 79 | 80 | 构建镜像: 81 | 82 | ``` 83 | docker build --rm -t local/c7-systemd-httpd 84 | ``` 85 | 86 | ### 运行一个包含 systemd 的应用容器 87 | 88 | 为了运行一个包含 systemd 的容器,您需要使用`--privileged`选项, 并且挂载主机的 cgroups 文件夹。 下面是运行包含 systemd 的 httpd 容器的示例命令: 89 | 90 | ``` 91 | docker run --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 local/c7-systemd-httpd 92 | ``` 93 | 94 | ## 支持的Docker版本 95 | 96 | 这个镜像在 Docker 1.7.0 上提供最佳的官方支持,对于其他老版本的 Docker(1.0 之后)也能提供基本的兼容。 97 | 98 | ## 该翻译的许可证 99 | 100 | 本作品采用[署名-非商业性使用-禁止演绎](http://creativecommons.org/licenses/by-nc-nd/4.0/)进行许可。 101 | -------------------------------------------------------------------------------- /php/README.md: -------------------------------------------------------------------------------- 1 | # PHP 2 | 3 | > 此镜像从 [Docker Hub](https://registry.hub.docker.com/_/php/) 同步并由 DaoCloud 提供中文文档支持,用来帮助国内开发者更方便的使用 Docker 镜像。 4 | 5 | > 该镜像源维护在 [Github](https://github.com/docker-library/official-images/blob/master/library/php)。 6 | 7 | 8 | ## 什么是 PHP? 9 | 10 | PHP(全称:PHP: Hypertext Preprocessor,中文名:「超文本预处理器」)是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,利于学习,使用广泛,主要适用于 Web 开发领域。PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创的语法。它可以比 CGI 或者 Perl 更快速地执行动态网页。用 PHP 做出的动态页面与其他的编程语言相比,PHP 是将程序嵌入到 HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成 HTML 标记的 CGI 要高许多;PHP 还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。 11 | 12 | > 来自[百度百科](http://baike.baidu.com/subview/99/5828265.htm) 13 | 14 | 15 | ## 如何使用这个镜像? 16 | 17 | > 因所有镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。 18 | 19 | ### 通过命令行 20 | 21 | 对于通过命令行界面 (CLI) 执行的 PHP 项目,您可以执行以下操作。 22 | 23 | #### 在您的 PHP 项目中创建一个`Dockerfile` 24 | 25 | ``` 26 | FROM daocloud.io/php:5.6-cli 27 | COPY . /usr/src/myapp 28 | WORKDIR /usr/src/myapp 29 | CMD [ "php", "./your-script.php" ] 30 | ``` 31 | 32 | 33 | 然后,通过执行命令来构建和运行 Docker 镜像: 34 | 35 | ``` 36 | docker build -t my-php-app . 37 | docker run -it --rm --name my-running-app my-php-app 38 | ``` 39 | 40 | #### 执行一个单独的 PHP 脚本 41 | 42 | 对于很多简单的单文件项目,您可能发现写一个完整的`Dockerfile`很不方便。在这种情况下,您可以通过使用 PHP Docker 镜像来直接的执行 PHP 脚本: 43 | 44 | ``` 45 | docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp daocloud.io/php:5.6-cli php your-script.php 46 | ``` 47 | 48 | ### 使用 Apache 49 | 50 | 更常见的是,您也许想和 Apache httpd 一起执行 PHP。方便的是,已经有了一个 PHP 容器版本打包了 Apache Web 服务器。 51 | 52 | #### 在您的 PHP 项目中创建一个`Dockerfile`: 53 | 54 | ``` 55 | FROM daocloud.io/php:5.6-apache 56 | COPY src/ /var/www/html/ 57 | ``` 58 | 59 | 在`src/`文件夹包含了您全部的 PHP 代码。然后,通过执行命令来构建和运行 Docker 镜像: 60 | 61 | ``` 62 | docker build -t my-php-app . 63 | docker run -it --rm --name my-running-app my-php-app 64 | ``` 65 | 66 | 我们建议您添加自定义的`php.ini`配置文件。通过添加一行到`Dockerfile`将它`COPY`到`/user/local/etc/php`中并执行相同的命令来构建和运行: 67 | 68 | ``` 69 | FROM daocloud.io/php:5.6-apache 70 | COPY config/php.ini /usr/local/etc/php 71 | COPY src/ /var/www/html/ 72 | ``` 73 | 74 | 在`src/`文件夹包含了您全部的 PHP 代码,`config/`包含了您的`php.ini`文件。 75 | 76 | #### 如何安装更多的 PHP 扩展 77 | 78 | 我们提供了两款名为`docker-php-ext-configure`和`docker-php-ext-install`安装 PHP 扩展。 79 | 80 | 比如,如果您想有一个带`icov`,`mcrypt`和`gd`扩展的 PHP-FPM 镜像,您可以通过继承您喜欢的基础镜像,并编写您自己的`Dockerfile`: 81 | 82 | ``` 83 | FROM daocloud.io/php:5.6-fpm 84 | # Install modules 85 | RUN apt-get update && apt-get install -y \ 86 | libfreetype6-dev \ 87 | libjpeg62-turbo-dev \ 88 | libmcrypt-dev \ 89 | libpng12-dev \ 90 | && docker-php-ext-install iconv mcrypt \ 91 | && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ 92 | && docker-php-ext-install gd 93 | CMD ["php-fpm"] 94 | ``` 95 | 96 | 请记住,您必须手动安装扩展所需要的依赖。如果一个扩展需要自定义的配置参数,您可以像这个例子一样使用`docker-php-ext-configure`脚本。 97 | 98 | #### 不使用`Dockerfile` 99 | 100 | 如果您不想在您的项目中引入`Dockerfile`,您可以执行以下操作: 101 | 102 | ``` 103 | docker run -it --rm --name my-apache-php-app -v "$PWD":/var/www/html daocloud.io/php:5.6-apache 104 | ``` 105 | 106 | ## 支持的Docker版本 107 | 108 | 这个镜像在 Docker 1.7.0 上提供最佳的官方支持,对于其他老版本的 Docker(1.0 之后)也能提供基本的兼容。 109 | 110 | ## 该翻译的许可证 111 | 112 | 本作品采用[署名-非商业性使用-禁止演绎](http://creativecommons.org/licenses/by-nc-nd/4.0/)进行许可。 113 | -------------------------------------------------------------------------------- /mongo/README.md: -------------------------------------------------------------------------------- 1 | # MongoDB 2 | 3 | > 此镜像从 [Docker Hub](https://hub.docker.com/_/mongo/) 同步并由 DaoCloud 提供中文文档支持,用来帮助国内开发者更方便的使用 Docker 镜像。 4 | > 5 | > 该镜像源维护在 [Github](https://github.com/docker-library/mongo)。 6 | 7 | ## 什么是 MongoDB? 8 | 9 | MongoDB (源自 "humogous")是一个面向文档的跨平台数据库。作为一个 NoSQL 数据库,MongoDB 避开了传统关系型数据库结构,转而使用动态类似 JSON 的 BSON 格式,使其能轻松地将多个数据写在同一类型中。MongoDB 以 AGPL 和 Apache License 联合协议发布。 10 | 11 | MongoDB 最早由 10gen 软件公司(现在为 MongoDB 公司)于 2007 年 10 月时作为 PaaS 服务的一个组件开始开发,而后在 2009 年该公司转型为开源模式并与 10gen 公司提供商业技术支持。之后 MongoDB 就被一些大型网站和服务商作为后端软件使用,包括 Craigslist、eBay、Foursquare、SourceForge、Viacom 和纽约时报等等。MongoDB 是当今最流行的 NoSQL 数据库软件。 12 | 13 | > [wikipedia.org/wiki/MongoDB](https://en.wikipedia.org/wiki/MongoDB) 14 | 15 | ![logo](https://raw.githubusercontent.com/docker-library/docs/master/mongo/logo.png) 16 | 17 | ## 如何使用本镜像 18 | 19 | > 因所有镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。 20 | 21 | ### 启动一个 mongo 实例 22 | 23 | ```console 24 | $ docker run --name some-mongo -d daocloud.io/mongo 25 | ``` 26 | 27 | 由于该镜像的 Dockerfile 中包含了 `EXPOSE 27017`(mongo 默认端口),所以可以通过 `link` 两个容器来访问它(就像下面的示例)。 28 | 29 | ### 在应用中连接该实例 30 | 31 | ```console 32 | $ docker run --name some-app --link some-mongo:mongo -d application-that-uses-mongo 33 | ``` 34 | 35 | ### 使用 `mongo` 命令 36 | 37 | ```console 38 | $ docker run -it --link some-mongo:mongo --rm daocloud.io/mongo sh -c 'exec mongo "$MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT/test"' 39 | ``` 40 | 41 | ### 相关配置 42 | 43 | 你可以查阅[官方文档](http://docs.mongodb.org/manual/)来了解如何配置 MongoDB 进行复制或分片操作。 44 | 45 | 你也可以简单地设置 `--storageEngine` 参数来指定你需要的储存引擎(比如 MongoDB 3.0 中的 WiredTiger)。如果需要从旧版本升级的话,请确保你已熟悉此[文档](http://docs.mongodb.org/manual/release-notes/3.0-upgrade/#change-storage-engine-to-wiredtiger)。 46 | 47 | ```console 48 | $ docker run --name some-mongo -d daocloud.io/mongo --storageEngine wiredTiger 49 | ``` 50 | 51 | ### 储存数据的位置 52 | 53 | 摘要:下面介绍了多种储存 Docker 容器中数据的方式,我们鼓励 `mongo` 镜像用户熟悉下面各项技术: 54 | 55 | - 使用 Docker 自带的 [Volume 机制](https://docs.docker.com/userguide/dockervolumes/#adding-a-data-volume)将数据库文件写入宿主机的磁盘。这是默认的方式,对用户来讲简单且透明。缺点是宿主机上的工具或应用可能难以定位这些文件。 56 | - 在宿主机上创建一个数据目录(在容器外部)并把他[挂载至容器内部](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume)。此时数据库文件被放置在宿主机上一个已知的目录里,那样容器外部的应用和工具就可以方便地访问这些文件。缺点是用户需要确保这些目录存在,且宿主机上正确配置了权限设置。 57 | 58 | **警告**:由于 MongoDB 使用了内存映射机制,因此当你使用 vboxsf 时会出现错误,这是一个已知的 bug ([vbox bug](https://www.virtualbox.org/ticket/819))。 59 | 60 | 阅读 Docker 文档能快速了解不同的储存选项,并且有很多博客或论坛讨论并给出了这方面的建议。我们会在下面简单地演示一下: 61 | 62 | 1. 在宿主机上创建一个数据目录,例:`/my/own/datadir`。 63 | 2. 使用下面的命令启动 `mongo` 容器: 64 | 65 | ```console 66 | $ docker run --name some-mongo -v /my/own/datadir:/data/db -d daocloud.io/mongo:tag 67 | ``` 68 | 69 | 我们通过 `-v /my/own/datadir:/data/db` 参数从宿主机挂载 `/my/own/datadir` 目录至容器内作为 `/data/db` 目录,那样 MongoDB 就会默认将数据文件写入这个目录中。 70 | 71 | 注意 SELinux 用户可能会遇到一个问题,目前的解决方法是为你的数据目录指定相关的 SELinux 策略配置,那样容器才可以访问它: 72 | 73 | ```console 74 | $ chcon -Rt svirt_sandbox_file_t /my/own/datadir 75 | ``` 76 | 77 | ## 协议 78 | 79 | 你可以查阅 [license information](https://github.com/mongodb/mongo/blob/7c3cfac300cfcca4f73f1c3b18457f0f8fae3f69/README#L71) 了解本镜像中软件的使用协议。 80 | 81 | ## 支持的 Docker 版本 82 | 83 | 本镜像正式支持 Docker 1.8.1 版本。 84 | 85 | 我们最低为 Docker 1.0 版本提供力所能及的支持。 86 | 87 | ### 文档 88 | 89 | 你可以从 GitHub 的 [`docker-library/docs`](https://github.com/docker-library/docs) 库中的 [`mongo/`](https://github.com/docker-library/docs/tree/master/mongo)目录找到本镜像的文档。在发起一个 pull request 前请确保你已熟悉仓库中 [`README.md`](https://github.com/docker-library/docs/blob/master/README.md) 文档中的相关说明。 90 | 91 | ### 提问 92 | 93 | 如果你对本镜像有任何问题的话可以在 [GitHub issue](https://github.com/docker-library/mongo/issues) 上联系我们。 94 | 95 | 你也可以使用 IRC 通过 [Freenode](https://freenode.net) 上的 `#docker-library` 频道联系许多官方镜像的维护者。 96 | 97 | ### 贡献 98 | 99 | 我们总是乐意接受你的 pull request,不管问题大小,我们会尽可能快速地处理它们。 100 | 101 | 对于热情的贡献者,在编码之前,我们建议你通过 [GitHub issue](https://github.com/docker-library/mysql/issues) 讨论你的计划。这样其他贡献者会协助你优化你的设计,并避免你做了别人重复的工作。 102 | 103 | ## 该翻译的许可证 104 | 105 | 本作品采用[署名-非商业性使用-禁止演绎](http://creativecommons.org/licenses/by-nc-nd/4.0/)进行许可。 106 | 107 | -------------------------------------------------------------------------------- /mysql/README.md: -------------------------------------------------------------------------------- 1 | # MySQL 2 | 3 | > 此镜像从 [Docker Hub](https://hub.docker.com/_/mysql/) 同步并由 DaoCloud 提供中文文档支持,用来帮助国内开发者更方便的使用 Docker 镜像。 4 | > 5 | > 该镜像源维护在 [Github](https://github.com/docker-library/mysql)。 6 | 7 | MySQL 由于其性能高、成本低、可靠性好,已经成为全球最流行的开源数据库软件,被广泛地被应用在 Internet 上的中小型网站中。随着 MySQL 的不断成熟,它也逐渐出现在更多大规模网站和应用上,比如 Facebook、Twitter 和 Yahoo! 等站点。 8 | 9 | ## 如何使用本镜像 10 | 11 | > 因所有镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。 12 | 13 | ### 启动一个 `mysql` 服务实例 14 | 15 | 启动一个 MySQL 实例非常简单: 16 | 17 | ```console 18 | $ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d daocloud.io/mysql:tag 19 | ``` 20 | 21 | 在上述命令中,`some-mysql` 指定了该容器的名字,`my-secret-pw` 指定了 root 用户的密码,`tag` 参数指定了你想要的 MySQL 版本。 22 | 23 | ### 从另外一个 Docker 容器连接 MySQL 服务 24 | 25 | 本镜像会暴露 MySQL 的标准端口 3306,你可以使用 `link` 功能来让其他应用容器能够访问 MySQL 容器,就像下面这样: 26 | 27 | ```console 28 | $ docker run --name some-app --link some-mysql:mysql -d app-that-uses-mysql 29 | ``` 30 | 31 | ### 使用 MySQL 命令行工具连接 MySQL 32 | 33 | 下面的命令启动了另一个 MySQL 容器并使用 MySQL 命令行工具访问你之前的 MySQL 服务,之后你就能向你的数据库执行 SQL 语句了: 34 | 35 | ```console 36 | $ docker run -it --link some-mysql:mysql --rm daocloud.io/mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"' 37 | ``` 38 | 39 | 在上述命令中 `some-mysql` 就是你原来 MySQL 服务容器的名字。 40 | 41 | 想要了解更多有关 MySQL 命令行工具的信息可以参考 [MySQL 官方文档](http://dev.mysql.com/doc/en/mysql.html)。 42 | 43 | ### 查看 MySQL 日志 44 | 45 | `docker exec` 命令能让你在一个容器中额外地运行新命令。比如你可以执行下面的命令来获得一个 bash shell: 46 | 47 | ```console 48 | $ docker exec -it some-mysql bash 49 | ``` 50 | 51 | 你可以通过查看 Docker 容器的日志获得 MySQL 服务的日志: 52 | 53 | ```console 54 | $ docker logs some-mysql 55 | ``` 56 | 57 | ### 使用自定义 MySQL 配置文件 58 | 59 | 当 MySQL 服务启动时会以 `/etc/mysql/my.cnf` 为配置文件,本文件会导入 `/etc/mysql/conf.d` 目录中所有以 `.cnf` 为后缀的文件。这些文件会拓展或覆盖 `/etc/mysql/my.cnf` 文件中的配置。因此你可以创建你自己需要的配置文件并挂载至 MySQL 容器中的 `/etc/mysql/conf.d` 目录。 60 | 61 | 假设 `/my/custom/config-file.cnf` 是你自定义的配置文件,你可以像这样启动一个 MySQL 容器(注意这里直接挂载了配置文件的目录): 62 | 63 | ```console 64 | $ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d daocloud.io/mysql:tag 65 | ``` 66 | 67 | 这会启动一个名为 `some-mysql` 且同时加载了 `/etc/mysql/my.cnf` 和 `/etc/mysql/conf.d/config-file.cnf` 这两个配置文件的新容器,注意这时以后者的配置优先。 68 | 69 | SELinux 用户在这里可能会遇到一个问题,目前的解决方法是为你的配置文件指定相关的 SELinux 策略配置,那样容器才可以访问它: 70 | 71 | ```console 72 | $ chcon -Rt svirt_sandbox_file_t /my/custom 73 | ``` 74 | 75 | ### 环境变量 76 | 77 | 当你启动 `mysql` 镜像时,你可以通过 `docker run` 命令传递几个特定的环境变量来调整相关设置,特别注意当容器启动时,所有环境变量都不会影响一个容器中已存在的数据库内容。 78 | 79 | #### `MYSQL_ROOT_PASSWORD` 80 | 81 | 本变量必填,它指定了 MySQL `root` 的用户的密码。在刚才的例子中,该密码被设置为 `my-secret-pw`。 82 | 83 | #### `MYSQL_DATABASE` 84 | 85 | 本变量可选,通过该变量当 MySQL 启动时会创建一个由你指定的数据库。如果你另外又提供了一对用户名和密码(见下方),那么他将会被授予本数据库的所有权限。 86 | 87 | #### `MYSQL_USER`, `MYSQL_PASSWORD` 88 | 89 | 这两个变量可选,同时使用的话会创建一个新用户并设置相应的密码,该用户会被授予由 `MYSQL_DATABASE` 变量指定的数据库的所有权限(见上方)。只有当同时提供了这两个变量时该用户才会被创建。 90 | 91 | 特别注意没有必要使用这个机制来创建 root 用户,root 用户的密码会被设置为 `MYSQL_ROOT_PASSWORD` 变量的值。 92 | 93 | #### `MYSQL_ALLOW_EMPTY_PASSWORD` 94 | 95 | 本变量可选,当其被设置为 `yes` 时将会允许当前容器中的 root 用户能够使用空密码。*注意*:绝对不建议将该变量设置为 `yes`,除非你知道自己在做什么。如果这么做的话你的 MySQL 服务将会失去保护,所有人都可以以超级用户的身份访问该 MySQL 服务。 96 | 97 | ## 重要说明 98 | 99 | ### 储存数据的位置 100 | 101 | 摘要:下面介绍了多种储存 Docker 容器中数据的方式,我们鼓励 `mysql` 镜像用户熟悉下面各项技术: 102 | 103 | - 使用 Docker 自带的 [Volume 机制](https://docs.docker.com/userguide/dockervolumes/#adding-a-data-volume)将数据库文件写入宿主机的磁盘。这是默认的方式,对用户来讲简单且透明。缺点是宿主机上的工具或应用可能难以定位这些文件。 104 | - 在宿主机上创建一个数据目录(在容器外部)并把他[挂载至容器内部](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume)。此时数据库文件被放置在宿主机上一个已知的目录里,那样容器外部的应用和工具就可以方便地访问这些文件。缺点是用户需要确保这些目录存在,且宿主机上正确配置了权限设置。 105 | 106 | 阅读 Docker 文档能快速了解不同的储存选项,并且有很多博客或论坛讨论并给出了这方面的建议。我们会在下面简单地演示一下: 107 | 108 | 1. 在宿主机上创建一个数据目录,例:`/my/own/datadir`。 109 | 2. 使用下面的命令启动 `mysql` 容器: 110 | 111 | ```console 112 | $ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d daocloud.io/mysql:tag 113 | ``` 114 | 115 | 我们通过 `-v /my/own/datadir:/var/lib/mysql` 参数从宿主机挂载 `/my/own/datadir` 目录至容器内作为 `/var/lib/mysql` 目录,那样 MySQL 就会默认将数据文件写入这个目录中。 116 | 117 | 注意 SELinux 用户可能会遇到一个问题,目前的解决方法是为你的数据目录指定相关的 SELinux 策略配置,那样容器才可以访问它: 118 | 119 | ```console 120 | $ chcon -Rt svirt_sandbox_file_t /my/own/datadir 121 | ``` 122 | 123 | ### MySQL 初始化完成前无连接 124 | 125 | 如果容器启动时没有任何数据库被初始化,那么就会创建一个默认的数据库。这是一个预料中的行为,它意味着除非初始化完成,否则 MySQL 不会接受任何连接。当你使用 `docker-compose` 等自动化工具同时启动一系列容器时,可能会因为这个特性而造成一些问题。 126 | 127 | ### 使用已存在的数据库 128 | 129 | 如果从一个已存在数据库文件的目录上启动一个 `mysql` 容器的话(特别是一个 `mysql` 子目录),那么 `$MYSQL_ROOT_PASSWORD` 变量应该在启动命令中略去;即使设置了也会被忽略,已存在的数据库不会以任何方式被改变。 130 | 131 | ### 文档 132 | 133 | 你可以从 GitHub 的 [`docker-library/docs`](https://github.com/docker-library/docs) 库中的 [`mysql/`](https://github.com/docker-library/docs/tree/master/mysql)目录找到本镜像的文档。在发起一个 pull request 前请确保你已熟悉仓库中 [`README.md`](https://github.com/docker-library/docs/blob/master/README.md) 文档中的相关说明。 134 | 135 | ### 提问 136 | 137 | 如果你对本镜像有任何问题的话可以在 [GitHub issue](https://github.com/docker-library/mysql/issues) 上联系我们。 138 | 139 | 你也可以使用 IRC 通过 [Freenode](https://freenode.net) 上的 `#docker-library` 频道联系许多官方镜像的维护者。 140 | 141 | ### 贡献 142 | 143 | 我们总是乐意接受你的 pull request,不管问题大小,我们会尽可能快速地处理它们。 144 | 145 | 对于热情的贡献者,在编码之前,我们建议你通过 [GitHub issue](https://github.com/docker-library/mysql/issues) 讨论你的计划。这样其他贡献者会协助你优化你的设计,并避免你做了别人重复的工作。 146 | 147 | ## 该翻译的许可证 148 | 149 | 本作品采用[署名-非商业性使用-禁止演绎](http://creativecommons.org/licenses/by-nc-nd/4.0/)进行许可。 --------------------------------------------------------------------------------