Update format

Signed-off-by: Kang Huaishuai <khs1994@khs1994.com>
This commit is contained in:
Kang Huaishuai 2021-03-07 15:29:05 +08:00
parent 5ebd6fb6f8
commit ea00e0d82a
No known key found for this signature in database
GPG Key ID: 5E515022F565DA09
27 changed files with 39 additions and 15 deletions

View File

@ -5,6 +5,10 @@ on:
name: CI name: CI
defaults:
run:
shell: bash --noprofile --norc -exo pipefail {0}
jobs: jobs:
build: build:
name: Build name: Build
@ -39,7 +43,10 @@ jobs:
docker run -d --rm -p 4000:80 dockerpracticesig/docker_practice docker run -d --rm -p 4000:80 dockerpracticesig/docker_practice
sleep 5 sleep 5
echo "::group::Test"
curl 127.0.0.1:4000 curl 127.0.0.1:4000
echo "::endgroup::"
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
docker push dockerpracticesig/docker_practice docker push dockerpracticesig/docker_practice
@ -139,9 +146,13 @@ jobs:
docker push dockerpracticesig/docker_practice:vuepress docker push dockerpracticesig/docker_practice:vuepress
docker run -it --rm -d -p 4000:80 dockerpracticesig/docker_practice:vuepress docker run -it --rm -d -p 4001:80 dockerpracticesig/docker_practice:vuepress
curl 127.0.0.1:4000 sleep 5
echo "::group::Test"
curl 127.0.0.1:4001
echo "::endgroup::"
env: env:
DOCKER_PASSWORD: ${{secrets.DOCKER_PASSWORD}} DOCKER_PASSWORD: ${{secrets.DOCKER_PASSWORD}}
DOCKER_USERNAME: ${{secrets.DOCKER_USERNAME}} DOCKER_USERNAME: ${{secrets.DOCKER_USERNAME}}

View File

@ -1,4 +1,5 @@
# 容器访问控制 # 容器访问控制
容器的访问控制主要通过 Linux 上的 `iptables` 防火墙来进行管理和实现`iptables` Linux 上默认的防火墙软件在大部分发行版中都自带 容器的访问控制主要通过 Linux 上的 `iptables` 防火墙来进行管理和实现`iptables` Linux 上默认的防火墙软件在大部分发行版中都自带
## 容器访问外部网络 ## 容器访问外部网络

View File

@ -1,4 +1,5 @@
# 工具和示例 # 工具和示例
在介绍自定义网络拓扑之前你可能会对一些外部工具和例子感兴趣 在介绍自定义网络拓扑之前你可能会对一些外部工具和例子感兴趣
## pipework ## pipework

View File

@ -1,4 +1,5 @@
# 基本概念 # 基本概念
Docker 包括三个基本概念 Docker 包括三个基本概念
* 镜像`Image` * 镜像`Image`
* 容器`Container` * 容器`Container`

View File

@ -1,4 +1,5 @@
# Debian/Ubuntu # Debian/Ubuntu
`Debian` `Ubuntu` 都是目前较为流行的 **Debian ** 的服务器操作系统十分适合研发场景`Docker Hub` 上提供了官方镜像国内各大容器云服务也基本都提供了相应的支持 `Debian` `Ubuntu` 都是目前较为流行的 **Debian ** 的服务器操作系统十分适合研发场景`Docker Hub` 上提供了官方镜像国内各大容器云服务也基本都提供了相应的支持
## Debian 系统简介 ## Debian 系统简介

View File

@ -1,4 +1,5 @@
# 操作 Docker 容器 # 操作 Docker 容器
容器是 Docker 又一核心概念 容器是 Docker 又一核心概念
简单的说容器是独立运行的一个或一组应用以及它们的运行态环境对应的虚拟机可以理解为模拟运行的一整套操作系统提供了运行态环境和其他系统环境和跑在上面的应用 简单的说容器是独立运行的一个或一组应用以及它们的运行态环境对应的虚拟机可以理解为模拟运行的一整套操作系统提供了运行态环境和其他系统环境和跑在上面的应用

View File

@ -1,4 +1,4 @@
### ADD 更高级的复制文件 # ADD 更高级的复制文件
`ADD` 指令和 `COPY` 的格式和性质基本一致但是在 `COPY` 基础上增加了一些功能 `ADD` 指令和 `COPY` 的格式和性质基本一致但是在 `COPY` 基础上增加了一些功能

View File

@ -1,4 +1,4 @@
### ARG 构建参数 # ARG 构建参数
格式`ARG <参数名>[=<默认值>]` 格式`ARG <参数名>[=<默认值>]`

View File

@ -1,4 +1,4 @@
### CMD 容器启动命令 # CMD 容器启动命令
`CMD` 指令的格式和 `RUN` 相似也是两种格式 `CMD` 指令的格式和 `RUN` 相似也是两种格式

View File

@ -1,4 +1,4 @@
### COPY 复制文件 # COPY 复制文件
格式 格式

View File

@ -1,4 +1,4 @@
### ENTRYPOINT 入口点 # ENTRYPOINT 入口点
`ENTRYPOINT` 的格式和 `RUN` 指令格式一样分为 `exec` 格式和 `shell` 格式 `ENTRYPOINT` 的格式和 `RUN` 指令格式一样分为 `exec` 格式和 `shell` 格式

View File

@ -1,4 +1,4 @@
### ENV 设置环境变量 # ENV 设置环境变量
格式有两种 格式有两种

View File

@ -1,4 +1,4 @@
### EXPOSE 声明端口 # EXPOSE 声明端口
格式为 `EXPOSE <端口1> [<端口2>...]` 格式为 `EXPOSE <端口1> [<端口2>...]`

View File

@ -1,4 +1,4 @@
### HEALTHCHECK 健康检查 # HEALTHCHECK 健康检查
格式 格式

View File

@ -1,4 +1,4 @@
### ONBUILD 为他人做嫁衣裳 # ONBUILD 为他人做嫁衣裳
格式`ONBUILD <其它指令>` 格式`ONBUILD <其它指令>`

View File

@ -1,4 +1,4 @@
### 参考文档 # 参考文档
* `Dockerfie` 官方文档https://docs.docker.com/engine/reference/builder/ * `Dockerfie` 官方文档https://docs.docker.com/engine/reference/builder/

View File

@ -1,4 +1,4 @@
### USER 指定当前用户 # USER 指定当前用户
格式`USER <用户名>[:<用户组>]` 格式`USER <用户名>[:<用户组>]`

View File

@ -1,4 +1,4 @@
### VOLUME 定义匿名卷 # VOLUME 定义匿名卷
格式为 格式为

View File

@ -1,4 +1,4 @@
### WORKDIR 指定工作目录 # WORKDIR 指定工作目录
格式为 `WORKDIR <工作目录路径>` 格式为 `WORKDIR <工作目录路径>`

View File

@ -1,4 +1,5 @@
# 简介 # 简介
本章将带领你进入 **Docker** 的世界 本章将带领你进入 **Docker** 的世界
什么是 **Docker** 什么是 **Docker**

View File

@ -1,4 +1,5 @@
# 安全 # 安全
评估 Docker 的安全性时主要考虑三个方面: 评估 Docker 的安全性时主要考虑三个方面:
* 由内核的命名空间和控制组机制提供的容器内在安全 * 由内核的命名空间和控制组机制提供的容器内在安全

View File

@ -1,4 +1,5 @@
# 控制组 # 控制组
控制组是 Linux 容器机制的另外一个关键组件负责实现资源的审计和限制 控制组是 Linux 容器机制的另外一个关键组件负责实现资源的审计和限制
它提供了很多有用的特性以及确保各个容器可以公平地分享主机的内存CPU磁盘 IO 等资源当然更重要的是控制组确保了当容器内的资源使用产生压力时不会连累主机系统 它提供了很多有用的特性以及确保各个容器可以公平地分享主机的内存CPU磁盘 IO 等资源当然更重要的是控制组确保了当容器内的资源使用产生压力时不会连累主机系统

View File

@ -1,4 +1,5 @@
# Docker服务端的防护 # Docker服务端的防护
运行一个容器或应用程序的核心是通过 Docker 服务端Docker 服务的运行目前需要 root 权限因此其安全性十分关键 运行一个容器或应用程序的核心是通过 Docker 服务端Docker 服务的运行目前需要 root 权限因此其安全性十分关键
首先确保只有可信的用户才可以访问 Docker 服务Docker 允许用户在主机和容器间共享文件夹同时不需要限制容器的访问权限这就容易让容器突破资源限制例如恶意用户启动容器的时候将主机的根目录`/`映射到容器的 `/host` 目录中那么容器理论上就可以对主机的文件系统进行任意修改了这听起来很疯狂但是事实上几乎所有虚拟化系统都允许类似的资源共享而没法禁止用户共享主机根文件系统到虚拟机系统 首先确保只有可信的用户才可以访问 Docker 服务Docker 允许用户在主机和容器间共享文件夹同时不需要限制容器的访问权限这就容易让容器突破资源限制例如恶意用户启动容器的时候将主机的根目录`/`映射到容器的 `/host` 目录中那么容器理论上就可以对主机的文件系统进行任意修改了这听起来很疯狂但是事实上几乎所有虚拟化系统都允许类似的资源共享而没法禁止用户共享主机根文件系统到虚拟机系统

View File

@ -1,4 +1,5 @@
# 内核命名空间 # 内核命名空间
Docker 容器和 LXC 容器很相似所提供的安全特性也差不多当用 `docker run` 启动一个容器时在后台 Docker 为容器创建了一个独立的命名空间和控制组集合 Docker 容器和 LXC 容器很相似所提供的安全特性也差不多当用 `docker run` 启动一个容器时在后台 Docker 为容器创建了一个独立的命名空间和控制组集合
命名空间提供了最基础也是最直接的隔离在容器中运行的进程不会被运行在主机上的进程和其它容器发现和作用 命名空间提供了最基础也是最直接的隔离在容器中运行的进程不会被运行在主机上的进程和其它容器发现和作用

View File

@ -1,4 +1,5 @@
# 其它安全特性 # 其它安全特性
除了能力机制之外还可以利用一些现有的安全机制来增强使用 Docker 的安全性例如 TOMOYO, AppArmor, Seccomp, SELinux, GRSEC 除了能力机制之外还可以利用一些现有的安全机制来增强使用 Docker 的安全性例如 TOMOYO, AppArmor, Seccomp, SELinux, GRSEC
Docker 当前默认只启用了能力机制用户可以采用多种方案来加强 Docker 主机的安全例如 Docker 当前默认只启用了能力机制用户可以采用多种方案来加强 Docker 主机的安全例如

View File

@ -1,4 +1,5 @@
# 总结 # 总结
总体来看Docker 容器还是十分安全的特别是在容器内不使用 root 权限来运行进程的话 总体来看Docker 容器还是十分安全的特别是在容器内不使用 root 权限来运行进程的话
另外用户可以使用现有工具比如 [Apparmor](https://docs.docker.com/engine/security/apparmor/), [Seccomp](https://docs.docker.com/engine/security/seccomp/), SELinux, GRSEC 来增强安全性;甚至自己在内核中实现更复杂的安全机制。 另外用户可以使用现有工具比如 [Apparmor](https://docs.docker.com/engine/security/apparmor/), [Seccomp](https://docs.docker.com/engine/security/seccomp/), SELinux, GRSEC 来增强安全性;甚至自己在内核中实现更复杂的安全机制。

View File

@ -1,4 +1,5 @@
# 命名空间 # 命名空间
命名空间是 Linux 内核一个强大的特性每个容器都有自己单独的命名空间运行在其中的应用都像是在独立的操作系统中运行一样命名空间保证了容器之间彼此互不影响 命名空间是 Linux 内核一个强大的特性每个容器都有自己单独的命名空间运行在其中的应用都像是在独立的操作系统中运行一样命名空间保证了容器之间彼此互不影响
## pid 命名空间 ## pid 命名空间