Skip to content

Commit 5fdbca5

Browse files
committed
Some Chinese docs commit
1 parent 9bc207b commit 5fdbca5

File tree

7 files changed

+537
-7
lines changed

7 files changed

+537
-7
lines changed

GetStarted/ContainerOverview.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# 容器技术概述
22

3-
本文将宏观介绍容器技术、对比容器与虚拟机技术、容器技术生态以及 PouchContainer 的愿景
3+
该文档用于讲解容器技术的概览
Lines changed: 231 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,233 @@
11
# PouchContainer 入门
22

3-
文本介绍 PouchContainer 的安装及基本使用,如pull、run,管理等。
3+
# 快速入门
4+
5+
总共提供了两个快速入门,一个用于终端用户,另一个用于开发人员。
6+
7+
希望使用PouchContainer的终端用户,请阅读[终端用户快速入门](#终端用户快速入门)以安装和探索PouchContainer。
8+
9+
希望开发PouchContainer的开发人员,请阅读[开发人员快速入门](#开发人员快速入门)以开始开发并参与项目!
10+
11+
## <div id="终端用户快速入门">终端用户快速入门</div>
12+
13+
只需很少的步骤,您就可以在您的机器上自动安装PouchContainer。目前我们支持两种Linux发行版:Ubuntu和CentOS。
14+
15+
### Ubuntu
16+
17+
要安装PouchContainer,您需要一个Ubuntu 16.04(Xenial LTS)在维护的版本。不支持存档和测试版本。
18+
19+
PouchContainer与Docker冲突,因此您必须在安装PouchContainer之前卸载Docker。
20+
21+
**准备工作**
22+
23+
PouchContainer支持LXCFS以提供强隔离,因此您应首先安装LXCFS。默认情况下,LXCFS是被启用的。
24+
25+
``` bash
26+
sudo apt-get install lxcfs
27+
```
28+
29+
安装下列包以允许'apt'通过HTTPS使用仓库:
30+
31+
``` bash
32+
sudo apt-get install curl apt-transport-https ca-certificates software-properties-common
33+
```
34+
35+
**1. 添加PouchContainer的官方GPG密钥**
36+
37+
``` bash
38+
curl -fsSL http://mirrors.aliyun.com/opsx/pouch/linux/debian/[email protected] | sudo apt-key add -
39+
```
40+
41+
通过搜索指纹的最后8个字符,验证您现在是否具有指纹 `F443 EDD0 4A58 7E8B F645 9C40 CF68 F84A BE2F 475F`的密钥。
42+
43+
``` bash
44+
$ apt-key fingerprint BE2F475F
45+
pub 4096R/BE2F475F 2018-02-28
46+
Key fingerprint = F443 EDD0 4A58 7E8B F645 9C40 CF68 F84A BE2F 475F
47+
uid opsx-admin <[email protected]>
48+
```
49+
50+
**2. 建立PouchContainer仓库**
51+
52+
在新主机上首次安装PouchContainer之前,您需要建立PouchContainer仓库。我们默认启用了`stabel` 仓库,因为您始终需要`stabel` 仓库。要添加 `test` 仓库,请在以下命令行中的单词 `stable` 之后添加单词 `test` 。在此之后,您可以从仓库安装和更新PouchContainer。
53+
54+
``` bash
55+
sudo add-apt-repository "deb http://mirrors.aliyun.com/opsx/pouch/linux/debian/ pouch stable"
56+
```
57+
58+
**3. 安装PouchContainer**
59+
60+
安装最新版本的PouchContainer。
61+
62+
``` bash
63+
# update the apt package index
64+
sudo apt-get update
65+
sudo apt-get install pouch
66+
```
67+
68+
安装PouchContainer后,将创建 `pouch` 组,但该组中未添加任何用户。
69+
70+
**4. 启动PouchContainer**
71+
72+
``` bash
73+
sudo service pouch start
74+
```
75+
76+
在此之后,您可以拉取一个镜像并运行PouchContainer容器。
77+
78+
### CentOS
79+
80+
要安装PouchContainer,您需要一个CentOS 7在维护的版本。不支持存档和测试版本。
81+
82+
我们已将rpm包放到Aliyun镜像中,您可以使用PouchContainer仓库安装PouchContainer。如果您在一台新主机上第一次安装PouchContainer,则需要建立PouchContainer仓库。然后,您可以从仓库安装和更新PouchContainer。
83+
84+
**1. 安装yum-utils**
85+
86+
安装所需的包。 yum-utils提供了yum-config-manager的实用工具。
87+
88+
``` bash
89+
sudo yum install -y yum-utils
90+
```
91+
92+
**2. 建立PouchContainer仓库**
93+
94+
使用以下命令添加PouchContainer仓库。
95+
96+
``` bash
97+
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/opsx/opsx-centos7.repo
98+
sudo yum update
99+
```
100+
101+
注意:上述命令设置了 `stable` 仓库,您可以通过以下命令启用 `test` 仓库。
102+
103+
``` bash
104+
sudo yum-config-manager --enable pouch-test
105+
```
106+
107+
您可以通过运行 `yum-config-manager` 命令和 `--disable` 参数来禁用 `test` 仓库。要重新启用它,请使用 `--enable` 参数。使用以下命令可以禁用 `test` 仓库。
108+
109+
``` bash
110+
sudo yum-config-manager --disable pouch-test
111+
```
112+
113+
**3. 安装PouchContainer**
114+
115+
运行以下命令以安装最新版本的PouchContainer。如果您是第一次在您的主机上安装PouchContainer,系统将提示您接受GPG密钥,并显示密钥的指纹。
116+
117+
``` bash
118+
sudo yum install pouch
119+
```
120+
121+
安装PouchContainer后,将创建 `pouch` 组,但该组中未添加任何用户。
122+
123+
**4. 启动PouchContainer**
124+
125+
``` bash
126+
sudo systemctl start pouch
127+
```
128+
129+
在此之后,您可以拉取一个镜像并运行PouchContainer容器。
130+
131+
## 卸载pouch
132+
133+
在Ubuntu上卸载
134+
135+
``` bash
136+
sudo apt-get purge pouch
137+
```
138+
139+
在CentOS上卸载
140+
141+
``` bash
142+
sudo yum remove pouch
143+
```
144+
145+
运行 `remove` 命令后,您主机上的镜像,容器,存储卷和自定义配置文件不会被自动删除。若要删除所有镜像,容器和存储卷,请执行以下命令:
146+
147+
``` bash
148+
sudo rm -rf /var/lib/pouch
149+
```
150+
151+
## <div id="开发人员快速入门">开发人员快速入门</div>
152+
153+
本指南提供了在裸机服务器或虚拟机上部署PouchContainer的步骤说明。作为开发人员,您需要通过源代码构建和测试PouchContainer二进制文件。要构建被称为"PouchContainer Daemon"的pouchd和被称为"PouchContainer CLI"的pouch,需要安装以下系统依赖项:
154+
155+
* Linux Kernel 3.10+
156+
* Go 1.9.0+
157+
* containerd: 1.0.3
158+
* runc: 1.0.0-rc4
159+
* runv: 1.0.0 (option)
160+
161+
162+
### 预安装
163+
164+
由于pouchd是一种容器引擎,而pouch是一个CLI工具,如果您希望通过pouch体验容器的管理能力,还需要几个额外的二进制文件:
165+
166+
* [containerd](https://github.com/containerd/containerd): 行业标准的容器运行时环境;
167+
* [runc](https://github.com/opencontainers/runc): 用于根据OCI规范生成和运行容器的CLI工具;
168+
* [runv](https://github.com/hyperhq/runv): 基于监管服务的OCI运行时环境;
169+
170+
以下是安装 `containerd` 和runc的shell脚本:
171+
172+
``` shell
173+
# install containerd
174+
$ wget https://github.com/containerd/containerd/releases/download/v1.0.3/containerd-1.0.3.linux-amd64.tar.gz
175+
$ tar -xzvf containerd-1.0.3.linux-amd64.tar.gz -C /usr/local
176+
$
177+
# install runc
178+
$ wget https://github.com/opencontainers/runc/releases/download/v1.0.0-rc4/runc.amd64 -P /usr/local/bin
179+
$ chmod +x /usr/local/bin/runc.amd64
180+
$ mv /usr/local/bin/runc.amd64 /usr/local/bin/runc
181+
```
182+
183+
### runV安装
184+
185+
如果您希望额外体验基于监管服务的虚拟化,您需要安装[runV](https://github.com/hyperhq/runv)
186+
187+
有关使用runV体验PouchContainer的更多指南,包括runv安装,请参考[PouchContainer run with runv guide](docs/features/pouch_with_runV.md)
188+
189+
### PouchContainer的构建和安装
190+
191+
安装完所有依赖后,您可以构建和安装PouchContainer Daemo和PouchContainer CLI。克隆仓库并检出任意您选择的分支(在以下示例中,检出的是主干分支):
192+
193+
``` shell
194+
mkdir -p $GOPATH/src/github.com/alibaba/
195+
cd $GOPATH/src/github.com/alibaba/; git clone https://github.com/alibaba/pouch.git
196+
cd pouch; git checkout master
197+
```
198+
199+
名为 `build` 的Makefile target将编译当前工作目录中的pouch和pouchd二进制文件。或者您可以执行 `make install` 来构建二进制文件并将它们安装在目标目录中(默认情况下为 `/usr/local/bin` )。
200+
201+
``` shell
202+
make install
203+
```
204+
205+
### 启动PouchContainer
206+
安装了所有需要的二进制文件后,您可以通过以下方式启动pouchd:
207+
208+
``` shell
209+
$ pouchd
210+
INFO[0000] starting containerd module=containerd revision=773c489c9c1b21a6d78b5c538cd395416ec50f88 version=v1.0.3
211+
INFO[0000] setting subreaper... module=containerd
212+
INFO[0000] loading plugin "io.containerd.content.v1.content"... module=containerd type=io.containerd.content.v1
213+
INFO[0000] loading plugin "io.containerd.snapshotter.v1.btrfs"... module=containerd type=io.containerd.snapshotter.v1
214+
WARN[0000] failed to load plugin io.containerd.snapshotter.v1.btrfs error="path /var/lib/containerd/io.containerd.snapshotter.v1.btrfs must be a btrfs filesystem to be used with the btrfs snapshotter" module=containerd
215+
INFO[0000] loading plugin "io.containerd.snapshotter.v1.overlayfs"... module=containerd type=io.containerd.snapshotter.v1
216+
INFO[0000] loading plugin "io.containerd.metadata.v1.bolt"... module=containerd type=io.containerd.metadata.v1
217+
WARN[0000] could not use snapshotter btrfs in metadata plugin error="path /var/lib/containerd/io.containerd.snapshotter.v1.btrfs must be a btrfs filesystem to be used with the btrfs snapshotter" module="containerd/io.containerd.metadata.v1.bolt"
218+
INFO[0000] loading plugin "io.containerd.differ.v1.walking"... module=containerd type=io.containerd.differ.v1
219+
INFO[0000] loading plugin "io.containerd.grpc.v1.containers"... module=containerd type=io.containerd.grpc.v1
220+
```
221+
222+
在pouchd运行之后,您可以通过PouchContainer CLI与pouchd进行交互:
223+
224+
```bash
225+
$ pouch images
226+
IMAGE ID IMAGE NAME SIZE
227+
3e8fa85ddfef docker.io/library/busybox:latest 2699
228+
504cf109b492 docker.io/library/redis:alpine 2035
229+
```
230+
231+
## 反馈
232+
233+
我们希望本指南可以帮助您使用和运行PouchContainer。如果您有任何疑问,请随时通过[ISSUE](https://github.com/alibaba/pouch/issues/new)发送反馈。如果您希望在本指南中为PouchContainer做出贡献,请提交PR。

GetStarted/PouchContainerFeatures.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
# PouchContainer 特点
22

3-
文本将主要介绍 PouchContainer 的特点,包括Diskquota、Rich Container、hypervisor runV、resource view isolation by LXCFS、container upgrade等等。
3+
- **富容器**:除了常用的运行容器的方法,PouchContainer 包含一个 `rich container` 的模式,它集成了更多的服务,hook和其他很多容器内部组件,以保证容器的正常运行。
4+
- **强大的隔离**:PouchContainer 默认设置为安全,它包含非常多安全功能,比如基于管理程序的容器技术,LXCFS,Diskquota,Linux内核补丁等等。
5+
- **P2P分发**:PouchContainer 利用基于 P2P 的分布式系统 [Dragonfly](https://github.com/alibaba/dragonfly) 实现企业大规模级的快速容器图像分发。
6+
- **内核兼容性**:使得兼容 OCI 的运行同样能够在像 Linux 2.6.32+ 等旧内核版本上运行。
7+
- **标准兼容性**:PouchContainer 不断拥抱容器生态系统来支持行业标准,比如CNI,CSI等等。
8+
- **Kubernetes兼容性**:PouchContainer 本身实现了 Kubernetes 容器运行时接口(CRI),从其他 Kubernetes 容器运行时迁移到 PouchContainer 会很方便。

GetStarted/README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
# 关于 PouchContainer
22

3-
该部分文档为 PouchContainer 的简要介绍,包括如何安装和使用 PouchContainer 、容器技术概述、 PouchContainer 特点概述等。
3+
该部分文档为 PouchContainer 的简要介绍,包括如何安装和使用 PouchContainer 、容器技术概述、 PouchContainer 特点概述等。
4+
5+
PouchContainer 是由阿里巴巴集团创建的一款开源项目,旨在推动容器技术的发展。
6+
PouchContainer 的愿景是推动容器生态系统,促进容器标准[OCI(Open Container Initiative)](https://github.com/opencontainers),从而让容器技术成为云时代应用开发的基础。
7+
PouchContainer 可以对任何应用程序进行打包,交付和运行,并通过强大隔离和最小开销为应用提供轻量级运行环境。PouchContainer 将不同运行环境中的应用隔离开来,并最大限度地减小操作工作量PouchContainer 最大限度地减小了应用开发人员编写云原生应用或者将旧版本应用程序迁移到云平台的工作量。

Isolation/Diskquota.md

Lines changed: 77 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,77 @@
1-
# Diskquota
1+
# Diskquota
2+
3+
## Diskquota 是什么
4+
5+
Diskquota 是一种用于限制文件系统磁盘使用的技术。 PouchContainer 使用 Diskquota 来限制容器文件系统的磁盘空间使用。众所周知,基于块设备的方法可以通过设置块设备的大小来限制磁盘空间,但基于文件系统的方法则难以实现。Diskquota 就是用于来限制文件系统的磁盘使用的。目前 PouchContainer 支持基于 graphdriver overlayfs 的 Diskquota。
6+
7+
目前底层文件系统中只有 EXT4 和 XFS 支持 Diskquota,另外,有三种方式来实现:**user quota****group quota****project quota**
8+
9+
限制磁盘使用有两个维度:
10+
11+
* 使用配额(块配额):用于限制容器文件系统目录使用量(并非 inode 数量)。
12+
* 文件配额(inode配额):用于限制文件或 inode 的分配。
13+
14+
PouchContainer 目前仅支持块配额,暂时没有支持inode配额的计划。
15+
16+
## PouchContainer 中的 Diskquota
17+
18+
PouchContainer 中的 Diskquota 依赖于运行在容器中的内核版本,下表所示为在不同文件系统中支持 Diskquota 的内核版本。
19+
20+
|| user/group quota | project quota|
21+
|:---:| :----:| :---:|
22+
|EXT4| >= 2.6|>= 4.5|
23+
|XFS|>= 2.6|>= 3.10|
24+
25+
尽管不同的文件系统在相应内核版本下均支持了 Diskquota,但用户依然需要安装 [quota-tools-4.04](https://nchc.dl.sourceforge.net/project/linuxquota/quota-tools/4.04/quota-4.04.tar.gz)。该配额工具目前并未被打包进 PouchContainer 的 rpm 包中,之后我们会对此作出支持。
26+
27+
## 概述
28+
29+
在 PouchContainer 中容器有两种方法访问底层文件系统。一种是容器的 rootfs,另一种是宿主机映射到容器内部的 volume。这两个维度的 Diskquota 均有支持。
30+
31+
### Rootfs Diskquota
32+
33+
用户可以使用选项 `--disk-quota` 来限制一个已经创建的容器的 rootfs 磁盘使用量,例如 `--disk-quota 10g`。设置成功后,可以通过 `df -h` 命令看到 rootfs 的大小为 10GB,表示 Diskquota 已经生效。
34+
35+
```bash
36+
$ pouch run -ti --disk-quota 10g registry.hub.docker.com/library/busybox:latest df -h
37+
Filesystem Size Used Available Use% Mounted on
38+
overlay 10.0G 24.0K 10.0G 0% /
39+
tmpfs 64.0M 0 64.0M 0% /dev
40+
shm 64.0M 0 64.0M 0% /dev/shm
41+
tmpfs 64.0M 0 64.0M 0% /run
42+
tmpfs 64.0M 0 64.0M 0% /proc/kcore
43+
tmpfs 64.0M 0 64.0M 0% /proc/timer_list
44+
tmpfs 64.0M 0 64.0M 0% /proc/sched_debug
45+
tmpfs 1.9G 0 1.9G 0% /sys/firmware
46+
tmpfs 1.9G 0 1.9G 0% /proc/scsi
47+
```
48+
49+
### Volume Diskquota
50+
51+
用户也可以在创建容器时设置 Volume 的磁盘配额。 直接使用 `--option``-o` 选项来标识磁盘限制,例如 `-o size=10g`
52+
53+
在创建 Diskquota 限制的 Volume 后,用户可以将该 Volume 绑定到某运行中的容器上。在下面的例子中,运行命令 `pouch run -ti -v volume-quota-test:/mnt registry.hub.docker.com/library/busybox:latest df -h`,在运行中的容器中,`/mnt` 目录的大小被限制为 10GB。
54+
55+
```bash
56+
$ pouch volume create -n volume-quota-test -d local -o mount=/data/volume -o size=10g
57+
Name: volume-quota-test
58+
Scope:
59+
Status: map[mount:/data/volume sifter:Default size:10g]
60+
CreatedAt: 2018-3-24 13:35:08
61+
Driver: local
62+
Labels: map[]
63+
Mountpoint: /data/volume/volume-quota-test
64+
65+
$ pouch run -ti -v volume-quota-test:/mnt registry.hub.docker.com/library/busybox:latest df -h
66+
Filesystem Size Used Available Use% Mounted on
67+
overlay 20.9G 212.9M 19.6G 1% /
68+
tmpfs 64.0M 0 64.0M 0% /dev
69+
shm 64.0M 0 64.0M 0% /dev/shm
70+
tmpfs 64.0M 0 64.0M 0% /run
71+
/dev/sdb2 10.0G 4.0K 10.0G 0% /mnt
72+
tmpfs 64.0M 0 64.0M 0% /proc/kcore
73+
tmpfs 64.0M 0 64.0M 0% /proc/timer_list
74+
tmpfs 64.0M 0 64.0M 0% /proc/sched_debug
75+
tmpfs 1.9G 0 1.9G 0% /sys/firmware
76+
tmpfs 1.9G 0 1.9G 0% /proc/scsi
77+
```

0 commit comments

Comments
 (0)