mirror of
https://github.com/yeasy/docker_practice.git
synced 2024-11-24 07:23:38 +00:00
Replace http with https
This commit is contained in:
parent
fbf5a286ab
commit
994f6ac101
@ -1,4 +1,4 @@
|
|||||||
# EditorConfig is awesome: http://EditorConfig.org
|
# EditorConfig is awesome: https://EditorConfig.org
|
||||||
|
|
||||||
root = true
|
root = true
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ v1.0.0
|
|||||||
|
|
||||||
*说明:本书自 0.9.0 版本起基于最新的 Docker CE v18.X 特性进行讲解。Docker 旧版本(1.13-)使用,请参考 [docker-legacy](https://github.com/yeasy/docker_practice/tree/docker-legacy) 分支。*
|
*说明:本书自 0.9.0 版本起基于最新的 Docker CE v18.X 特性进行讲解。Docker 旧版本(1.13-)使用,请参考 [docker-legacy](https://github.com/yeasy/docker_practice/tree/docker-legacy) 分支。*
|
||||||
|
|
||||||
[Docker](http://www.docker.com) 是个划时代的开源项目,它彻底释放了计算虚拟化的威力,极大提高了应用的维护效率,降低了云计算应用开发的成本!使用 Docker,可以让应用的部署、测试和分发都变得前所未有的高效和轻松!
|
[Docker](https://www.docker.com) 是个划时代的开源项目,它彻底释放了计算虚拟化的威力,极大提高了应用的维护效率,降低了云计算应用开发的成本!使用 Docker,可以让应用的部署、测试和分发都变得前所未有的高效和轻松!
|
||||||
|
|
||||||
无论是应用开发者、运维人员、还是其他信息技术从业人员,都有必要认识和掌握 Docker,节约有限的生命。
|
无论是应用开发者、运维人员、还是其他信息技术从业人员,都有必要认识和掌握 Docker,节约有限的生命。
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ Docker 自身仍在快速发展中,生态环境也在蓬勃成长。建议初
|
|||||||
## 进阶学习
|
## 进阶学习
|
||||||
![](_images/docker_primer3.png)
|
![](_images/docker_primer3.png)
|
||||||
|
|
||||||
《[Docker 技术入门与实战](http://item.jd.com/12453318.html)》第三版已经面世,介绍最新的容器技术栈,欢迎大家阅读使用并反馈建议。
|
《[Docker 技术入门与实战](https://item.jd.com/12453318.html)》第三版已经面世,介绍最新的容器技术栈,欢迎大家阅读使用并反馈建议。
|
||||||
|
|
||||||
* [京东图书](https://item.jd.com/12453318.html)
|
* [京东图书](https://item.jd.com/12453318.html)
|
||||||
* [China-Pub](http://product.china-pub.com/8052127)
|
* [China-Pub](http://product.china-pub.com/8052127)
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
当 Docker 启动时,会自动在主机上创建一个 `docker0` 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。
|
当 Docker 启动时,会自动在主机上创建一个 `docker0` 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。
|
||||||
|
|
||||||
同时,Docker 随机分配一个本地未占用的私有网段(在 [RFC1918](http://tools.ietf.org/html/rfc1918) 中定义)中的一个地址给 `docker0` 接口。比如典型的 `172.17.42.1`,掩码为 `255.255.0.0`。此后启动的容器内的网口也会自动分配一个同一网段(`172.17.0.0/16`)的地址。
|
同时,Docker 随机分配一个本地未占用的私有网段(在 [RFC1918](https://tools.ietf.org/html/rfc1918) 中定义)中的一个地址给 `docker0` 接口。比如典型的 `172.17.42.1`,掩码为 `255.255.0.0`。此后启动的容器内的网口也会自动分配一个同一网段(`172.17.0.0/16`)的地址。
|
||||||
|
|
||||||
当创建一个 Docker 容器的时候,同时会创建了一对 `veth pair` 接口(当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包)。这对接口一端在容器内,即 `eth0`;另一端在本地并被挂载到 `docker0` 网桥,名称以 `veth` 开头(例如 `vethAQI2QT`)。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。Docker 就创建了在主机和所有容器之间一个虚拟共享网络。
|
当创建一个 Docker 容器的时候,同时会创建了一对 `veth pair` 接口(当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包)。这对接口一端在容器内,即 `eth0`;另一端在本地并被挂载到 `docker0` 网桥,名称以 `veth` 开头(例如 `vethAQI2QT`)。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。Docker 就创建了在主机和所有容器之间一个虚拟共享网络。
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
$ docker run --name some-redis -d redis
|
$ docker run --name some-redis -d redis
|
||||||
```
|
```
|
||||||
|
|
||||||
另外还可以启用 [持久存储](http://redis.io/topics/persistence)。
|
另外还可以启用 [持久存储](https://redis.io/topics/persistence)。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker run --name some-redis -d redis redis-server --appendonly yes
|
$ docker run --name some-redis -d redis redis-server --appendonly yes
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
Docker Registry 公开服务是开放给用户使用、允许用户管理镜像的 Registry 服务。一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。
|
Docker Registry 公开服务是开放给用户使用、允许用户管理镜像的 Registry 服务。一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。
|
||||||
|
|
||||||
最常使用的 Registry 公开服务是官方的 [Docker Hub](https://hub.docker.com/),这也是默认的 Registry,并拥有大量的高质量的官方镜像。除此以外,还有 [CoreOS](https://coreos.com/) 的 [Quay.io](https://quay.io/repository/),CoreOS 相关的镜像存储在这里;Google 的 [Google Container Registry](https://cloud.google.com/container-registry/),[Kubernetes](http://kubernetes.io/) 的镜像使用的就是这个服务。
|
最常使用的 Registry 公开服务是官方的 [Docker Hub](https://hub.docker.com/),这也是默认的 Registry,并拥有大量的高质量的官方镜像。除此以外,还有 [CoreOS](https://coreos.com/) 的 [Quay.io](https://quay.io/repository/),CoreOS 相关的镜像存储在这里;Google 的 [Google Container Registry](https://cloud.google.com/container-registry/),[Kubernetes](https://kubernetes.io/) 的镜像使用的就是这个服务。
|
||||||
|
|
||||||
由于某些原因,在国内访问这些服务可能会比较慢。国内的一些云服务商提供了针对 Docker Hub 的镜像服务(`Registry Mirror`),这些镜像服务被称为**加速器**。常见的有 [阿里云加速器](https://cr.console.aliyun.com/#/accelerator)、[DaoCloud 加速器](https://www.daocloud.io/mirror#accelerator-doc) 等。使用加速器会直接从国内的地址下载 Docker Hub 的镜像,比直接从 Docker Hub 下载速度会提高很多。在 [安装 Docker](../install/mirror.md) 一节中有详细的配置方法。
|
由于某些原因,在国内访问这些服务可能会比较慢。国内的一些云服务商提供了针对 Docker Hub 的镜像服务(`Registry Mirror`),这些镜像服务被称为**加速器**。常见的有 [阿里云加速器](https://cr.console.aliyun.com/#/accelerator)、[DaoCloud 加速器](https://www.daocloud.io/mirror#accelerator-doc) 等。使用加速器会直接从国内的地址下载 Docker Hub 的镜像,比直接从 Docker Hub 下载速度会提高很多。在 [安装 Docker](../install/mirror.md) 一节中有详细的配置方法。
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ $ apk --update add --no-cache <package>
|
|||||||
|
|
||||||
### 相关资源
|
### 相关资源
|
||||||
|
|
||||||
* `Alpine` 官网:http://alpinelinux.org/
|
* `Alpine` 官网:https://www.alpinelinux.org/
|
||||||
* `Alpine` 官方仓库:https://github.com/alpinelinux
|
* `Alpine` 官方仓库:https://github.com/alpinelinux
|
||||||
* `Alpine` 官方镜像:https://hub.docker.com/_/alpine/
|
* `Alpine` 官方镜像:https://hub.docker.com/_/alpine/
|
||||||
* `Alpine` 官方镜像仓库:https://github.com/gliderlabs/docker-alpine
|
* `Alpine` 官方镜像仓库:https://github.com/gliderlabs/docker-alpine
|
||||||
|
@ -223,7 +223,7 @@ environment:
|
|||||||
- SESSION_SECRET
|
- SESSION_SECRET
|
||||||
```
|
```
|
||||||
|
|
||||||
如果变量名称或者值中用到 `true|false,yes|no` 等表达 [布尔](http://yaml.org/type/bool.html) 含义的词汇,最好放到引号里,避免 YAML 自动解析某些内容为对应的布尔语义。这些特定词汇,包括
|
如果变量名称或者值中用到 `true|false,yes|no` 等表达 [布尔](https://yaml.org/type/bool.html) 含义的词汇,最好放到引号里,避免 YAML 自动解析某些内容为对应的布尔语义。这些特定词汇,包括
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF
|
y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
`etcd` 目前在 [github.com/coreos/etcd](https://github.com/coreos/etcd) 进行维护。
|
`etcd` 目前在 [github.com/coreos/etcd](https://github.com/coreos/etcd) 进行维护。
|
||||||
|
|
||||||
受到 [Apache ZooKeeper](http://zookeeper.apache.org/) 项目和 [doozer](https://github.com/ha/doozerd) 项目的启发,`etcd` 在设计的时候重点考虑了下面四个要素:
|
受到 [Apache ZooKeeper](https://zookeeper.apache.org/) 项目和 [doozer](https://github.com/ha/doozerd) 项目的启发,`etcd` 在设计的时候重点考虑了下面四个要素:
|
||||||
|
|
||||||
* 简单:具有定义良好、面向用户的 `API` ([gRPC](https://github.com/grpc/grpc))
|
* 简单:具有定义良好、面向用户的 `API` ([gRPC](https://github.com/grpc/grpc))
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Docker 镜像是怎么实现增量的修改和维护的?
|
Docker 镜像是怎么实现增量的修改和维护的?
|
||||||
|
|
||||||
每个镜像都由很多层次构成,Docker 使用 [Union FS](http://en.wikipedia.org/wiki/UnionFS) 将这些不同的层结合到一个镜像中去。
|
每个镜像都由很多层次构成,Docker 使用 [Union FS](https://en.wikipedia.org/wiki/UnionFS) 将这些不同的层结合到一个镜像中去。
|
||||||
|
|
||||||
通常 Union FS 有两个用途, 一方面可以实现不借助 LVM、RAID 将多个 disk 挂到同一个目录下,另一个更常用的就是将一个只读的分支和一个可写的分支联合在一起,Live CD 正是基于此方法可以允许在镜像不变的基础上允许用户在其上进行一些写操作。
|
通常 Union FS 有两个用途, 一方面可以实现不借助 LVM、RAID 将多个 disk 挂到同一个目录下,另一个更常用的就是将一个只读的分支和一个可写的分支联合在一起,Live CD 正是基于此方法可以允许在镜像不变的基础上允许用户在其上进行一些写操作。
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
#### 使用 Homebrew 安装
|
#### 使用 Homebrew 安装
|
||||||
|
|
||||||
[Homebrew](http://brew.sh/) 的 [Cask](https://caskroom.github.io/) 已经支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装:
|
[Homebrew](https://brew.sh/) 的 [Cask](https://caskroom.github.io/) 已经支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ brew cask install docker
|
$ brew cask install docker
|
||||||
|
@ -3,7 +3,7 @@ Mesos 最初由 UC Berkeley 的 AMP 实验室于 2009 年发起,遵循 Apache
|
|||||||
|
|
||||||
如果把数据中心中的集群资源看做一台服务器,那么 Mesos 要做的事情,其实就是今天操作系统内核的职责:抽象资源 + 调度任务。Mesos 项目是 Mesosphere 公司 Datacenter Operating System (DCOS) 产品的核心部件。
|
如果把数据中心中的集群资源看做一台服务器,那么 Mesos 要做的事情,其实就是今天操作系统内核的职责:抽象资源 + 调度任务。Mesos 项目是 Mesosphere 公司 Datacenter Operating System (DCOS) 产品的核心部件。
|
||||||
|
|
||||||
Mesos 项目主要由 C++ 语言编写,项目官方地址为 [http://mesos.apache.org](http://mesos.apache.org),代码仍在快速演化中,已经发布了正式版 1.0.0 版本。
|
Mesos 项目主要由 C++ 语言编写,项目官方地址为 [https://mesos.apache.org](https://mesos.apache.org),代码仍在快速演化中,已经发布了正式版 1.0.0 版本。
|
||||||
|
|
||||||
Mesos 拥有许多引人注目的特性,包括:
|
Mesos 拥有许多引人注目的特性,包括:
|
||||||
* 支持数万个节点的大规模场景(Apple、Twitter、eBay 等公司实践);
|
* 支持数万个节点的大规模场景(Apple、Twitter、eBay 等公司实践);
|
||||||
|
@ -11,5 +11,5 @@ Docker 容器和 LXC 容器很相似,所提供的安全特性也差不多。
|
|||||||
|
|
||||||
内核命名空间从 2.6.15 版本(2008 年 7 月发布)之后被引入,数年间,这些机制的可靠性在诸多大型生产系统中被实践验证。
|
内核命名空间从 2.6.15 版本(2008 年 7 月发布)之后被引入,数年间,这些机制的可靠性在诸多大型生产系统中被实践验证。
|
||||||
|
|
||||||
实际上,命名空间的想法和设计提出的时间要更早,最初是为了在内核中引入一种机制来实现 [OpenVZ](http://en.wikipedia.org/wiki/OpenVZ) 的特性。
|
实际上,命名空间的想法和设计提出的时间要更早,最初是为了在内核中引入一种机制来实现 [OpenVZ](https://en.wikipedia.org/wiki/OpenVZ) 的特性。
|
||||||
而 OpenVZ 项目早在 2005 年就发布了,其设计和实现都已经十分成熟。
|
而 OpenVZ 项目早在 2005 年就发布了,其设计和实现都已经十分成熟。
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
## 控制组
|
## 控制组
|
||||||
|
|
||||||
控制组([cgroups](http://en.wikipedia.org/wiki/Cgroups))是 Linux 内核的一个特性,主要用来对共享资源进行隔离、限制、审计等。只有能控制分配到容器的资源,才能避免当多个容器同时运行时的对系统资源的竞争。
|
控制组([cgroups](https://en.wikipedia.org/wiki/Cgroups))是 Linux 内核的一个特性,主要用来对共享资源进行隔离、限制、审计等。只有能控制分配到容器的资源,才能避免当多个容器同时运行时的对系统资源的竞争。
|
||||||
|
|
||||||
控制组技术最早是由 Google 的程序员在 2006 年提出,Linux 内核自 2.6.24 开始支持。
|
控制组技术最早是由 Google 的程序员在 2006 年提出,Linux 内核自 2.6.24 开始支持。
|
||||||
|
|
||||||
|
@ -19,4 +19,4 @@ UTS("UNIX Time-sharing System") 命名空间允许每个容器拥有独立的 ho
|
|||||||
### user 命名空间
|
### user 命名空间
|
||||||
每个容器可以有不同的用户和组 id, 也就是说可以在容器内用容器内部的用户执行程序而非主机上的用户。
|
每个容器可以有不同的用户和组 id, 也就是说可以在容器内用容器内部的用户执行程序而非主机上的用户。
|
||||||
|
|
||||||
*注:更多关于 Linux 上命名空间的信息,请阅读 [这篇文章](http://blog.scottlowe.org/2013/09/04/introducing-linux-network-namespaces/)。
|
*注:更多关于 Linux 上命名空间的信息,请阅读 [这篇文章](https://blog.scottlowe.org/2013/09/04/introducing-linux-network-namespaces/)。
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
## 联合文件系统
|
## 联合文件系统
|
||||||
|
|
||||||
联合文件系统([UnionFS](http://en.wikipedia.org/wiki/UnionFS))是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。
|
联合文件系统([UnionFS](https://en.wikipedia.org/wiki/UnionFS))是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。
|
||||||
|
|
||||||
联合文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
|
联合文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user