commit
4d4895435a
|
@ -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
|
```bash
|
||||||
$ git clone git@github.com:docker_user/docker_practice.git
|
$ git clone git@github.com:docker_user/docker_practice.git
|
||||||
|
@ -17,9 +17,10 @@
|
||||||
$ git push
|
$ git push
|
||||||
```
|
```
|
||||||
|
|
||||||
* 在 GitHub 网站上提交 pull request。
|
* 在 [GitHub](https://github.com/yeasy/docker_practice/pulls) 上提交 Pull request。
|
||||||
|
|
||||||
* 定期使用项目仓库内容更新自己仓库内容。
|
* 定期使用项目仓库内容更新自己仓库内容。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ git remote add upstream https://github.com/yeasy/docker_practice
|
$ git remote add upstream https://github.com/yeasy/docker_practice
|
||||||
$ git fetch upstream
|
$ git fetch upstream
|
||||||
|
|
|
@ -19,12 +19,11 @@
|
||||||
<!--如果你的 Docker 版本低于 17.0 请尽可能升级到该版本-->
|
<!--如果你的 Docker 版本低于 17.0 请尽可能升级到该版本-->
|
||||||
<!--if Docker version under 17.0, please upgrade Docker to 17.09-->
|
<!--if Docker version under 17.0, please upgrade Docker to 17.09-->
|
||||||
|
|
||||||
* [x] 17.11 edge
|
* [x] 17.11 Edge
|
||||||
* [ ] 17.09 stable
|
* [ ] 17.09 Stable
|
||||||
* [ ] 1.13.0
|
* [ ] 1.13.0
|
||||||
* [ ] Before 1.13.0
|
* [ ] Before 1.13.0
|
||||||
|
|
||||||
### Problem Description
|
### Problem Description
|
||||||
<!--描述你的问题,请贴出操作步骤,终端报错日志-->
|
<!--描述你的问题,请贴出操作步骤,终端报错日志-->
|
||||||
<!--describe problem with detailed steps and logs-->
|
<!--describe problem with detailed steps and logs-->
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,8 @@ $ docker-compose pull
|
||||||
$ docker-compose up
|
$ 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)。
|
Docker 自身仍在快速发展中,生态环境也在蓬勃成长。建议初学者使用 Linux 上最新版的 Docker (v17.11) 进行学习实践。欢迎参与维护项目:[如何贡献](.github/CONTRIBUTING.md)。
|
||||||
|
|
||||||
* [修订记录](revision.md)
|
* [修订记录](revision.md)
|
||||||
|
|
|
@ -1,23 +1,29 @@
|
||||||
# 资源链接
|
# 资源链接
|
||||||
|
|
||||||
## 官方网站
|
## 官方网站
|
||||||
* Docker 官方主页: https://www.docker.com
|
|
||||||
* Docker 官方博客: https://blog.docker.com/
|
* Docker 官方主页:https://www.docker.com
|
||||||
* Docker 官方文档: https://docs.docker.com/
|
* Docker 官方博客:https://blog.docker.com/
|
||||||
* Docker Hub: https://hub.docker.com
|
* Docker 官方文档:https://docs.docker.com/
|
||||||
* Docker 的源代码仓库: https://github.com/docker/docker
|
* Docker Store:https://store.docker.com
|
||||||
|
* Docker Cloud:https://cloud.docker.com
|
||||||
|
* Docker Hub:https://hub.docker.com
|
||||||
|
* Docker 的源代码仓库:https://github.com/moby/moby
|
||||||
* Docker 发布版本历史:https://docs.docker.com/release-notes/
|
* Docker 发布版本历史:https://docs.docker.com/release-notes/
|
||||||
* Docker 常见问题:https://docs.docker.com/engine/faq/
|
* Docker 常见问题:https://docs.docker.com/engine/faq/
|
||||||
* Docker 远端应用 API: https://docs.docker.com/reference/api/docker_remote_api/
|
* Docker 远端应用 API:https://docs.docker.com/develop/sdk/
|
||||||
|
|
||||||
## 实践参考
|
## 实践参考
|
||||||
|
|
||||||
* Dockerfile 参考:https://docs.docker.com/reference/builder/
|
* Dockerfile 参考:https://docs.docker.com/reference/builder/
|
||||||
* Dockerfile 最佳实践:https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/
|
* 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 邮件列表: https://groups.google.com/forum/#!forum/docker-user
|
||||||
* Docker 的 Twitter 主页: https://twitter.com/docker
|
* 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
|
||||||
|
|
|
@ -47,7 +47,7 @@ hello world
|
||||||
|
|
||||||
# Docker 1.13+
|
# Docker 1.13+
|
||||||
|
|
||||||
在 Docker 1.13+ 版本中推荐使用 docker container 来管理镜像。
|
在 Docker 1.13+ 版本中推荐使用 `docker container` 来管理镜像。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker container run -d
|
$ docker container run -d
|
||||||
|
|
|
@ -54,3 +54,13 @@ root@69d137adef7a:/#
|
||||||
如果从这个 stdin 中 exit,不会导致容器的停止。这就是为什么推荐大家使用 `docker exec` 的原因。
|
如果从这个 stdin 中 exit,不会导致容器的停止。这就是为什么推荐大家使用 `docker exec` 的原因。
|
||||||
|
|
||||||
更多参数说明请使用 `docker exec --help` 查看。
|
更多参数说明请使用 `docker exec --help` 查看。
|
||||||
|
|
||||||
|
## Docker 1.13+
|
||||||
|
|
||||||
|
在 Docker 1.13+ 版本中推荐使用 `docker container` 来管理容器。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker container attach
|
||||||
|
|
||||||
|
$ docker container exec
|
||||||
|
```
|
||||||
|
|
|
@ -27,7 +27,7 @@ $ docker import http://example.com/exampleimage.tgz example/imagerepo
|
||||||
|
|
||||||
## Docker 1.13+
|
## Docker 1.13+
|
||||||
|
|
||||||
在 Docker 1.13+ 版本中推荐使用 docker container 来管理容器。
|
在 Docker 1.13+ 版本中推荐使用 `docker container` 来管理容器。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker container export
|
$ docker container export
|
||||||
|
|
|
@ -12,7 +12,7 @@ trusting_newton
|
||||||
|
|
||||||
## Docker 1.13+
|
## Docker 1.13+
|
||||||
|
|
||||||
在 Docker 1.13+ 版本中推荐使用 docker container 来管理容器。
|
在 Docker 1.13+ 版本中推荐使用 `docker container` 来管理容器。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker container rm trusting_newton
|
$ docker container rm trusting_newton
|
||||||
|
|
|
@ -52,7 +52,7 @@ root@ba267838cc1b:/# ps
|
||||||
|
|
||||||
## Docker 1.13+
|
## Docker 1.13+
|
||||||
|
|
||||||
在 Docker 1.13+ 版本中推荐使用 docker container 来管理容器。
|
在 Docker 1.13+ 版本中推荐使用 `docker container` 来管理容器。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker container run ubuntu:17.10 /bin/echo 'Hello world'
|
$ docker container run ubuntu:17.10 /bin/echo 'Hello world'
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
## 终止容器
|
## 终止容器
|
||||||
|
|
||||||
可以使用 `docker stop` 来终止一个运行中的容器。
|
可以使用 `docker stop` 来终止一个运行中的容器。
|
||||||
|
|
||||||
此外,当Docker容器中指定的应用终结时,容器也自动终止。
|
此外,当Docker容器中指定的应用终结时,容器也自动终止。
|
||||||
|
|
||||||
例如对于上一章节中只启动了一个终端的容器,用户通过 `exit` 命令或 `Ctrl+d` 来退出终端时,所创建的容器立刻终止。
|
例如对于上一章节中只启动了一个终端的容器,用户通过 `exit` 命令或 `Ctrl+d` 来退出终端时,所创建的容器立刻终止。
|
||||||
|
|
||||||
终止状态的容器可以用 `docker ps -a` 命令看到。例如
|
终止状态的容器可以用 `docker ps -a` 命令看到。例如
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker ps -a
|
docker ps -a
|
||||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
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 1.13+ 版本中推荐使用 docker container 来管理容器。
|
在 Docker 1.13+ 版本中推荐使用 `docker container` 来管理容器。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker container ls
|
$ docker container ls
|
||||||
|
|
|
@ -19,7 +19,7 @@ $ docker run -d -P \
|
||||||
|
|
||||||
上面的命令加载主机的 `/src/webapp` 目录到容器的 `/opt/webapp`目录。这个功能在进行测试的时候十分方便,比如用户可以放置一些程序到本地目录中,来查看容器是否正常工作。本地目录的路径必须是绝对路径,如果目录不存在 Docker 会自动为你创建它。
|
上面的命令加载主机的 `/src/webapp` 目录到容器的 `/opt/webapp`目录。这个功能在进行测试的时候十分方便,比如用户可以放置一些程序到本地目录中,来查看容器是否正常工作。本地目录的路径必须是绝对路径,如果目录不存在 Docker 会自动为你创建它。
|
||||||
|
|
||||||
Docker 挂载主机目录的默认权限是读写,用户也可以通过增加 `readonly` 指定为只读。
|
Docker 挂载主机目录的默认权限是 `读写`,用户也可以通过增加 `readonly` 指定为 `只读`。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker run -d -P \
|
$ docker run -d -P \
|
||||||
|
@ -30,7 +30,7 @@ $ docker run -d -P \
|
||||||
python app.py
|
python app.py
|
||||||
```
|
```
|
||||||
|
|
||||||
加了 `readonly` 之后,就挂载为只读了。如果你在容器内 `/src/webapp` 目录新建文件,会显示如下错误
|
加了 `readonly` 之后,就挂载为 `只读` 了。如果你在容器内 `/src/webapp` 目录新建文件,会显示如下错误
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
/src/webapp # touch new.txt
|
/src/webapp # touch new.txt
|
||||||
|
@ -66,9 +66,14 @@ $ docker inspect web
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker run --rm -it \
|
$ 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 \
|
ubuntu:17.10 \
|
||||||
bash
|
bash
|
||||||
|
|
||||||
|
root@2affd44b4667:/# history
|
||||||
|
1 ls
|
||||||
|
2 diskutil list
|
||||||
```
|
```
|
||||||
|
|
||||||
这样就可以记录在容器输入过的命令了。
|
这样就可以记录在容器输入过的命令了。
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
## 数据卷
|
## 数据卷
|
||||||
|
|
||||||
数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:
|
`数据卷` 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:
|
||||||
|
|
||||||
* 数据卷可以在容器之间共享和重用
|
* `数据卷` 可以在容器之间共享和重用
|
||||||
|
|
||||||
* 对数据卷的修改会立马生效
|
* 对 `数据卷` 的修改会立马生效
|
||||||
|
|
||||||
* 对数据卷的更新,不会影响镜像
|
* 对 `数据卷` 的更新,不会影响镜像
|
||||||
|
|
||||||
* 数据卷默认会一直存在,即使容器被删除
|
* `数据卷` 默认会一直存在,即使容器被删除
|
||||||
|
|
||||||
*注意*:数据卷的使用,类似于 Linux 下对目录或文件进行 mount,镜像中的被指定为挂载点的目录中的文件会隐藏掉,能显示看的是挂载的数据卷。
|
*注意*:`数据卷` 的使用,类似于 Linux 下对目录或文件进行 mount,镜像中的被指定为挂载点的目录中的文件会隐藏掉,能显示看的是挂载的 `数据卷`。
|
||||||
|
|
||||||
### 选择 -v 还是 -–mount 参数
|
### 选择 -v 还是 -–mount 参数
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ Docker 新用户应该选择 `--mount` 参数,经验丰富的 Docker 使用者
|
||||||
$ docker volume create my-vol
|
$ docker volume create my-vol
|
||||||
```
|
```
|
||||||
|
|
||||||
查看所有的数据卷
|
查看所有的 `数据卷`
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker volume ls
|
$ docker volume ls
|
||||||
|
@ -30,7 +30,7 @@ $ docker volume ls
|
||||||
local my-vol
|
local my-vol
|
||||||
```
|
```
|
||||||
|
|
||||||
在主机里使用以下命令可以查看指定数据卷的信息
|
在主机里使用以下命令可以查看指定 `数据卷` 的信息
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker volume inspect my-vol
|
$ 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
|
```bash
|
||||||
$ docker run -d -P \
|
$ docker run -d -P \
|
||||||
--name web \
|
--name web \
|
||||||
|
# -v my-vol:/wepapp \
|
||||||
--mount source=my-vol,target=/webapp \
|
--mount source=my-vol,target=/webapp \
|
||||||
training/webapp \
|
training/webapp \
|
||||||
python app.py
|
python app.py
|
||||||
|
@ -91,7 +92,7 @@ $ docker inspect web
|
||||||
$ docker volume rm my-vol
|
$ docker volume rm my-vol
|
||||||
```
|
```
|
||||||
|
|
||||||
数据卷是被设计用来持久化数据的,它的生命周期独立于容器,Docker 不会在容器被删除后自动删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷。如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用 `docker rm -v` 这个命令。
|
`数据卷` 是被设计用来持久化数据的,它的生命周期独立于容器,Docker 不会在容器被删除后自动删除 `数据卷`,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的 `数据卷`。如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用 `docker rm -v` 这个命令。
|
||||||
|
|
||||||
无主的数据卷可能会占据很多空间,要清理请使用以下命令
|
无主的数据卷可能会占据很多空间,要清理请使用以下命令
|
||||||
|
|
||||||
|
|
|
@ -221,7 +221,7 @@ $ docker build - < context.tar.gz
|
||||||
|
|
||||||
# Docker 1.13+
|
# Docker 1.13+
|
||||||
|
|
||||||
在 Docker 1.13+ 版本中推荐使用 docker image 来管理镜像。
|
在 Docker 1.13+ 版本中推荐使用 `docker image` 来管理镜像。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker image build
|
$ docker image build
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
## Dockerfile 指令详解
|
## Dockerfile 指令详解
|
||||||
|
|
||||||
我们已经介绍了 `FROM`,`RUN`,还提及了 `COPY`, `ADD`,其实 Dockerfile 功能很强大,它提供了十多个指令。这里我们继续讲解剩下的指令。
|
我们已经介绍了 `FROM`,`RUN`,还提及了 `COPY`, `ADD`,其实 `Dockerfile` 功能很强大,它提供了十多个指令。这里我们继续讲解剩下的指令。
|
||||||
|
|
|
@ -16,7 +16,7 @@ ADD ubuntu-xenial-core-cloudimg-amd64-root.tar.gz /
|
||||||
|
|
||||||
但在某些情况下,如果我们真的是希望复制个压缩文件进去,而不解压缩,这时就不可以使用 `ADD` 命令了。
|
但在某些情况下,如果我们真的是希望复制个压缩文件进去,而不解压缩,这时就不可以使用 `ADD` 命令了。
|
||||||
|
|
||||||
在 Docker 官方的最佳实践文档中要求,尽可能的使用 `COPY`,因为 `COPY` 的语义很明确,就是复制文件而已,而 `ADD` 则包含了更复杂的功能,其行为也不一定很清晰。最适合使用 `ADD` 的场合,就是所提及的需要自动解压缩的场合。
|
在 Docker 官方的 [最佳实践文档](https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/) 中要求,尽可能的使用 `COPY`,因为 `COPY` 的语义很明确,就是复制文件而已,而 `ADD` 则包含了更复杂的功能,其行为也不一定很清晰。最适合使用 `ADD` 的场合,就是所提及的需要自动解压缩的场合。
|
||||||
|
|
||||||
另外需要注意的是,`ADD` 指令会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。
|
另外需要注意的是,`ADD` 指令会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。
|
||||||
|
|
||||||
|
|
|
@ -162,7 +162,7 @@ f753707788c5 ubuntu latest
|
||||||
|
|
||||||
## Docker 1.13+
|
## Docker 1.13+
|
||||||
|
|
||||||
在 Docker 1.13+ 版本中推荐使用 docker image 来管理镜像。
|
在 Docker 1.13+ 版本中推荐使用 `docker image` 来管理镜像。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker image ls
|
$ docker image ls
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
## 多阶段构建
|
|
@ -73,7 +73,7 @@ docker save <镜像名> | bzip2 | pv | ssh <用户名>@<主机名> 'cat | docker
|
||||||
|
|
||||||
## Docker 1.13+
|
## Docker 1.13+
|
||||||
|
|
||||||
在 Docker 1.13+ 版本中推荐使用 docker image 来管理镜像。
|
在 Docker 1.13+ 版本中推荐使用 `docker image` 来管理镜像。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker image import
|
$ docker image import
|
||||||
|
|
|
@ -72,7 +72,7 @@ $
|
||||||
|
|
||||||
## Docker 1.13+
|
## Docker 1.13+
|
||||||
|
|
||||||
在 Docker 1.13+ 版本中推荐使用 docker image 来管理镜像。
|
在 Docker 1.13+ 版本中推荐使用 `docker image` 来管理镜像。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker image pull ubunut:17.10
|
$ docker image pull ubunut:17.10
|
||||||
|
|
|
@ -106,7 +106,7 @@ $ docker rmi $(docker images -q -f before=mongo:3.2)
|
||||||
|
|
||||||
## Docker 1.13+
|
## Docker 1.13+
|
||||||
|
|
||||||
在 Docker 1.13+ 版本中推荐使用 docker image 来管理镜像。
|
在 Docker 1.13+ 版本中推荐使用 `docker image` 来管理镜像。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker image rm
|
$ docker image rm
|
||||||
|
|
|
@ -12,6 +12,6 @@ Docker 在 1.13 版本之后,从 2017 年的 3 月 1 日开始,版本命名
|
||||||
|
|
||||||
同时 Docker 划分为 CE 和 EE。CE 即社区版(免费,支持周期三个月),EE 即企业版,强调安全,付费使用。
|
同时 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 上的安装。
|
官方网站上有各种环境下的 [安装指南](https://docs.docker.com/engine/installation/),这里主要介绍 Docker CE 在 Linux 、Windows 10 (PC) 和 macOS 上的安装。
|
||||||
|
|
|
@ -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 自开源后受到广泛的关注和讨论,至今其 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 技术比虚拟机技术更为轻便、快捷。
|
Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。
|
||||||
|
|
||||||
|
|
|
@ -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` |
|
||||||
| 性能 | 接近原生 | 弱于 |
|
| 性能 | 接近原生 | 弱于 |
|
||||||
| 系统支持量 | 单机支持上千个容器 | 一般几十个 |
|
| 系统支持量 | 单机支持上千个容器 | 一般几十个 |
|
||||||
|
|
18
revision.md
18
revision.md
|
@ -13,15 +13,27 @@
|
||||||
* 0.9-rc1: 2017-11-30
|
* 0.9-rc1: 2017-11-30
|
||||||
|
|
||||||
* 根据最新版本(v17.09)修订内容
|
* 根据最新版本(v17.09)修订内容
|
||||||
* 增加 Dockerfile `multistage builds` 多阶段构建 `Docker 17.05` 新增特性
|
|
||||||
|
* 增加 `Dockerfile` 多阶段构建( `multistage builds` ) `Docker 17.05` 新增特性
|
||||||
* 增加 `docker exec` 子命令介绍
|
* 增加 `docker exec` 子命令介绍
|
||||||
|
* 增加 `docker` 管理子命令 `container` `image` `network` `volume` 介绍
|
||||||
|
* 增加 `树莓派单片电脑` 安装 Docker
|
||||||
|
|
||||||
|
* 更新 `Docker CE` `v17.x` 安装说明
|
||||||
* 更新 `Docker 网络` 一节
|
* 更新 `Docker 网络` 一节
|
||||||
* 更新 `Docker Machine` 基于 0.13.0 版本
|
* 更新 `Docker Machine` 基于 0.13.0 版本
|
||||||
* 更新 `Docker Compose` 基于 3 文件格式
|
* 更新 `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 run` `--link` 参数
|
||||||
|
|
||||||
|
* 精简 `Docker Registry` 一节
|
||||||
|
|
||||||
* 替换 `docker run` `-v` 参数为 `--mount`
|
* 替换 `docker run` `-v` 参数为 `--mount`
|
||||||
|
* 替换 `404` 链接
|
||||||
|
|
||||||
|
* 优化文字排版
|
||||||
|
* 增加离线阅读功能
|
||||||
|
|
||||||
* 0.8.0: 2017-01-08
|
* 0.8.0: 2017-01-08
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue