协作式原创自己动手写docker
Posted yudidi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了协作式原创自己动手写docker相关的知识,希望对你有一定的参考价值。
准备工作
- 阿里云抢占式实例:centos7.4
- 每次实例释放后都要重新安装go
wget https://dl.google.com/go/go1.13.4.linux-amd64.tar.gz
sudo tar -C /usr/local -xf go1.13.4.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
source ~/.bash_profile
yum -y install nano
yum install git
git clone https://github.com/yudidi/go-docker.git
git branch -all
git checkout remotes/origin/ns
centos环境安装
demo1-ns
main.go
package main
import (
"github.com/sirupsen/logrus"
"github.com/urfave/cli"
"os"
)
const usage = `go-docker`
func main() {
app := cli.NewApp()
app.Name = "go-docker"
app.Usage = usage
app.Commands = []cli.Command{
runCommand,
initCommand,
}
app.Before = func(context *cli.Context) error {
logrus.SetFormatter(&logrus.JSONFormatter{})
logrus.SetOutput(os.Stdout)
return nil
}
if err := app.Run(os.Args); err != nil {
logrus.Fatal(err)
}
}
TODO 预备知识
namespace
- 产生背景
User NS
对于多个用户共享服务器的场景,每个用户购买一个tomcat实例供自己使用。
但是为了防止互相影响,需要给用户设置权限,让用户只能操作自己的tomcat。
但是呢,用户的某些操作,可能需要root权限,我们不能每个用户都赋予root权限,也不能每个用户一个物理机或虚拟机让他们做到隔离。
在这种情况下,NS就可以做到基于UID的隔离,同一个系统,却可以对不同的UID呈现不同的系统情况。
这就是User NS。PID NS
参考
nano在CentOS上的安装和使用
如何在 CentOS 8 上安装 Go
用go写一个docker
以上是关于协作式原创自己动手写docker的主要内容,如果未能解决你的问题,请参考以下文章
原创自己动手写工具----XSmartNote [Beta 3.0]