From 709c77adcbb46cf75a8b316495de30c5db4ca521 Mon Sep 17 00:00:00 2001 From: Kang HuaiShuai Date: Tue, 5 Nov 2019 23:35:43 +0800 Subject: [PATCH] Update title style Signed-off-by: Kang HuaiShuai --- .vuepress/config.js | 121 +++++++++++++++++----------------- archive/README.md | 4 ++ buildx/buildx.md | 14 +--- cases/ci/travis/README.md | 6 +- cases/os/alpine.md | 10 +-- cases/os/busybox.md | 10 +-- cases/os/debian.md | 12 ++-- cloud/alicloud.md | 2 +- cloud/aws.md | 2 +- cloud/intro.md | 4 +- cloud/summary.md | 2 +- cloud/tencentCloud.md | 2 +- compose/commands.md | 56 ++++++++-------- compose/compose_file.md | 72 ++++++++++---------- compose/django.md | 2 +- compose/install.md | 10 +-- compose/introduction.md | 2 +- compose/rails.md | 2 +- compose/usage.md | 14 ++-- compose/wordpress.md | 8 +-- image/manifest.md | 16 +---- install/centos.md | 26 ++++---- install/debian.md | 24 +++---- install/fedora.md | 24 +++---- install/mac.md | 16 ++--- install/mirror.md | 12 ++-- install/raspberry-pi.md | 18 ++--- install/ubuntu.md | 24 +++---- install/windows.md | 12 ++-- repository/dockerhub.md | 12 ++-- repository/nexus3_registry.md | 12 ++-- repository/registry.md | 14 ++-- repository/registry_auth.md | 18 ++--- underly/arch.md | 2 +- underly/cgroups.md | 2 +- underly/container_format.md | 2 +- underly/namespace.md | 14 ++-- underly/network.md | 8 +-- underly/ufs.md | 2 +- 39 files changed, 297 insertions(+), 316 deletions(-) diff --git a/.vuepress/config.js b/.vuepress/config.js index f9e96cc..af5b281 100644 --- a/.vuepress/config.js +++ b/.vuepress/config.js @@ -37,6 +37,10 @@ module.exports = { text: 'Kubernetes', link: '/kubernetes/', }, + { + text: "云计算", + link: "/cloud/", + }, { text: 'GitHub', link: 'https://github.com/yeasy/docker_practice' @@ -58,6 +62,13 @@ module.exports = { // } ], sidebar: { + '/cloud/': [ + 'intro', + 'aws', + 'tencentCloud', + 'alicloud', + 'summary', + ], '/kubernetes/': [ 'intro', 'quickstart', @@ -76,7 +87,6 @@ module.exports = { 'wordpress', ], '/install/': [ - '/install/', 'ubuntu', 'debian', 'fedora', @@ -85,9 +95,9 @@ module.exports = { 'mac', 'windows', 'mirror', + 'experimental', ], '/underly/': [ - '/underly/', 'arch', 'namespace', 'cgroups', @@ -96,7 +106,6 @@ module.exports = { 'network', ], '/repository/': [ - '/repository/', 'dockerhub', 'registry', 'registry_auth', @@ -107,7 +116,6 @@ module.exports = { title: "操作系统", collapsable:false, children: [ - '/cases/os/', 'busybox', 'alpine', 'debian', @@ -119,14 +127,13 @@ module.exports = { title: "在 IDE 中使用 Docker", collapsable: false, children: [ - '/ide/', - '/ide/vscode', + '/IDE/', + '/IDE/vsCode', ], }, ], '/cases/ci/': [ - '/cases/ci/', - '/cases/ci/actions/', + 'actions/', { title: "Drone", collapsable: false, @@ -145,55 +152,55 @@ module.exports = { title: "Docker 简介", collapsable: false, children: [ - '/introduction/', - '/introduction/what', - '/introduction/why', + 'introduction/', + 'introduction/what', + 'introduction/why', ] },{ title: "基本概念", collapsable: false, children: [ - '/basic_concept/', - '/basic_concept/image', - '/basic_concept/container', - '/basic_concept/repository' + 'basic_concept/', + 'basic_concept/image', + 'basic_concept/container', + 'basic_concept/repository' ] }, { title: "使用镜像", collapsable: false, children: [ - '/image/', - '/image/pull', - '/image/list', - '/image/rm', - '/image/commit', - '/image/build', - '/image/other.md', - '/image/internal.md', + 'image/', + 'image/pull', + 'image/list', + 'image/rm', + 'image/commit', + 'image/build', + 'image/other.md', + 'image/internal.md', ] }, { title: 'Dockerfile', collapsable: false, children: [ - "/image/dockerfile/", - '/image/dockerfile/copy', - '/image/dockerfile/add', - '/image/dockerfile/cmd', - '/image/dockerfile/entrypoint', - '/image/dockerfile/env', - '/image/dockerfile/arg', - '/image/dockerfile/volume', - '/image/dockerfile/expose', - '/image/dockerfile/workdir', - '/image/dockerfile/user', - '/image/dockerfile/healthcheck', - '/image/dockerfile/onbuild', - '/image/dockerfile/references', - '/image/multistage-builds/', - '/image/multistage-builds/laravel', - '/image/manifest', + "image/dockerfile/", + 'image/dockerfile/copy', + 'image/dockerfile/add', + 'image/dockerfile/cmd', + 'image/dockerfile/entrypoint', + 'image/dockerfile/env', + 'image/dockerfile/arg', + 'image/dockerfile/volume', + 'image/dockerfile/expose', + 'image/dockerfile/workdir', + 'image/dockerfile/user', + 'image/dockerfile/healthcheck', + 'image/dockerfile/onbuild', + 'image/dockerfile/references', + 'image/multistage-builds/', + 'image/multistage-builds/laravel', + 'image/manifest', ] },{ title: "操作容器", @@ -297,18 +304,6 @@ module.exports = { 'coreos/intro_tools', ], }, - { - title: "容器与云计算", - collapsable:false, - children: [ - 'cloud/', - 'cloud/intro', - 'cloud/aws', - 'cloud/tencentCloud', - 'cloud/alicloud', - 'cloud/summary', - ], - }, { title: "Docker 开源项目", collapsable:false, @@ -359,15 +354,23 @@ module.exports = { title: 'Mesos', collapsable: false, children: [ - '/mesos/intro', - '/mesos/installation', - '/mesos/architecture', - '/mesos/configuration', - '/mesos/monitor', - '/mesos/framework', - '/mesos/summary', + 'mesos/', + 'mesos/intro', + 'mesos/installation', + 'mesos/architecture', + 'mesos/configuration', + 'mesos/monitor', + 'mesos/framework', + 'mesos/summary', ] }, + { + title: 'Docker Swarm', + collapsable: false, + children: [ + "swarm/" + ] + } ], }, } diff --git a/archive/README.md b/archive/README.md index 042dde3..5f74875 100644 --- a/archive/README.md +++ b/archive/README.md @@ -1,3 +1,7 @@ # 归档项目 以下项目不被官方支持或内容陈旧,将在下一版本中删除。 + +* Docker Machine +* Mesos +* Docker Swarm diff --git a/buildx/buildx.md b/buildx/buildx.md index 6dc2c99..02c7ca5 100644 --- a/buildx/buildx.md +++ b/buildx/buildx.md @@ -2,19 +2,7 @@ ## 启用 Buildx -`buildx` 命令属于实验特性,必须设置环境变量以使用该命令。 - -Linux/macOS - -```bash -$ export DOCKER_CLI_EXPERIMENTAL=enabled -``` - -Windows - -```bash -$ set $env:DOCKER_CLI_EXPERIMENTAL=enabled -``` +`buildx` 命令属于实验特性,参考 [开启实验特性](../install/experimental.md) 一节。 ## 使用 diff --git a/cases/ci/travis/README.md b/cases/ci/travis/README.md index d3337da..792a5ce 100644 --- a/cases/ci/travis/README.md +++ b/cases/ci/travis/README.md @@ -1,10 +1,10 @@ -## 在 Travis CI 中使用 Docker +# 在 Travis CI 中使用 Docker 当代码提交到 GitHub 时,[Travis CI](https://travis-ci.com/) 会根据项目根目录 `.travis.yml` 文件设置的指令,执行一系列操作。 本小节介绍如何在 Travis CI 中使用 Docker 进行持续集成/持续部署(CI/CD)。这里以当代码提交到 GitHub 时自动构建 Docker 镜像并推送到 Docker Hub 为例进行介绍。 -### 准备 +## 准备 首先登录 https://travis-ci.com/account/repositories 选择 GitHub 仓库,按照指引安装 GitHub App 来启用 GitHub 仓库构建。 @@ -42,6 +42,6 @@ after_success: > 请提前在 Travis CI 仓库设置页面配置 `DOCKER_PASSWORD` `DOCKER_USERNAME` 变量 -### 查看结果 +## 查看结果 将项目推送到 GitHub,登录 [Travis CI](https://travis-ci.com/) 查看构建详情。 diff --git a/cases/os/alpine.md b/cases/os/alpine.md index 89398ab..7c10df0 100644 --- a/cases/os/alpine.md +++ b/cases/os/alpine.md @@ -1,6 +1,6 @@ -## Alpine +# Alpine -### 简介 +## 简介 ![Apline Linux 操作系统](_images/alpinelinux-logo.png) @@ -22,7 +22,7 @@ ubuntu latest b39b81afc8ca 188.3 MB centos latest 8efe422e6104 210 MB ``` -### 获取并使用官方镜像 +## 获取并使用官方镜像 由于镜像很小,下载时间往往很短,读者可以直接使用 `docker run` 指令直接运行一个 `Alpine` 容器,并指定运行的 Linux 指令,例如: @@ -31,7 +31,7 @@ $ docker run alpine echo '123' 123 ``` -### 迁移至 `Alpine` 基础镜像 +## 迁移至 `Alpine` 基础镜像 目前,大部分 Docker 官方镜像都已经支持 `Alpine` 作为基础镜像,可以很容易进行迁移。 @@ -54,7 +54,7 @@ $ echo "http://dl-4.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositorie $ apk --update add --no-cache ``` -### 相关资源 +## 相关资源 * `Alpine` 官网:https://www.alpinelinux.org/ * `Alpine` 官方仓库:https://github.com/alpinelinux diff --git a/cases/os/busybox.md b/cases/os/busybox.md index 16bd26c..1eb471a 100644 --- a/cases/os/busybox.md +++ b/cases/os/busybox.md @@ -1,6 +1,6 @@ -## Busybox +# Busybox -### 简介 +## 简介 ![Busybox - Linux 瑞士军刀](_images/busybox-logo.png) @@ -8,7 +8,7 @@ `BusyBox` 可运行于多款 `POSIX` 环境的操作系统中,如 `Linux`(包括 `Android`)、`Hurd`、`FreeBSD` 等。 -### 获取官方镜像 +## 获取官方镜像 在 `Docker Hub` 中搜索 `busybox` 相关的镜像。 @@ -44,7 +44,7 @@ REPOSITORY TAG IMAGE ID CREATED busybox latest e72ac664f4f0 6 weeks ago 2.433 MB ``` -### 运行 busybox +## 运行 busybox 启动一个 `busybox` 容器,并在容器中执行 `grep` 命令。 @@ -105,7 +105,7 @@ tmpfs on /proc/kcore type tmpfs (rw,nosuid,mode=755) `busybox` 镜像虽然小巧,但包括了大量常见的 `Linux` 命令,读者可以用它快速熟悉 `Linux` 命令。 -### 相关资源 +## 相关资源 * `Busybox` 官网:https://busybox.net/ * `Busybox` 官方仓库:https://git.busybox.net/busybox/ diff --git a/cases/os/debian.md b/cases/os/debian.md index ce975dd..6e87241 100644 --- a/cases/os/debian.md +++ b/cases/os/debian.md @@ -1,7 +1,7 @@ -## Debian/Ubuntu +# Debian/Ubuntu `Debian` 和 `Ubuntu` 都是目前较为流行的 **Debian 系** 的服务器操作系统,十分适合研发场景。`Docker Hub` 上提供了官方镜像,国内各大容器云服务也基本都提供了相应的支持。 -### Debian 系统简介 +## Debian 系统简介 ![Debian 操作系统](_images/debian-logo.png) @@ -11,7 +11,7 @@ 众多的 `Linux` 发行版,例如 `Ubuntu`、`Knoppix` 和 `Linspire` 及 `Xandros` 等,都基于 `Debian GNU/Linux`。 -#### 使用 Debian 官方镜像 +### 使用 Debian 官方镜像 读者可以使用 `docker search` 查找 `Debian` 镜像: @@ -36,13 +36,13 @@ Debian GNU/Linux 8 `Debian` 镜像很适合作为基础镜像,构建自定义镜像。 -### Ubuntu 系统简介 +## Ubuntu 系统简介 ![Ubuntu 操作系统](_images/ubuntu-logo.jpg) `Ubuntu` 是一个以桌面应用为主的 `GNU/Linux` 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词(官方译名“友帮拓”,另有“吾帮托”、“乌班图”、“有奔头”或“乌斑兔”等译名)。`Ubuntu` 意思是“人性”以及“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。 `Ubuntu` 基于 `Debian` 发行版和 `GNOME/Unity` 桌面环境,与 `Debian` 的不同在于它每 6 个月会发布一个新版本,每 2 年推出一个长期支持 **(Long Term Support,LTS)** 版本,一般支持 3 年时间。 -#### 使用 Ubuntu 官方镜像 +### 使用 Ubuntu 官方镜像 `Ubuntu` 相关的镜像有很多,这里使用 `--filter=stars=10` 参数,只搜索那些被收藏 `10` 次以上的镜像。 @@ -162,7 +162,7 @@ root@7d93de07bf76:/# curl 127.0.0.1 配合使用 `-p` 参数对外映射服务端口,可以允许容器外来访问该服务。 -### 相关资源 +## 相关资源 * `Debian` 官网:https://www.debian.org/ * `Neuro Debian` 官网:http://neuro.debian.net/ diff --git a/cloud/alicloud.md b/cloud/alicloud.md index cf48a95..b8e5957 100644 --- a/cloud/alicloud.md +++ b/cloud/alicloud.md @@ -1,4 +1,4 @@ -## 阿里云 +# 阿里云 ![阿里云](_images/aliyun-logo.png) diff --git a/cloud/aws.md b/cloud/aws.md index b73b87a..aea35a1 100644 --- a/cloud/aws.md +++ b/cloud/aws.md @@ -1,4 +1,4 @@ -## 亚马逊云 +# 亚马逊云 ![AWS](_images/aws-logo.jpg) diff --git a/cloud/intro.md b/cloud/intro.md index b911878..ceffdf1 100644 --- a/cloud/intro.md +++ b/cloud/intro.md @@ -1,7 +1,7 @@ -## 简介 +# 简介 目前与容器相关的云计算主要分为两种类型。 一种是传统的 IaaS 服务商提供对容器相关的服务,包括镜像下载、容器托管等。 -另一种是直接基于容器技术对外提供容器云服务,所谓 Container as a Service(CaaS)。 \ No newline at end of file +另一种是直接基于容器技术对外提供容器云服务,所谓 Container as a Service(CaaS)。 diff --git a/cloud/summary.md b/cloud/summary.md index fd3c1fb..1183324 100644 --- a/cloud/summary.md +++ b/cloud/summary.md @@ -1,4 +1,4 @@ -## 本章小结 +# 本章小结 本章介绍了公有云服务对 Docker 的积极支持,以及新出现的容器云平台。 diff --git a/cloud/tencentCloud.md b/cloud/tencentCloud.md index 38933ea..4af43ee 100644 --- a/cloud/tencentCloud.md +++ b/cloud/tencentCloud.md @@ -1,4 +1,4 @@ -## 腾讯云 +# 腾讯云 ![腾讯云](_images/qcloud-logo.jpg) diff --git a/compose/commands.md b/compose/commands.md index 23d9c81..dda0b83 100644 --- a/compose/commands.md +++ b/compose/commands.md @@ -1,6 +1,6 @@ -## Compose 命令说明 +# Compose 命令说明 -### 命令对象与格式 +## 命令对象与格式 对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。如果没有特别的说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响。 @@ -12,7 +12,7 @@ docker-compose [-f=...] [options] [COMMAND] [ARGS...] ``` -### 命令选项 +## 命令选项 * `-f, --file FILE` 指定使用的 Compose 模板文件,默认为 `docker-compose.yml`,可以多次指定。 @@ -26,9 +26,9 @@ docker-compose [-f=...] [options] [COMMAND] [ARGS...] * `-v, --version` 打印版本并退出。 -### 命令使用说明 +## 命令使用说明 -#### `build` +### `build` 格式为 `docker-compose build [options] [SERVICE...]`。 @@ -46,27 +46,27 @@ docker-compose [-f=...] [options] [COMMAND] [ARGS...] * `--pull` 始终尝试通过 pull 来获取更新版本的镜像。 -#### `config` +### `config` 验证 Compose 文件格式是否正确,若正确则显示配置,若格式错误显示错误原因。 -#### `down` +### `down` 此命令将会停止 `up` 命令所启动的容器,并移除网络 -#### `exec` +### `exec` 进入指定的容器。 -#### `help` +### `help` 获得一个命令的帮助。 -#### `images` +### `images` 列出 Compose 文件中包含的镜像。 -#### `kill` +### `kill` 格式为 `docker-compose kill [options] [SERVICE...]`。 @@ -78,7 +78,7 @@ docker-compose [-f=...] [options] [COMMAND] [ARGS...] $ docker-compose kill -s SIGINT ``` -#### `logs` +### `logs` 格式为 `docker-compose logs [options] [SERVICE...]`。 @@ -86,13 +86,13 @@ $ docker-compose kill -s SIGINT 该命令在调试问题的时候十分有用。 -#### `pause` +### `pause` 格式为 `docker-compose pause [SERVICE...]`。 暂停一个服务容器。 -#### `port` +### `port` 格式为 `docker-compose port [options] SERVICE PRIVATE_PORT`。 @@ -104,7 +104,7 @@ $ docker-compose kill -s SIGINT * `--index=index` 如果同一服务存在多个容器,指定命令对象容器的序号(默认为 1)。 -#### `ps` +### `ps` 格式为 `docker-compose ps [options] [SERVICE...]`。 @@ -114,7 +114,7 @@ $ docker-compose kill -s SIGINT * `-q` 只打印容器的 ID 信息。 -#### `pull` +### `pull` 格式为 `docker-compose pull [options] [SERVICE...]`。 @@ -124,11 +124,11 @@ $ docker-compose kill -s SIGINT * `--ignore-pull-failures` 忽略拉取镜像过程中的错误。 -#### `push` +### `push` 推送服务依赖的镜像到 Docker 镜像仓库。 -#### `restart` +### `restart` 格式为 `docker-compose restart [options] [SERVICE...]`。 @@ -138,7 +138,7 @@ $ docker-compose kill -s SIGINT * `-t, --timeout TIMEOUT` 指定重启前停止容器的超时(默认为 10 秒)。 -#### `rm` +### `rm` 格式为 `docker-compose rm [options] [SERVICE...]`。 @@ -150,7 +150,7 @@ $ docker-compose kill -s SIGINT * `-v` 删除容器所挂载的数据卷。 -#### `run` +### `run` 格式为 `docker-compose run [options] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]`。 在指定服务上执行一个命令。 @@ -203,7 +203,7 @@ $ docker-compose run --no-deps web python manage.py shell * `-T` 不分配伪 tty,意味着依赖 tty 的指令将无法运行。 -#### `scale` +### `scale` 格式为 `docker-compose scale [options] [SERVICE=NUM...]`。 @@ -223,13 +223,13 @@ $ docker-compose scale web=3 db=2 * `-t, --timeout TIMEOUT` 停止容器时候的超时(默认为 10 秒)。 -#### `start` +### `start` 格式为 `docker-compose start [SERVICE...]`。 启动已经存在的服务容器。 -#### `stop` +### `stop` 格式为 `docker-compose stop [options] [SERVICE...]`。 @@ -239,17 +239,17 @@ $ docker-compose scale web=3 db=2 * `-t, --timeout TIMEOUT` 停止容器时候的超时(默认为 10 秒)。 -#### `top` +### `top` 查看各个服务容器内运行的进程。 -#### `unpause` +### `unpause` 格式为 `docker-compose unpause [SERVICE...]`。 恢复处于暂停状态中的服务。 -#### `up` +### `up` 格式为 `docker-compose up [options] [SERVICE...]`。 @@ -283,12 +283,12 @@ $ docker-compose scale web=3 db=2 * `-t, --timeout TIMEOUT` 停止容器时候的超时(默认为 10 秒)。 -#### `version` +### `version` 格式为 `docker-compose version`。 打印版本信息。 -### 参考资料 +## 参考资料 * [官方文档](https://docs.docker.com/compose/reference/overview/) diff --git a/compose/compose_file.md b/compose/compose_file.md index d41ea41..f99fb16 100644 --- a/compose/compose_file.md +++ b/compose/compose_file.md @@ -1,4 +1,4 @@ -## Compose 模板文件 +# Compose 模板文件 模板文件是使用 `Compose` 的核心,涉及到的指令关键字也比较多。但大家不用担心,这里面大部分指令跟 `docker run` 相关参数的含义都是类似的。 @@ -22,7 +22,7 @@ services: 下面分别介绍各个指令的用法。 -### `build` +## `build` 指定 `Dockerfile` 所在文件夹的路径(可以是绝对路径,或者相对 docker-compose.yml 文件的路径)。 `Compose` 将会利用它自动构建这个镜像,然后使用这个镜像。 @@ -62,7 +62,7 @@ build: - corp/web_app:3.14 ``` -### `cap_add, cap_drop` +## `cap_add, cap_drop` 指定容器的内核能力(capacity)分配。 @@ -80,7 +80,7 @@ cap_drop: - NET_ADMIN ``` -### `command` +## `command` 覆盖容器启动后默认执行的命令。 @@ -88,11 +88,11 @@ cap_drop: command: echo "hello world" ``` -### `configs` +## `configs` 仅用于 `Swarm mode`,详细内容请查看 [`Swarm mode`](../swarm_mode/) 一节。 -### `cgroup_parent` +## `cgroup_parent` 指定父 `cgroup` 组,意味着将继承该组的资源限制。 @@ -102,7 +102,7 @@ command: echo "hello world" cgroup_parent: cgroups_1 ``` -### `container_name` +## `container_name` 指定容器名称。默认将会使用 `项目名称_服务名称_序号` 这样的格式。 @@ -112,11 +112,11 @@ container_name: docker-web-container >注意: 指定容器名称后,该服务将无法进行扩展(scale),因为 Docker 不允许多个容器具有相同的名称。 -### `deploy` +## `deploy` 仅用于 `Swarm mode`,详细内容请查看 [`Swarm mode`](../swarm_mode/) 一节 -### `devices` +## `devices` 指定设备映射关系。 @@ -125,7 +125,7 @@ devices: - "/dev/ttyUSB1:/dev/ttyUSB0" ``` -### `depends_on` +## `depends_on` 解决容器的依赖、启动先后的问题。以下例子中会先启动 `redis` `db` 再启动 `web` @@ -148,7 +148,7 @@ services: >注意:`web` 服务不会等待 `redis` `db` 「完全启动」之后才启动。 -### `dns` +## `dns` 自定义 `DNS` 服务器。可以是一个值,也可以是一个列表。 @@ -160,7 +160,7 @@ dns: - 114.114.114.114 ``` -### `dns_search` +## `dns_search` 配置 `DNS` 搜索域。可以是一个值,也可以是一个列表。 @@ -172,7 +172,7 @@ dns_search: - domain2.example.com ``` -### `tmpfs` +## `tmpfs` 挂载一个 tmpfs 文件系统到容器。 @@ -183,7 +183,7 @@ tmpfs: - /tmp ``` -### `env_file` +## `env_file` 从文件中获取环境变量,可以为单独的文件路径或列表。 @@ -207,7 +207,7 @@ env_file: PROG_ENV=development ``` -### `environment` +## `environment` 设置环境变量。你可以使用数组或字典两种格式。 @@ -229,7 +229,7 @@ environment: y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF ``` -### `expose` +## `expose` 暴露端口,但不映射到宿主机,只被连接的服务访问。 @@ -241,7 +241,7 @@ expose: - "8000" ``` -### `external_links` +## `external_links` >注意:不建议使用该指令。 @@ -254,7 +254,7 @@ external_links: - project_db_1:postgresql ``` -### `extra_hosts` +## `extra_hosts` 类似 Docker 中的 `--add-host` 参数,指定额外的 host 名称映射信息。 @@ -271,7 +271,7 @@ extra_hosts: 52.1.157.61 dockerhub ``` -### `healthcheck` +## `healthcheck` 通过命令检查容器是否健康运行。 @@ -283,7 +283,7 @@ healthcheck: retries: 3 ``` -### `image` +## `image` 指定为镜像名称或镜像 ID。如果镜像在本地不存在,`Compose` 将会尝试拉取这个镜像。 @@ -293,7 +293,7 @@ image: orchardup/postgresql image: a4bc65fd ``` -### `labels` +## `labels` 为容器添加 Docker 元数据(metadata)信息。例如可以为容器添加辅助说明信息。 @@ -304,11 +304,11 @@ labels: com.startupteam.release: "rc3 for v1.0" ``` -### `links` +## `links` >注意:不推荐使用该指令。 -### `logging` +## `logging` 配置日志选项。 @@ -335,7 +335,7 @@ options: max-file: "10" ``` -### `network_mode` +## `network_mode` 设置网络模式。使用和 `docker run` 的 `--network` 参数一样的值。 @@ -347,7 +347,7 @@ network_mode: "service:[service name]" network_mode: "container:[container name/id]" ``` -### `networks` +## `networks` 配置容器连接的网络。 @@ -365,7 +365,7 @@ networks: other-network: ``` -### `pid` +## `pid` 跟主机系统共享进程命名空间。打开该选项的容器之间,以及容器和宿主机系统之间可以通过进程 ID 来相互访问和操作。 @@ -373,7 +373,7 @@ networks: pid: "host" ``` -### `ports` +## `ports` 暴露端口信息。 @@ -389,7 +389,7 @@ ports: *注意:当使用 `HOST:CONTAINER` 格式来映射端口时,如果你使用的容器端口小于 60 并且没放到引号里,可能会得到错误结果,因为 `YAML` 会自动解析 `xx:yy` 这种数字格式为 60 进制。为避免出现这种问题,建议数字串都采用引号包括起来的字符串格式。* -### `secrets` +## `secrets` 存储敏感数据,例如 `mysql` 服务密码。 @@ -412,7 +412,7 @@ secrets: external: true ``` -### `security_opt` +## `security_opt` 指定容器模板标签(label)机制的默认属性(用户、角色、类型、级别等)。例如配置标签的用户名和角色名。 @@ -422,7 +422,7 @@ security_opt: - label:role:ROLE ``` -### `stop_signal` +## `stop_signal` 设置另一个信号来停止容器。在默认情况下使用的是 SIGTERM 停止容器。 @@ -430,7 +430,7 @@ security_opt: stop_signal: SIGUSR1 ``` -### `sysctls` +## `sysctls` 配置容器内核参数。 @@ -444,7 +444,7 @@ sysctls: - net.ipv4.tcp_syncookies=0 ``` -### `ulimits` +## `ulimits` 指定容器的 ulimits 限制值。 @@ -458,7 +458,7 @@ sysctls: hard: 40000 ``` -### `volumes` +## `volumes` 数据卷所挂载路径设置。可以设置为宿主机路径(`HOST:CONTAINER`)或者数据卷名称(`VOLUME:CONTAINER`),并且可以设置访问模式 (`HOST:CONTAINER:ro`)。 @@ -486,7 +486,7 @@ volumes: mysql_data: ``` -### 其它指令 +## 其它指令 此外,还有包括 `domainname, entrypoint, hostname, ipc, mac_address, privileged, read_only, shm_size, restart, stdin_open, tty, user, working_dir` 等指令,基本跟 `docker run` 中对应参数的功能一致。 @@ -546,7 +546,7 @@ stdin_open: true tty: true ``` -### 读取变量 +## 读取变量 Compose 模板文件支持动态读取主机的系统环境变量和当前目录下的 `.env` 文件中的变量。 @@ -573,6 +573,6 @@ MONGO_VERSION=3.6 执行 `docker-compose up` 则会启动一个 `mongo:3.6` 镜像的容器。 -### 参考资料 +## 参考资料 * [官方文档](https://docs.docker.com/compose/compose-file/) diff --git a/compose/django.md b/compose/django.md index c0f9f45..2b52197 100644 --- a/compose/django.md +++ b/compose/django.md @@ -1,4 +1,4 @@ -## 使用 Django +# 使用 Django > 本小节内容适合 `Python` 开发人员阅读。 diff --git a/compose/install.md b/compose/install.md index 4a7ba47..b9625e9 100644 --- a/compose/install.md +++ b/compose/install.md @@ -1,4 +1,4 @@ -## 安装与卸载 +# 安装与卸载 `Compose` 支持 Linux、macOS、Windows 10 三大平台。 @@ -14,7 +14,7 @@ docker-compose version 1.24.1, build 4667896b Linux 系统请使用以下介绍的方法安装。 -### 二进制包 +## 二进制包 在 Linux 上的也安装十分简单,从 [官方 GitHub Release](https://github.com/docker/compose/releases) 处直接下载编译好的二进制文件即可。 @@ -26,7 +26,7 @@ $ sudo curl -L https://github.com/docker/compose/releases/download/1.24.1/docker $ sudo chmod +x /usr/local/bin/docker-compose ``` -### PIP 安装 +## PIP 安装 *注:* `x86_64` 架构的 Linux 建议按照上边的方法下载二进制包进行安装,如果您计算机的架构是 `ARM` (例如,树莓派),再使用 `pip` 安装。 @@ -47,13 +47,13 @@ Collecting docker-compose Successfully installed docker-compose cached-property requests texttable websocket-client docker-py dockerpty six enum34 backports.ssl-match-hostname ipaddress ``` -### bash 补全命令 +## bash 补全命令 ```bash $ curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose ``` -### 卸载 +## 卸载 如果是二进制包方式安装的,删除二进制文件即可。 diff --git a/compose/introduction.md b/compose/introduction.md index cde4aff..6777614 100644 --- a/compose/introduction.md +++ b/compose/introduction.md @@ -1,4 +1,4 @@ -## Compose 简介 +# Compose 简介 `Compose` 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,跟 `OpenStack` 中的 `Heat` 十分类似。 diff --git a/compose/rails.md b/compose/rails.md index 66db4a5..5222848 100644 --- a/compose/rails.md +++ b/compose/rails.md @@ -1,4 +1,4 @@ -## 使用 Rails +# 使用 Rails > 本小节内容适合 `Ruby` 开发人员阅读。 diff --git a/compose/usage.md b/compose/usage.md index 39cef0c..ec0479b 100644 --- a/compose/usage.md +++ b/compose/usage.md @@ -1,6 +1,6 @@ -## 使用 +# 使用 -### 术语 +## 术语 首先介绍几个术语。 @@ -10,13 +10,13 @@ 可见,一个项目可以由多个服务(容器)关联而成,`Compose` 面向项目进行管理。 -### 场景 +## 场景 最常见的项目是 web 网站,该项目应该包含 web 应用和缓存。 下面我们用 `Python` 来建立一个能够记录页面访问次数的 web 网站。 -#### web 应用 +### web 应用 新建文件夹,在该目录中编写 `app.py` 文件 @@ -36,7 +36,7 @@ if __name__ == "__main__": app.run(host="0.0.0.0", debug=True) ``` -#### Dockerfile +### Dockerfile 编写 `Dockerfile` 文件,内容为 @@ -48,7 +48,7 @@ RUN pip install redis flask CMD ["python", "app.py"] ``` -#### docker-compose.yml +### docker-compose.yml 编写 `docker-compose.yml` 文件,这个是 Compose 使用的主模板文件。 @@ -65,7 +65,7 @@ services: image: "redis:alpine" ``` -#### 运行 compose 项目 +### 运行 compose 项目 ```bash $ docker-compose up diff --git a/compose/wordpress.md b/compose/wordpress.md index 7188bb3..170e54d 100644 --- a/compose/wordpress.md +++ b/compose/wordpress.md @@ -1,14 +1,14 @@ -## 使用 WordPress +# 使用 WordPress > 本小节内容适合 `PHP` 开发人员阅读。 `Compose` 可以很便捷的让 `Wordpress` 运行在一个独立的环境中。 -### 创建空文件夹 +## 创建空文件夹 假设新建一个名为 `wordpress` 的文件夹,然后进入这个文件夹。 -### 创建 `docker-compose.yml` 文件 +## 创建 `docker-compose.yml` 文件 [`docker-compose.yml`](https://github.com/yeasy/docker_practice/blob/master/compose/demo/wordpress/docker-compose.yml) 文件将开启一个 `wordpress` 服务和一个独立的 `MySQL` 实例: @@ -46,6 +46,6 @@ volumes: db_data: ``` -### 构建并运行项目 +## 构建并运行项目 运行 `docker-compose up -d` Compose 就会拉取镜像再创建我们所需要的镜像,然后启动 `wordpress` 和数据库容器。 接着浏览器访问 `127.0.0.1:8000` 端口就能看到 `WordPress` 安装界面了。 diff --git a/image/manifest.md b/image/manifest.md index e77eb40..3783303 100644 --- a/image/manifest.md +++ b/image/manifest.md @@ -34,21 +34,7 @@ $ docker run -it --rm username/test 我们可以使用 `$ docker manifest inspect golang:alpine` 查看这个 `manifest` 列表的结构。 -由于该命令属于实验特性,必须设置如下 **环境变量** 之后才能使用: - -```bash -# Linux、macOS - -$ export DOCKER_CLI_EXPERIMENTAL=enabled - -# Windows - -$ set $env:DOCKER_CLI_EXPERIMENTAL=enabled -``` - -> 以上是设置环境变量的临时方法,若使环境变量永久生效请读者自行设置。 - -设置之后,执行结果如下 +> 该命令属于实验特性,请参考 [开启实验特性](../install/experimental) 一节。 ```bash $ docker manifest inspect golang:alpine diff --git a/install/centos.md b/install/centos.md index d0d2ec3..c368cae 100644 --- a/install/centos.md +++ b/install/centos.md @@ -1,14 +1,14 @@ -## CentOS 安装 Docker CE +# CentOS 安装 Docker CE >警告:切勿在没有配置 Docker YUM 源的情况下直接使用 yum 命令安装 Docker. -### 准备工作 +## 准备工作 -#### 系统要求 +### 系统要求 Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10。 CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 `overlay2` 存储层驱动)无法使用,并且部分功能可能不太稳定。 -#### 卸载旧版本 +### 卸载旧版本 旧版本的 Docker 称为 `docker` 或者 `docker-engine`,使用以下命令卸载旧版本: @@ -25,7 +25,7 @@ $ sudo yum remove docker \ docker-engine ``` -### 使用 yum 安装 +## 使用 yum 安装 执行以下命令安装依赖包: @@ -63,7 +63,7 @@ $ sudo yum-config-manager --enable docker-ce-test $ sudo yum-config-manager --enable docker-ce-nightly ``` -#### 安装 Docker CE +### 安装 Docker CE 更新 `yum` 软件源缓存,并安装 `docker-ce`。 @@ -72,7 +72,7 @@ $ sudo yum makecache fast $ sudo yum install docker-ce ``` -### 使用脚本自动安装 +## 使用脚本自动安装 在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,CentOS 系统上可以使用这套脚本安装,另外可以通过 `--mirror` 选项使用国内源进行安装: @@ -84,14 +84,14 @@ $ sudo sh get-docker.sh --mirror Aliyun 执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker CE 的稳定(stable)版本安装在系统中。 -### 启动 Docker CE +## 启动 Docker CE ```bash $ sudo systemctl enable docker $ sudo systemctl start docker ``` -### 建立 docker 用户组 +## 建立 docker 用户组 默认情况下,`docker` 命令会使用 [Unix socket](https://en.wikipedia.org/wiki/Unix_domain_socket) 与 Docker 引擎通讯。而只有 `root` 用户和 `docker` 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 `root` 用户。因此,更好地做法是将需要使用 `docker` 的用户加入 `docker` 用户组。 @@ -109,7 +109,7 @@ $ sudo usermod -aG docker $USER 退出当前终端并重新登录,进行如下测试。 -### 测试 Docker 是否安装正确 +## 测试 Docker 是否安装正确 ```bash $ docker run hello-world @@ -144,11 +144,11 @@ For more examples and ideas, visit: 若能正常输出以上信息,则说明安装成功。 -### 镜像加速 +## 镜像加速 如果在使用过程中发现拉取 Docker 镜像十分缓慢,可以配置 Docker [国内镜像加速](mirror.md)。 -### 添加内核参数 +## 添加内核参数 如果在 CentOS 使用 Docker CE 看到下面的这些警告信息: @@ -172,6 +172,6 @@ EOF $ sudo sysctl -p ``` -### 参考文档 +## 参考文档 * [Docker 官方 CentOS 安装文档](https://docs.docker.com/install/linux/docker-ce/centos/)。 diff --git a/install/debian.md b/install/debian.md index 3d38b1f..28c88a8 100644 --- a/install/debian.md +++ b/install/debian.md @@ -1,17 +1,17 @@ -## Debian 安装 Docker CE +# Debian 安装 Docker CE >警告:切勿在没有配置 Docker APT 源的情况下直接使用 apt 命令安装 Docker. -### 准备工作 +## 准备工作 -#### 系统要求 +### 系统要求 Docker CE 支持以下版本的 [Debian](https://www.debian.org/intro/about) 操作系统: * Buster 10 * Stretch 9 -#### 卸载旧版本 +### 卸载旧版本 旧版本的 Docker 称为 `docker` 或者 `docker-engine`,使用以下命令卸载旧版本: @@ -21,7 +21,7 @@ $ sudo apt-get remove docker \ docker.io ``` -### 使用 APT 安装 +## 使用 APT 安装 由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。 @@ -66,7 +66,7 @@ $ sudo add-apt-repository \ >以上命令会添加稳定版本的 Docker CE APT 源,如果需要测试或每日构建版本的 Docker CE 请将 stable 改为 test 或者 nightly。 -#### 安装 Docker CE +### 安装 Docker CE 更新 apt 软件包缓存,并安装 `docker-ce`。 @@ -76,7 +76,7 @@ $ sudo apt-get update $ sudo apt-get install docker-ce ``` -### 使用脚本自动安装 +## 使用脚本自动安装 在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Debian 系统上可以使用这套脚本安装,另外可以通过 `--mirror` 选项使用国内源进行安装: @@ -88,14 +88,14 @@ $ sudo sh get-docker.sh --mirror Aliyun 执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker CE 的稳定(stable)版本安装在系统中。 -### 启动 Docker CE +## 启动 Docker CE ```bash $ sudo systemctl enable docker $ sudo systemctl start docker ``` -### 建立 docker 用户组 +## 建立 docker 用户组 默认情况下,`docker` 命令会使用 [Unix socket](https://en.wikipedia.org/wiki/Unix_domain_socket) 与 Docker 引擎通讯。而只有 `root` 用户和 `docker` 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 `root` 用户。因此,更好地做法是将需要使用 `docker` 的用户加入 `docker` 用户组。 @@ -113,7 +113,7 @@ $ sudo usermod -aG docker $USER 退出当前终端并重新登录,进行如下测试。 -### 测试 Docker 是否安装正确 +## 测试 Docker 是否安装正确 ```bash $ docker run hello-world @@ -148,10 +148,10 @@ For more examples and ideas, visit: 若能正常输出以上信息,则说明安装成功。 -### 镜像加速 +## 镜像加速 如果在使用过程中发现拉取 Docker 镜像十分缓慢,可以配置 Docker [国内镜像加速](mirror.md)。 -### 参考文档 +## 参考文档 * [Docker 官方 Debian 安装文档](https://docs.docker.com/install/linux/docker-ce/debian/) diff --git a/install/fedora.md b/install/fedora.md index dfd4d4f..05d0081 100644 --- a/install/fedora.md +++ b/install/fedora.md @@ -1,10 +1,10 @@ -## Fedora 安装 Docker CE +# Fedora 安装 Docker CE >警告:切勿在没有配置 Docker dnf 源的情况下直接使用 dnf 命令安装 Docker. -### 准备工作 +## 准备工作 -#### 系统要求 +### 系统要求 Docker CE 支持以下版本的 [Fedora](https://fedoraproject.org/) 操作系统: @@ -12,7 +12,7 @@ Docker CE 支持以下版本的 [Fedora](https://fedoraproject.org/) 操作系 * 29 * 30 -#### 卸载旧版本 +### 卸载旧版本 旧版本的 Docker 称为 `docker` 或者 `docker-engine`,使用以下命令卸载旧版本: @@ -29,7 +29,7 @@ $ sudo dnf remove docker \ docker-engine ``` -### 使用 dnf 安装 +## 使用 dnf 安装 执行以下命令安装依赖包: @@ -71,7 +71,7 @@ $ sudo dnf config-manager --set-enabled docker-ce-nightly $ sudo dnf config-manager --set-disabled docker-ce-test ``` -#### 安装 Docker CE +### 安装 Docker CE 更新 `dnf` 软件源缓存,并安装 `docker-ce`。 @@ -90,7 +90,7 @@ docker-ce.x86_64 18.06.1.ce-3.fc28 docker-ce-stable $ sudo dnf -y install docker-ce-18.06.1.ce ``` -### 使用脚本自动安装 +## 使用脚本自动安装 在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Debian 系统上可以使用这套脚本安装,另外可以通过 `--mirror` 选项使用国内源进行安装: @@ -102,14 +102,14 @@ $ sudo sh get-docker.sh --mirror Aliyun 执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker CE 最新稳定(stable)版本安装在系统中。 -### 启动 Docker CE +## 启动 Docker CE ```bash $ sudo systemctl enable docker $ sudo systemctl start docker ``` -### 建立 docker 用户组 +## 建立 docker 用户组 默认情况下,`docker` 命令会使用 [Unix socket](https://en.wikipedia.org/wiki/Unix_domain_socket) 与 Docker 引擎通讯。而只有 `root` 用户和 `docker` 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 `root` 用户。因此,更好地做法是将需要使用 `docker` 的用户加入 `docker` 用户组。 @@ -127,7 +127,7 @@ $ sudo usermod -aG docker $USER 退出当前终端并重新登录,进行如下测试。 -### 测试 Docker 是否安装正确 +## 测试 Docker 是否安装正确 ```bash $ docker run hello-world @@ -162,10 +162,10 @@ For more examples and ideas, visit: 若能正常输出以上信息,则说明安装成功。 -### 镜像加速 +## 镜像加速 如果在使用过程中发现拉取 Docker 镜像十分缓慢,可以配置 Docker [国内镜像加速](mirror.md)。 -### 参考文档 +## 参考文档 * [Docker 官方 Fedora 安装文档](https://docs.docker.com/install/linux/docker-ce/fedora)。 diff --git a/install/mac.md b/install/mac.md index 52513e9..80a385d 100644 --- a/install/mac.md +++ b/install/mac.md @@ -1,12 +1,12 @@ -## macOS 安装 Docker Desktop CE +# macOS 安装 Docker Desktop CE -### 系统要求 +## 系统要求 [Docker Desktop for Mac](https://docs.docker.com/docker-for-mac/) 要求系统最低为 macOS Sierra 10.12。 -### 安装 +## 安装 -#### 使用 Homebrew 安装 +### 使用 Homebrew 安装 [Homebrew](https://brew.sh/) 的 [Cask](https://caskroom.github.io/) 已经支持 Docker Desktop for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装: @@ -14,7 +14,7 @@ $ brew cask install docker ``` -#### 手动下载安装 +### 手动下载安装 如果需要手动下载,请点击以下链接下载 [Stable](https://download.docker.com/mac/stable/Docker.dmg) 或 [Edge](https://download.docker.com/mac/edge/Docker.dmg) 版本的 Docker Desktop for Mac。 @@ -22,7 +22,7 @@ $ brew cask install docker ![](_images/install-mac-dmg.png) -### 运行 +## 运行 从应用中找到 Docker 图标并点击运行。 @@ -68,10 +68,10 @@ $ docker stop webserver $ docker rm webserver ``` -### 镜像加速 +## 镜像加速 如果在使用过程中发现拉取 Docker 镜像十分缓慢,可以配置 Docker [国内镜像加速](mirror.md)。 -### 参考链接 +## 参考链接 * [官方文档](https://docs.docker.com/docker-for-mac/install/) diff --git a/install/mirror.md b/install/mirror.md index 3b7e25e..b999b05 100644 --- a/install/mirror.md +++ b/install/mirror.md @@ -1,4 +1,4 @@ -## 镜像加速器 +# 镜像加速器 国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。国内很多云服务商都提供了国内加速器服务,例如: @@ -12,7 +12,7 @@ 本节我们以 Azure 中国镜像 `https://dockerhub.azk8s.cn` 为例进行介绍。 -### Ubuntu 16.04+、Debian 8+、CentOS 7 +## Ubuntu 16.04+、Debian 8+、CentOS 7 对于使用 [systemd](https://www.freedesktop.org/wiki/Software/systemd/) 的系统,请在 `/etc/docker/daemon.json` 中写入如下内容(如果文件不存在请新建该文件) @@ -36,7 +36,7 @@ $ sudo systemctl restart docker >注意:如果您之前查看旧教程,修改了 `docker.service` 文件内容,请去掉您添加的内容(`--registry-mirror=https://dockerhub.azk8s.cn`)。 -### Windows 10 +## Windows 10 对于使用 `Windows 10` 的用户,在任务栏托盘 Docker 图标内右键菜单选择 `Settings`,打开配置窗口后在左侧导航菜单选择 `Docker Engine`,在右侧像下边一样编辑 json 文件,之后点击 `Apply & Restart` 保存后 Docker 就会重启并应用配置的镜像地址了。 @@ -49,7 +49,7 @@ $ sudo systemctl restart docker } ``` -### macOS +## macOS 对于使用 macOS 的用户,在任务栏点击 Docker Desktop 应用图标 -> `Perferences`,在左侧导航菜单选择 `Docker Engine`,在右侧像下边一样编辑 json 文件。修改完成之后,点击 `Apply & Restart` 按钮,Docker 就会重启并应用配置的镜像地址了。 @@ -62,7 +62,7 @@ $ sudo systemctl restart docker } ``` -### 检查加速器是否生效 +## 检查加速器是否生效 执行 `$ docker info`,如果从结果中看到了如下内容,说明配置成功。 @@ -71,7 +71,7 @@ Registry Mirrors: https://dockerhub.azk8s.cn/ ``` -### gcr.io 镜像 +## gcr.io 镜像 国内无法直接获取 `gcr.io/*` 镜像,我们可以将 `gcr.io//:` 替换为 `gcr.azk8s.cn//:` ,例如 diff --git a/install/raspberry-pi.md b/install/raspberry-pi.md index 5d04de4..36d48c8 100644 --- a/install/raspberry-pi.md +++ b/install/raspberry-pi.md @@ -1,8 +1,8 @@ -## 树莓派卡片电脑安装 Docker CE +# 树莓派卡片电脑安装 Docker CE >警告:切勿在没有配置 Docker APT 源的情况下直接使用 apt 命令安装 Docker. -### 系统要求 +## 系统要求 Docker CE 不仅支持 `x86_64` 架构的计算机,同时也支持 `ARM` 架构的计算机,本小节内容以树莓派单片电脑为例讲解 `ARM` 架构安装 Docker CE。 @@ -12,7 +12,7 @@ Docker CE 支持以下版本的 [Raspbian](https://www.raspberrypi.org/downloads *注:* `Raspbian` 是树莓派的开发与维护机构 [树莓派基金会](http://www.raspberrypi.org/) 推荐用于树莓派的首选系统,其基于 `Debian`。 -### 使用 APT 安装 +## 使用 APT 安装 由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。 @@ -58,7 +58,7 @@ $ sudo add-apt-repository \ >以上命令会添加稳定版本的 Docker CE APT 源,如果需要测试或每日构建版本的 Docker CE 请将 stable 改为 test 或者 nightly。 -#### 安装 Docker CE +### 安装 Docker CE 更新 apt 软件包缓存,并安装 `docker-ce`。 @@ -68,7 +68,7 @@ $ sudo apt-get update $ sudo apt-get install docker-ce ``` -### 使用脚本自动安装 +## 使用脚本自动安装 在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Raspbian 系统上可以使用这套脚本安装,另外可以通过 `--mirror` 选项使用国内源进行安装: @@ -80,14 +80,14 @@ $ sudo sh get-docker.sh --mirror Aliyun 执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker CE 的稳定(stable)版本安装在系统中。 -### 启动 Docker CE +## 启动 Docker CE ```bash $ sudo systemctl enable docker $ sudo systemctl start docker ``` -### 建立 docker 用户组 +## 建立 docker 用户组 默认情况下,`docker` 命令会使用 [Unix socket](https://en.wikipedia.org/wiki/Unix_domain_socket) 与 Docker 引擎通讯。而只有 `root` 用户和 `docker` 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 `root` 用户。因此,更好地做法是将需要使用 `docker` 的用户加入 `docker` 用户组。 @@ -105,7 +105,7 @@ $ sudo usermod -aG docker $USER 退出当前终端并重新登录,进行如下测试。 -### 测试 Docker 是否安装正确 +## 测试 Docker 是否安装正确 ```bash $ docker run arm32v7/hello-world @@ -142,6 +142,6 @@ For more examples and ideas, visit: *注意:* ARM 平台不能使用 `x86` 镜像,查看 Raspbian 可使用镜像请访问 [arm32v7](https://hub.docker.com/u/arm32v7/)。 -### 镜像加速 +## 镜像加速 如果在使用过程中发现拉取 Docker 镜像十分缓慢,可以配置 Docker [国内镜像加速](mirror.md)。 diff --git a/install/ubuntu.md b/install/ubuntu.md index 9cd599d..2c55165 100644 --- a/install/ubuntu.md +++ b/install/ubuntu.md @@ -1,10 +1,10 @@ -## Ubuntu 安装 Docker CE +# Ubuntu 安装 Docker CE >警告:切勿在没有配置 Docker APT 源的情况下直接使用 apt 命令安装 Docker. -### 准备工作 +## 准备工作 -#### 系统要求 +### 系统要求 Docker CE 支持以下版本的 [Ubuntu](https://www.ubuntu.com/server) 操作系统: @@ -15,7 +15,7 @@ Docker CE 支持以下版本的 [Ubuntu](https://www.ubuntu.com/server) 操作 Docker CE 可以安装在 64 位的 x86 平台或 ARM 平台上。Ubuntu 发行版中,LTS(Long-Term-Support)长期支持版本,会获得 5 年的升级维护支持,这样的版本会更稳定,因此在生产环境中推荐使用 LTS 版本。 -#### 卸载旧版本 +### 卸载旧版本 旧版本的 Docker 称为 `docker` 或者 `docker-engine`,使用以下命令卸载旧版本: @@ -25,7 +25,7 @@ $ sudo apt-get remove docker \ docker.io ``` -### 使用 APT 安装 +## 使用 APT 安装 由于 `apt` 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。 @@ -69,7 +69,7 @@ $ sudo add-apt-repository \ >以上命令会添加稳定版本的 Docker CE APT 镜像源,如果需要测试或每日构建版本的 Docker CE 请将 stable 改为 test 或者 nightly。 -#### 安装 Docker CE +### 安装 Docker CE 更新 apt 软件包缓存,并安装 `docker-ce`: @@ -79,7 +79,7 @@ $ sudo apt-get update $ sudo apt-get install docker-ce ``` -### 使用脚本自动安装 +## 使用脚本自动安装 在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Ubuntu 系统上可以使用这套脚本安装,另外可以通过 `--mirror` 选项使用国内源进行安装: @@ -91,14 +91,14 @@ $ sudo sh get-docker.sh --mirror Aliyun 执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker CE 的稳定(stable)版本安装在系统中。 -### 启动 Docker CE +## 启动 Docker CE ```bash $ sudo systemctl enable docker $ sudo systemctl start docker ``` -### 建立 docker 用户组 +## 建立 docker 用户组 默认情况下,`docker` 命令会使用 [Unix socket](https://en.wikipedia.org/wiki/Unix_domain_socket) 与 Docker 引擎通讯。而只有 `root` 用户和 `docker` 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 `root` 用户。因此,更好地做法是将需要使用 `docker` 的用户加入 `docker` 用户组。 @@ -116,7 +116,7 @@ $ sudo usermod -aG docker $USER 退出当前终端并重新登录,进行如下测试。 -### 测试 Docker 是否安装正确 +## 测试 Docker 是否安装正确 ```bash $ docker run hello-world @@ -151,10 +151,10 @@ For more examples and ideas, visit: 若能正常输出以上信息,则说明安装成功。 -### 镜像加速 +## 镜像加速 如果在使用过程中发现拉取 Docker 镜像十分缓慢,可以配置 Docker [国内镜像加速](mirror.md)。 -### 参考文档 +## 参考文档 * [Docker 官方 Ubuntu 安装文档](https://docs.docker.com/install/linux/docker-ce/ubuntu/) diff --git a/install/windows.md b/install/windows.md index c7e3876..0286c28 100644 --- a/install/windows.md +++ b/install/windows.md @@ -1,16 +1,16 @@ -## Windows 10 安装 Docker Desktop CE +# Windows 10 安装 Docker Desktop CE -### 系统要求 +## 系统要求 [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/install/) 支持 64 位版本的 Windows 10 Pro,且必须开启 Hyper-V。 -### 安装 +## 安装 点击以下链接下载 [Stable](https://download.docker.com/win/stable/Docker%20Desktop%20Installer.exe) 或 [Edge](https://download.docker.com/win/edge/Docker%20Desktop%20Installer.exe) 版本的 Docker Desktop for Windows。 下载好之后双击 `Docker Desktop Installer.exe` 开始安装。 -### 运行 +## 运行 在 Windows 搜索栏输入 Docker 点击 Docker for Windows 开始运行。 @@ -24,10 +24,10 @@ Docker CE 启动之后会在 Windows 任务栏出现鲸鱼图标。 ![](_images/install-win-success-popup-cloud.png) -### 镜像加速 +## 镜像加速 如果在使用过程中发现拉取 Docker 镜像十分缓慢,可以配置 Docker [国内镜像加速](mirror.md)。 -### 参考链接 +## 参考链接 * [官方文档](https://docs.docker.com/docker-for-windows/install/) diff --git a/repository/dockerhub.md b/repository/dockerhub.md index 7ed35aa..1ea7bdd 100644 --- a/repository/dockerhub.md +++ b/repository/dockerhub.md @@ -1,18 +1,18 @@ -## Docker Hub +# Docker Hub 目前 Docker 官方维护了一个公共仓库 [Docker Hub](https://hub.docker.com/),其中已经包括了数量超过 [2,650,000](https://hub.docker.com/search/?type=image) 的镜像。大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。 -### 注册 +## 注册 你可以在 https://hub.docker.com 免费注册一个 Docker 账号。 -### 登录 +## 登录 可以通过执行 `docker login` 命令交互式的输入用户名及密码来完成在命令行界面登录 Docker Hub。 你可以通过 `docker logout` 退出登录。 -### 拉取镜像 +## 拉取镜像 你可以通过 `docker search` 命令来查找官方仓库中的镜像,并利用 `docker pull` 命令来将它下载到本地。 @@ -49,7 +49,7 @@ Pulling repository centos 7064731afe90: Download complete ``` -### 推送镜像 +## 推送镜像 用户也可以在登录后通过 `docker push` 命令来将自己的镜像推送到 Docker Hub。 @@ -72,7 +72,7 @@ NAME DESCRIPTION STARS username/ubuntu ``` -### 自动构建 +## 自动构建 自动构建(Automated Builds)功能对于需要经常升级镜像内程序来说,十分方便。 diff --git a/repository/nexus3_registry.md b/repository/nexus3_registry.md index 45a6ae6..479e644 100644 --- a/repository/nexus3_registry.md +++ b/repository/nexus3_registry.md @@ -1,8 +1,8 @@ -## Nexus3.x 的私有仓库 +# Nexus3.x 的私有仓库 使用 Docker 官方的 Registry 创建的仓库面临一些维护问题。比如某些镜像删除以后空间默认是不会回收的,需要一些命令去回收空间然后重启 Registry 程序。在企业中把内部的一些工具包放入 Nexus 中是比较常见的做法,最新版本 `Nexus3.x` 全面支持 Docker 的私有镜像。所以使用 [`Nexus3.x`](https://www.sonatype.com/download-oss-sonatype/) 一个软件来管理 `Docker` , `Maven` , `Yum` , `PyPI` 等是一个明智的选择。 -### 启动 Nexus 容器 +## 启动 Nexus 容器 ```bash $ docker run -d --name nexus3 --restart=always \ @@ -15,7 +15,7 @@ $ docker run -d --name nexus3 --restart=always \ 第一次启动 Nexus 的默认帐号是 `admin` 密码是 `admin123` 登录以后点击页面上方的齿轮按钮进行设置。 -### 创建仓库 +## 创建仓库 创建一个私有仓库的方法: `Repository->Repositories` 点击右边菜单 `Create repository` 选择 `docker (hosted)` @@ -26,7 +26,7 @@ $ docker run -d --name nexus3 --restart=always \ 其它的仓库创建方法请各位自己摸索,还可以创建一个 docker (proxy) 类型的仓库链接到 DockerHub 上。再创建一个 docker (group) 类型的仓库把刚才的 hosted 与 proxy 添加在一起。主机在访问的时候默认下载私有仓库中的镜像,如果没有将链接到 DockerHub 中下载并缓存到 Nexus 中。 -### 添加访问权限 +## 添加访问权限 菜单 `Security->Realms` 把 Docker Bearer Token Realm 移到右边的框中保存。 @@ -34,7 +34,7 @@ $ docker run -d --name nexus3 --restart=always \ 添加用户:菜单 `Security->Users`->`Create local user` 在 `Roles` 选项中选中刚才创建的规则移动到右边的窗口保存。 -### NGINX 加密代理 +## NGINX 加密代理 证书的生成请参见 [`私有仓库高级配置`](registry_auth.md) 里面证书生成一节。 @@ -89,7 +89,7 @@ server { } ``` -### Docker 主机访问镜像仓库 +## Docker 主机访问镜像仓库 如果不启用 SSL 加密可以通过前面章节的方法添加信任地址到 Docker 的配置文件中然后重启 Docker diff --git a/repository/registry.md b/repository/registry.md index bacc3a1..433262a 100644 --- a/repository/registry.md +++ b/repository/registry.md @@ -1,4 +1,4 @@ -## 私有仓库 +# 私有仓库 有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。 @@ -6,9 +6,9 @@ [`docker-registry`](https://docs.docker.com/registry/) 是官方提供的工具,可以用于构建私有的镜像仓库。本文内容基于 [`docker-registry`](https://github.com/docker/distribution) v2.x 版本。 -### 安装运行 docker-registry +## 安装运行 docker-registry -#### 容器运行 +### 容器运行 你可以通过获取官方 `registry` 镜像来运行。 @@ -25,7 +25,7 @@ $ docker run -d \ registry ``` -### 在私有仓库上传、搜索、下载镜像 +## 在私有仓库上传、搜索、下载镜像 创建好私有仓库之后,就可以使用 `docker tag` 来标记一个镜像,然后推送它到仓库。例如私有仓库地址为 `127.0.0.1:5000`。 @@ -91,13 +91,13 @@ REPOSITORY TAG IMAGE ID CREAT 127.0.0.1:5000/ubuntu:latest latest ba5877dc9bec 6 weeks ago 192.7 MB ``` -### 注意事项 +## 注意事项 如果你不想使用 `127.0.0.1:5000` 作为仓库地址,比如想让本网段的其他主机也能把镜像推送到私有仓库。你就得把例如 `192.168.199.100:5000` 这样的内网地址作为私有仓库地址,这时你会发现无法成功推送镜像。 这是因为 Docker 默认不允许非 `HTTPS` 方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制,或者查看下一节配置能够通过 `HTTPS` 访问的私有仓库。 -#### Ubuntu 16.04+, Debian 8+, centos 7 +### Ubuntu 16.04+, Debian 8+, centos 7 对于使用 `systemd` 的系统,请在 `/etc/docker/daemon.json` 中写入如下内容(如果文件不存在请新建该文件) @@ -114,6 +114,6 @@ REPOSITORY TAG IMAGE ID CREAT >注意:该文件必须符合 `json` 规范,否则 Docker 将不能启动。 -### 其他 +## 其他 对于 Docker Desktop for Windows 、 Docker Desktop for Mac 在设置中的 `Docker Engine` 中进行编辑 ,增加和上边一样的字符串即可。 diff --git a/repository/registry_auth.md b/repository/registry_auth.md index 9b50544..68fda83 100644 --- a/repository/registry_auth.md +++ b/repository/registry_auth.md @@ -1,10 +1,10 @@ -## 私有仓库高级配置 +# 私有仓库高级配置 上一节我们搭建了一个具有基础功能的私有仓库,本小节我们来使用 `Docker Compose` 搭建一个拥有权限认证、TLS 的私有仓库。 新建一个文件夹,以下步骤均在该文件夹中进行。 -### 准备站点证书 +## 准备站点证书 如果你拥有一个域名,国内各大云服务商均提供免费的站点证书。你也可以使用 `openssl` 自行签发证书。 @@ -82,7 +82,7 @@ $ openssl x509 -req -days 750 -in "site.csr" -sha256 \ 新建 `ssl` 文件夹并将 `docker.domain.com.key` `docker.domain.com.crt` `root-ca.crt` 这三个文件移入,删除其他文件。 -### 配置私有仓库 +## 配置私有仓库 私有仓库默认的配置文件位于 `/etc/docker/registry/config.yml`,我们先在本地编辑 `config.yml`,之后挂载到容器中。 @@ -124,7 +124,7 @@ health: threshold: 3 ``` -### 生成 http 认证文件 +## 生成 http 认证文件 ```bash $ mkdir auth @@ -137,7 +137,7 @@ $ docker run --rm \ > 将上面的 `username` `password` 替换为你自己的用户名和密码。 -### 编辑 `docker-compose.yml` +## 编辑 `docker-compose.yml` ```yaml version: '3' @@ -155,7 +155,7 @@ volumes: registry-data: ``` -### 修改 hosts +## 修改 hosts 编辑 `/etc/hosts` @@ -163,7 +163,7 @@ volumes: 127.0.0.1 docker.domain.com ``` -### 启动 +## 启动 ```bash $ docker-compose up -d @@ -171,7 +171,7 @@ $ docker-compose up -d 这样我们就搭建好了一个具有权限认证、TLS 的私有仓库,接下来我们测试其功能是否正常。 -### 测试私有仓库功能 +## 测试私有仓库功能 由于自行签发的 CA 根证书不被系统信任,所以我们需要将 CA 根证书 `ssl/root-ca.crt` 移入 `/etc/docker/certs.d/docker.domain.com` 文件夹中。 @@ -213,6 +213,6 @@ no basic auth credentials 发现会提示没有登录,不能将镜像推送到私有仓库中。 -### 注意事项 +## 注意事项 如果你本机占用了 `443` 端口,你可以配置 [Nginx 代理](https://docs.docker.com/registry/recipes/nginx/),这里不再赘述。 diff --git a/underly/arch.md b/underly/arch.md index 508ce5d..b4366df 100644 --- a/underly/arch.md +++ b/underly/arch.md @@ -1,4 +1,4 @@ -## 基本架构 +# 基本架构 Docker 采用了 `C/S` 架构,包括客户端和服务端。Docker 守护进程 (`Daemon`)作为服务端接受来自客户端的请求,并处理这些请求(创建、运行、分发容器)。 diff --git a/underly/cgroups.md b/underly/cgroups.md index 6ccd703..e7d5fd8 100644 --- a/underly/cgroups.md +++ b/underly/cgroups.md @@ -1,4 +1,4 @@ -## 控制组 +# 控制组 控制组([cgroups](https://en.wikipedia.org/wiki/Cgroups))是 Linux 内核的一个特性,主要用来对共享资源进行隔离、限制、审计等。只有能控制分配到容器的资源,才能避免当多个容器同时运行时的对系统资源的竞争。 diff --git a/underly/container_format.md b/underly/container_format.md index d634e30..94944a8 100644 --- a/underly/container_format.md +++ b/underly/container_format.md @@ -1,4 +1,4 @@ -## 容器格式 +# 容器格式 最初,Docker 采用了 `LXC` 中的容器格式。从 0.7 版本以后开始去除 LXC,转而使用自行开发的 [libcontainer](https://github.com/docker/libcontainer),从 1.11 开始,则进一步演进为使用 [runC](https://github.com/opencontainers/runc) 和 [containerd](https://containerd.tools/)。 diff --git a/underly/namespace.md b/underly/namespace.md index b4226af..ec66db2 100644 --- a/underly/namespace.md +++ b/underly/namespace.md @@ -1,22 +1,22 @@ -## 命名空间 +# 命名空间 命名空间是 Linux 内核一个强大的特性。每个容器都有自己单独的命名空间,运行在其中的应用都像是在独立的操作系统中运行一样。命名空间保证了容器之间彼此互不影响。 -### pid 命名空间 +## pid 命名空间 不同用户的进程就是通过 pid 命名空间隔离开的,且不同命名空间中可以有相同 pid。所有的 LXC 进程在 Docker 中的父进程为 Docker 进程,每个 LXC 进程具有不同的命名空间。同时由于允许嵌套,因此可以很方便的实现嵌套的 Docker 容器。 -### net 命名空间 +## net 命名空间 有了 pid 命名空间,每个命名空间中的 pid 能够相互隔离,但是网络端口还是共享 host 的端口。网络隔离是通过 net 命名空间实现的, 每个 net 命名空间有独立的 网络设备,IP 地址,路由表,/proc/net 目录。这样每个容器的网络就能隔离开来。Docker 默认采用 veth 的方式,将容器中的虚拟网卡同 host 上的一 个Docker 网桥 docker0 连接在一起。 -### ipc 命名空间 +## ipc 命名空间 容器中进程交互还是采用了 Linux 常见的进程间交互方法(interprocess communication - IPC), 包括信号量、消息队列和共享内存等。然而同 VM 不同的是,容器的进程间交互实际上还是 host 上具有相同 pid 命名空间中的进程间交互,因此需要在 IPC 资源申请时加入命名空间信息,每个 IPC 资源有一个唯一的 32 位 id。 -### mnt 命名空间 +## mnt 命名空间 类似 chroot,将一个进程放到一个特定的目录执行。mnt 命名空间允许不同命名空间的进程看到的文件结构不同,这样每个命名空间 中的进程所看到的文件目录就被隔离开了。同 chroot 不同,每个命名空间中的容器在 /proc/mounts 的信息只包含所在命名空间的 mount point。 -### uts 命名空间 +## uts 命名空间 UTS("UNIX Time-sharing System") 命名空间允许每个容器拥有独立的 hostname 和 domain name, 使其在网络上可以被视作一个独立的节点而非 主机上的一个进程。 -### user 命名空间 +## user 命名空间 每个容器可以有不同的用户和组 id, 也就是说可以在容器内用容器内部的用户执行程序而非主机上的用户。 *注:更多关于 Linux 上命名空间的信息,请阅读 [这篇文章](https://blog.scottlowe.org/2013/09/04/introducing-linux-network-namespaces/)。 diff --git a/underly/network.md b/underly/network.md index 4a0c200..cec496c 100644 --- a/underly/network.md +++ b/underly/network.md @@ -1,8 +1,8 @@ -## Docker 网络实现 +# Docker 网络实现 Docker 的网络实现其实就是利用了 Linux 上的网络命名空间和虚拟网络设备(特别是 veth pair)。建议先熟悉了解这两部分的基本概念再阅读本章。 -### 基本原理 +## 基本原理 首先,要实现网络通信,机器需要至少一个网络接口(物理接口或虚拟接口)来收发数据包;此外,如果不同子网之间要进行通信,需要路由机制。 Docker 中的网络接口默认都是虚拟的接口。虚拟接口的优势之一是转发效率较高。 @@ -10,7 +10,7 @@ Linux 通过在内核中进行数据复制来实现虚拟接口之间的数据 Docker 容器网络就利用了这项技术。它在本地主机和容器内分别创建一个虚拟接口,并让它们彼此连通(这样的一对接口叫做 `veth pair`)。 -### 创建网络参数 +## 创建网络参数 Docker 创建一个容器的时候,会执行如下操作: * 创建一对虚拟接口,分别放到本地主机和新容器中; * 本地主机一端桥接到默认的 docker0 或指定网桥上,并具有一个唯一的名字,如 veth65f9; @@ -25,7 +25,7 @@ Docker 创建一个容器的时候,会执行如下操作: * `--net=container:NAME_or_ID` 让 Docker 将新建容器的进程放到一个已存在容器的网络栈中,新容器进程有自己的文件系统、进程列表和资源限制,但会和已存在的容器共享 IP 地址和端口等网络资源,两者进程可以直接通过 `lo` 环回接口通信。 * `--net=none` 让 Docker 将新容器放到隔离的网络栈中,但是不进行网络配置。之后,用户可以自己进行配置。 -### 网络配置细节 +## 网络配置细节 用户使用 `--net=none` 后,可以自行配置网络,让容器达到跟平常一样具有访问网络的权限。通过这个过程,可以了解 Docker 配置网络的细节。 首先,启动一个 `/bin/bash` 容器,指定 `--net=none` 参数。 diff --git a/underly/ufs.md b/underly/ufs.md index d9251a2..78d0bd5 100644 --- a/underly/ufs.md +++ b/underly/ufs.md @@ -1,4 +1,4 @@ -## 联合文件系统 +# 联合文件系统 联合文件系统([UnionFS](https://en.wikipedia.org/wiki/UnionFS))是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。