Merge pull request #246 from yeasy/dev

Update content
pull/253/head
康怀帅 2017-11-24 02:46:41 -06:00 committed by GitHub
commit 4d4895435a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 90 additions and 50 deletions

View File

@ -1,6 +1,6 @@
## 如何贡献项目
* 在 GitHub 上 `fork` 到自己的仓库,如 `docker_user/docker_practice`,然后 `clone` 到本地,并设置用户信息。
* 在 [GitHub](https://github.com/yeasy/docker_practice/fork)`fork` 到自己的仓库,如 `docker_user/docker_practice`,然后 `clone` 到本地,并设置用户信息。
```bash
$ git clone git@github.com:docker_user/docker_practice.git
@ -17,9 +17,10 @@
$ git push
```
* 在 GitHub 网站上提交 pull request。
* 在 [GitHub](https://github.com/yeasy/docker_practice/pulls) 上提交 Pull request。
* 定期使用项目仓库内容更新自己仓库内容。
```bash
$ git remote add upstream https://github.com/yeasy/docker_practice
$ git fetch upstream

View File

@ -19,12 +19,11 @@
<!--如果你的 Docker 版本低于 17.0 请尽可能升级到该版本-->
<!--if Docker version under 17.0, please upgrade Docker to 17.09-->
* [x] 17.11 edge
* [ ] 17.09 stable
* [x] 17.11 Edge
* [ ] 17.09 Stable
* [ ] 1.13.0
* [ ] Before 1.13.0
### Problem Description
<!--描述你的问题,请贴出操作步骤,终端报错日志-->
<!--describe problem with detailed steps and logs-->

View File

@ -29,6 +29,8 @@ $ docker-compose pull
$ docker-compose up
```
关于离线阅读的详细说明请阅读 [Wiki](https://github.com/yeasy/docker_practice/wiki/%E7%A6%BB%E7%BA%BF%E9%98%85%E8%AF%BB%E5%8A%9F%E8%83%BD%E8%AF%A6%E8%A7%A3)。
Docker 自身仍在快速发展中,生态环境也在蓬勃成长。建议初学者使用 Linux 上最新版的 Docker (v17.11) 进行学习实践。欢迎参与维护项目:[如何贡献](.github/CONTRIBUTING.md)。
* [修订记录](revision.md)

View File

@ -1,23 +1,29 @@
# 资源链接
## 官方网站
* Docker 官方主页: https://www.docker.com
* Docker 官方博客: https://blog.docker.com/
* Docker 官方文档: https://docs.docker.com/
* Docker Hub: https://hub.docker.com
* Docker 的源代码仓库: https://github.com/docker/docker
* Docker 官方主页https://www.docker.com
* Docker 官方博客https://blog.docker.com/
* Docker 官方文档https://docs.docker.com/
* Docker Storehttps://store.docker.com
* Docker Cloudhttps://cloud.docker.com
* Docker Hubhttps://hub.docker.com
* Docker 的源代码仓库https://github.com/moby/moby
* Docker 发布版本历史https://docs.docker.com/release-notes/
* Docker 常见问题https://docs.docker.com/engine/faq/
* Docker 远端应用 API: https://docs.docker.com/reference/api/docker_remote_api/
* Docker 远端应用 APIhttps://docs.docker.com/develop/sdk/
## 实践参考
* Dockerfile 参考https://docs.docker.com/reference/builder/
* Dockerfile 最佳实践https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/
## 技术交流
* Docker 邮件列表: https://groups.google.com/forum/#!forum/docker-user
* Docker 的 IRC 频道: https://chat.freenode.net#docker
* Docker 的 Twitter 主页: https://twitter.com/docker
* Docker 邮件列表: https://groups.google.com/forum/#!forum/docker-user
* Docker 的 IRC 频道https://chat.freenode.net#docker
* Docker 的 Twitter 主页https://twitter.com/docker
## 其它
* Docker 的 StackOverflow 问答主页: https://stackoverflow.com/search?q=docker
* Docker 的 StackOverflow 问答主页https://stackoverflow.com/search?q=docker

View File

@ -47,7 +47,7 @@ hello world
# Docker 1.13+
在 Docker 1.13+ 版本中推荐使用 docker container 来管理镜像。
在 Docker 1.13+ 版本中推荐使用 `docker container` 来管理镜像。
```bash
$ docker container run -d

View File

@ -54,3 +54,13 @@ root@69d137adef7a:/#
如果从这个 stdin 中 exit不会导致容器的停止。这就是为什么推荐大家使用 `docker exec` 的原因。
更多参数说明请使用 `docker exec --help` 查看。
## Docker 1.13+
在 Docker 1.13+ 版本中推荐使用 `docker container` 来管理容器。
```bash
$ docker container attach
$ docker container exec
```

View File

@ -27,7 +27,7 @@ $ docker import http://example.com/exampleimage.tgz example/imagerepo
## Docker 1.13+
在 Docker 1.13+ 版本中推荐使用 docker container 来管理容器。
在 Docker 1.13+ 版本中推荐使用 `docker container` 来管理容器。
```bash
$ docker container export

View File

@ -12,7 +12,7 @@ trusting_newton
## Docker 1.13+
在 Docker 1.13+ 版本中推荐使用 docker container 来管理容器。
在 Docker 1.13+ 版本中推荐使用 `docker container` 来管理容器。
```bash
$ docker container rm trusting_newton

View File

@ -52,7 +52,7 @@ root@ba267838cc1b:/# ps
## Docker 1.13+
在 Docker 1.13+ 版本中推荐使用 docker container 来管理容器。
在 Docker 1.13+ 版本中推荐使用 `docker container` 来管理容器。
```bash
$ docker container run ubuntu:17.10 /bin/echo 'Hello world'

View File

@ -1,10 +1,13 @@
## 终止容器
可以使用 `docker stop` 来终止一个运行中的容器。
此外当Docker容器中指定的应用终结时容器也自动终止。
例如对于上一章节中只启动了一个终端的容器,用户通过 `exit` 命令或 `Ctrl+d` 来退出终端时,所创建的容器立刻终止。
终止状态的容器可以用 `docker ps -a` 命令看到。例如
```bash
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
@ -18,7 +21,7 @@ ba267838cc1b ubuntu:14.04 "/bin/bash" 30 minutes a
## Docker 1.13+
在 Docker 1.13+ 版本中推荐使用 docker container 来管理容器。
在 Docker 1.13+ 版本中推荐使用 `docker container` 来管理容器。
```bash
$ docker container ls

View File

@ -19,7 +19,7 @@ $ docker run -d -P \
上面的命令加载主机的 `/src/webapp` 目录到容器的 `/opt/webapp`目录。这个功能在进行测试的时候十分方便,比如用户可以放置一些程序到本地目录中,来查看容器是否正常工作。本地目录的路径必须是绝对路径,如果目录不存在 Docker 会自动为你创建它。
Docker 挂载主机目录的默认权限是读写,用户也可以通过增加 `readonly` 指定为只读。
Docker 挂载主机目录的默认权限是 `读写`,用户也可以通过增加 `readonly` 指定为 `只读`
```bash
$ docker run -d -P \
@ -30,7 +30,7 @@ $ docker run -d -P \
python app.py
```
加了 `readonly` 之后,就挂载为只读了。如果你在容器内 `/src/webapp` 目录新建文件,会显示如下错误
加了 `readonly` 之后,就挂载为 `只读` 了。如果你在容器内 `/src/webapp` 目录新建文件,会显示如下错误
```bash
/src/webapp # touch new.txt
@ -66,9 +66,14 @@ $ docker inspect web
```bash
$ docker run --rm -it \
--mount type=bind,source=~/.bash_history,target=/root/.bash_history \
# -v $HOME/.bash_history:/root/.bash_history \
--mount type=bind,source=$HOME/.bash_history,target=/root/.bash_history \
ubuntu:17.10 \
bash
bash
root@2affd44b4667:/# history
1 ls
2 diskutil list
```
这样就可以记录在容器输入过的命令了。

View File

@ -1,16 +1,16 @@
## 数据卷
数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS可以提供很多有用的特性
`数据卷` 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS可以提供很多有用的特性
* 数据卷可以在容器之间共享和重用
* `数据卷` 可以在容器之间共享和重用
* 对数据卷的修改会立马生效
* 对 `数据卷` 的修改会立马生效
* 对数据卷的更新,不会影响镜像
* 对 `数据卷` 的更新,不会影响镜像
* 数据卷默认会一直存在,即使容器被删除
* `数据卷` 默认会一直存在,即使容器被删除
*注意*:数据卷的使用,类似于 Linux 下对目录或文件进行 mount镜像中的被指定为挂载点的目录中的文件会隐藏掉能显示看的是挂载的数据卷。
*注意*`数据卷` 的使用,类似于 Linux 下对目录或文件进行 mount镜像中的被指定为挂载点的目录中的文件会隐藏掉能显示看的是挂载的 `数据卷`
### 选择 -v 还是 -mount 参数
@ -22,7 +22,7 @@ Docker 新用户应该选择 `--mount` 参数,经验丰富的 Docker 使用者
$ docker volume create my-vol
```
查看所有的数据卷
查看所有的 `数据卷`
```bash
$ docker volume ls
@ -30,7 +30,7 @@ $ docker volume ls
local my-vol
```
在主机里使用以下命令可以查看指定数据卷的信息
在主机里使用以下命令可以查看指定 `数据卷` 的信息
```bash
$ docker volume inspect my-vol
@ -48,13 +48,14 @@ $ docker volume inspect my-vol
### 启动一个挂载数据卷的容器
在用 `docker run` 命令的时候,使用 `--mount` 标记来将数据卷挂载到容器里。在一次 `docker run` 中可以挂载多个数据卷。
在用 `docker run` 命令的时候,使用 `--mount` 标记来将 `数据卷` 挂载到容器里。在一次 `docker run` 中可以挂载多个 `数据卷`
下面创建一个名为 `web` 的容器,并加载一个数据卷到容器的 `/webapp` 目录。
下面创建一个名为 `web` 的容器,并加载一个 `数据卷` 到容器的 `/webapp` 目录。
```bash
$ docker run -d -P \
--name web \
# -v my-vol:/wepapp \
--mount source=my-vol,target=/webapp \
training/webapp \
python app.py
@ -91,7 +92,7 @@ $ docker inspect web
$ docker volume rm my-vol
```
数据卷是被设计用来持久化数据的它的生命周期独立于容器Docker 不会在容器被删除后自动删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷。如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用 `docker rm -v` 这个命令。
`数据卷` 是被设计用来持久化数据的它的生命周期独立于容器Docker 不会在容器被删除后自动删除 `数据卷`,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的 `数据卷`。如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用 `docker rm -v` 这个命令。
无主的数据卷可能会占据很多空间,要清理请使用以下命令

View File

@ -221,7 +221,7 @@ $ docker build - < context.tar.gz
# Docker 1.13+
在 Docker 1.13+ 版本中推荐使用 docker image 来管理镜像。
在 Docker 1.13+ 版本中推荐使用 `docker image` 来管理镜像。
```bash
$ docker image build

View File

@ -1,3 +1,3 @@
## Dockerfile 指令详解
我们已经介绍了 `FROM``RUN`,还提及了 `COPY`, `ADD`,其实 Dockerfile 功能很强大,它提供了十多个指令。这里我们继续讲解剩下的指令。
我们已经介绍了 `FROM``RUN`,还提及了 `COPY`, `ADD`,其实 `Dockerfile` 功能很强大,它提供了十多个指令。这里我们继续讲解剩下的指令。

View File

@ -16,7 +16,7 @@ ADD ubuntu-xenial-core-cloudimg-amd64-root.tar.gz /
但在某些情况下,如果我们真的是希望复制个压缩文件进去,而不解压缩,这时就不可以使用 `ADD` 命令了。
在 Docker 官方的最佳实践文档中要求,尽可能的使用 `COPY`,因为 `COPY` 的语义很明确,就是复制文件而已,而 `ADD` 则包含了更复杂的功能,其行为也不一定很清晰。最适合使用 `ADD` 的场合,就是所提及的需要自动解压缩的场合。
在 Docker 官方的 [最佳实践文档](https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/) 中要求,尽可能的使用 `COPY`,因为 `COPY` 的语义很明确,就是复制文件而已,而 `ADD` 则包含了更复杂的功能,其行为也不一定很清晰。最适合使用 `ADD` 的场合,就是所提及的需要自动解压缩的场合。
另外需要注意的是,`ADD` 指令会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。

View File

@ -162,7 +162,7 @@ f753707788c5 ubuntu latest
## Docker 1.13+
在 Docker 1.13+ 版本中推荐使用 docker image 来管理镜像。
在 Docker 1.13+ 版本中推荐使用 `docker image` 来管理镜像。
```bash
$ docker image ls

View File

@ -0,0 +1 @@
## 多阶段构建

View File

@ -73,7 +73,7 @@ docker save <镜像名> | bzip2 | pv | ssh <用户名>@<主机名> 'cat | docker
## Docker 1.13+
在 Docker 1.13+ 版本中推荐使用 docker image 来管理镜像。
在 Docker 1.13+ 版本中推荐使用 `docker image` 来管理镜像。
```bash
$ docker image import

View File

@ -72,7 +72,7 @@ $
## Docker 1.13+
在 Docker 1.13+ 版本中推荐使用 docker image 来管理镜像。
在 Docker 1.13+ 版本中推荐使用 `docker image` 来管理镜像。
```bash
$ docker image pull ubunut:17.10

View File

@ -106,7 +106,7 @@ $ docker rmi $(docker images -q -f before=mongo:3.2)
## Docker 1.13+
在 Docker 1.13+ 版本中推荐使用 docker image 来管理镜像。
在 Docker 1.13+ 版本中推荐使用 `docker image` 来管理镜像。
```bash
$ docker image rm

View File

@ -12,6 +12,6 @@ Docker 在 1.13 版本之后,从 2017 年的 3 月 1 日开始,版本命名
同时 Docker 划分为 CE 和 EE。CE 即社区版免费支持周期三个月EE 即企业版,强调安全,付费使用。
Docker CE 每月发布一个 edge 版本 (17.03, 17.04, 17.05...),每三个月发布一个 stable 版本 (17.03, 17.06, 17.09...)Docker EE 和 stable 版本号保持一致,但每个版本提供一年维护。
Docker CE 每月发布一个 Edge 版本 (17.03, 17.04, 17.05...),每三个月发布一个 Stable 版本 (17.03, 17.06, 17.09...)Docker EE 和 Stable 版本号保持一致,但每个版本提供一年维护。
官方网站上有各种环境下的 [安装指南](https://docs.docker.com/engine/installation/),这里主要介绍 Docker CE 在 Linux 、Windows 10 (PC) 和 macOS 上的安装。

View File

@ -4,7 +4,7 @@ Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的
Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目已经超过 4 万 6 千个星标和一万多个 fork。甚至由于 Docker 项目的火爆,在 2013 年底,[dotCloud 公司决定改名为 Docker](https://blog.docker.com/2013/10/dotcloud-is-becoming-docker-inc/)。Docker 最初是在 Ubuntu 12.04 上开发实现的Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持Google 也在其 PaaS 产品中广泛应用 Docker。
Docker 使用 Google 公司推出的 [Go 语言](https://golang.org/) 进行开发实现,基于 Linux 内核的 [cgroup](https://zh.wikipedia.org/wiki/Cgroups)[namespace](https://en.wikipedia.org/wiki/Linux_namespaces),以及 [AUFS](https://en.wikipedia.org/wiki/Aufs) 类的 [Union FS](https://en.wikipedia.org/wiki/Union_mount) 等技术,对进程进行封装隔离,属于 [操作系统层面的虚拟化技术](https://en.wikipedia.org/wiki/Operating-system-level_virtualization)。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 [LXC](https://linuxcontainers.org/lxc/introduction/),从 0.7 版本以后开始去除 LXC转而使用自行开发的 [libcontainer](https://github.com/docker/libcontainer),从 1.11 开始,则进一步演进为使用 [runC](http://runc.io/) 和 [containerd](https://containerd.tools/)。
Docker 使用 Google 公司推出的 [Go 语言](https://golang.org/) 进行开发实现,基于 Linux 内核的 [cgroup](https://zh.wikipedia.org/wiki/Cgroups)[namespace](https://en.wikipedia.org/wiki/Linux_namespaces),以及 [AUFS](https://en.wikipedia.org/wiki/Aufs) 类的 [Union FS](https://en.wikipedia.org/wiki/Union_mount) 等技术,对进程进行封装隔离,属于 [操作系统层面的虚拟化技术](https://en.wikipedia.org/wiki/Operating-system-level_virtualization)。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 [LXC](https://linuxcontainers.org/lxc/introduction/),从 0.7 版本以后开始去除 LXC转而使用自行开发的 [libcontainer](https://github.com/docker/libcontainer),从 1.11 开始,则进一步演进为使用 [runC](https://github.com/opencontainers/runc) 和 [containerd](https://containerd.tools/)。
Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。

View File

@ -28,13 +28,13 @@
### 更轻松的维护和扩展
Docker 使用的分层存储以及镜像的技术使得应用重复部分的复用更为容易也使得应用的维护更新更加简单基于基础镜像进一步扩展镜像也变得非常简单。此外Docker 团队同各个开源项目团队一起维护了一大批高质量的 [官方镜像](https://hub.docker.com/explore/),既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。
Docker 使用的分层存储以及镜像的技术使得应用重复部分的复用更为容易也使得应用的维护更新更加简单基于基础镜像进一步扩展镜像也变得非常简单。此外Docker 团队同各个开源项目团队一起维护了一大批高质量的 [官方镜像](https://store.docker.com/search?q=&source=verified&type=image),既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。
### 对比传统虚拟机总结
| 特性 | 容器 | 虚拟机 |
| -------- | -------- | ---------- |
| : -------- | : -------- | : ---------- |
| 启动 | 秒级 | 分钟级 |
| 硬盘使用 | 一般为 MB | 一般为 GB |
| 硬盘使用 | 一般为 `MB` | 一般为 `GB` |
| 性能 | 接近原生 | 弱于 |
| 系统支持量 | 单机支持上千个容器 | 一般几十个 |

View File

@ -13,15 +13,27 @@
* 0.9-rc1: 2017-11-30
* 根据最新版本v17.09)修订内容
* 增加 Dockerfile `multistage builds` 多阶段构建 `Docker 17.05` 新增特性
* 增加 `Dockerfile` 多阶段构建( `multistage builds` ) `Docker 17.05` 新增特性
* 增加 `docker exec` 子命令介绍
* 增加 `docker` 管理子命令 `container` `image` `network` `volume` 介绍
* 增加 `树莓派单片电脑` 安装 Docker
* 更新 `Docker CE` `v17.x` 安装说明
* 更新 `Docker 网络` 一节
* 更新 `Docker Machine` 基于 0.13.0 版本
* 更新 `Docker Compose` 基于 3 文件格式
* 删除 Docker Swarm 相关内容,替换为 `Swarm mode` `Docker 1.12.0` 新增特性
* 精简 `Docker Registry` 一节
* 删除 `Docker Swarm` 相关内容,替换为 `Swarm mode` `Docker 1.12.0` 新增特性
* 删除 `docker run` `--link` 参数
* 精简 `Docker Registry` 一节
* 替换 `docker run` `-v` 参数为 `--mount`
* 替换 `404` 链接
* 优化文字排版
* 增加离线阅读功能
* 0.8.0: 2017-01-08