0% found this document useful (0 votes)
165 views

Docker Swarm Code PDF

The document outlines the code structure of Docker Swarm, which includes api, cli, cluster, discovery, docs, leadership, pkg, scheduler, script, state, and test directories that contain code implementing various components of Docker Swarm. The api, cli, and cluster directories contain core code for the API, command line interface, and cluster management functionality respectively.

Uploaded by

Sunitha9
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
165 views

Docker Swarm Code PDF

The document outlines the code structure of Docker Swarm, which includes api, cli, cluster, discovery, docs, leadership, pkg, scheduler, script, state, and test directories that contain code implementing various components of Docker Swarm. The api, cli, and cluster directories contain core code for the API, command line interface, and cluster management functionality respectively.

Uploaded by

Sunitha9
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 257

Docker_Swarm_code

目錄
1. 前言
2. 整体结构
3. api
i. events.go
ii. events_test.go
iii. flusher.go
iv. handlers.go
v. primary.go
vi. README.md
vii. replica.go
viii. server.go
ix. server_unix.go
x. server_windows.go
xi. sorter.go
xii. status.go
xiii. utils.go
xiv. utils_test.go
4. cli
i. cli.go
ii. commands.go
iii. create.go
iv. flags.go
v. help.go
vi. join.go
vii. join_test.go
viii. list.go
ix. manage.go
5. cluster
i. mesos
i. queue
i. queue.go
ii. queue_test.go
ii. cluster.go
iii. cluster_test.go
iv. driver.go
v. offer_sorter.go
vi. offer_sorter_test.go
vii. README.md
viii. slave.go
ix. slave_test.go
x. task.go
xi. task_test.go

2
Docker_Swarm_code

xii. utils.go
ii. swarm
i. cluster.go
ii. cluster_test.go
iii. cluster.go
iv. config.go
v. config_test.go
vi. container.go
vii. container_test.go
viii. engine.go
ix. engine_sorter.go
x. engine_sorter_test.go
xi. engine_test.go
xii. event.go
xiii. image.go
xiv. image_test.go
xv. options.go
xvi. options_test.go
6. discovery
i. file
i. file.go
ii. file_test.go
ii. kv
i. kv.go
ii. kv_test.go
iii. nodes
i. nodes.go
ii. nodes_test.go
iv. token
i. README.md
ii. token.go
iii. token_test.go
v. discovery.go
vi. discovery_test.go
vii. generator.go
viii. generator_test.go
ix. README.md
7. docs
i. api
i. swarm-api.md
ii. images
i. virtual-box.png
iii. scheduler
i. filter.md
ii. strategy.md
iv. discovery.md

3
Docker_Swarm_code

v. Dockerfile
vi. install-manual.md
vii. install-w-machine.md
viii. Makefile
ix. release-notes.md
x. swarm-overview.md
8. Godeps
i. _workspace
i. src
i. code.google.com
ii. github.com
iii. golang.org
ii. Godeps.json
9. leadership
i. candidate.go
ii. candidate_test.go
iii. follower.go
iv. follower_test.go
v. README.md
10. pkg
i. store
i. consul.go
ii. consul_test.go
iii. etcd.go
iv. etcd_test.go
v. helpers.go
vi. mock.go
vii. README.md
viii. store.go
ix. store_test.go
x. zookeeper.go
xi. zookeeper_test.go
11. scheduler
i. filter
i. affinity.go
ii. affinity_test.go
iii. constraint.go
iv. constraint_test.go
v. dependency.go
vi. dependency_test.go
vii. expr.go
viii. expr_test.go
ix. filter.go
x. health.go
xi. health_test.go
xii. port.go

4
Docker_Swarm_code

xiii. port_test.go
xiv. README.md
ii. node
i. node.go
iii. strategy
i. binpack.go
ii. binpack_test.go
iii. random.go
iv. README.md
v. spread.go
vi. spread_test.go
vii. strategy.go
viii. weighted_node.go
iv. scheduler.go
12. script
i. demo
i. misc
i. script.sh
ii. nsq
i. docker-compose.yml
iii. redmon
i. docker-compose.yml
ii. script.sh
ii. coverage
iii. travis_consul.sh
iv. travis_etcd.sh
v. travis_zk.sh
vi. validate-gofmt
13. state
i. state.go
ii. store.go
iii. store_test.go
14. test
i. integration
i. api
i. attach.bats
ii. build.bats
iii. commit.bats
iv. cp.bats
v. create.bats
vi. diff.bats
vii. events.bats
viii. exec.bats
ix. export.bats
x. history.bats
xi. images.bats

5
Docker_Swarm_code

xii. import.bats
xiii. info.bats
xiv. inspect.bats
xv. kill.bats
xvi. load.bats
xvii. login.bats
xviii. logout.bats
xix. logs.bats
xx. pause.bats
xxi. port.bats
xxii. ps.bats
xxiii. pull.bats
xxiv. push.bats
xxv. rename.bats
xxvi. restart.bats
xxvii. rm.bats
xxviii. rmi.bats
xxix. run.bats
xxx. save.bats
xxxi. search.bats
xxxii. start.bats
xxxiii. stats.bats
xxxiv. stop.bats
xxxv. tag.bats
xxxvi. top.bats
xxxvii. unpause.bats
xxxviii. version.bats
xxxix. wait.bats
ii. discovery
i. consul.bats
ii. discovery_helpers.bash
iii. etcd.bats
iv. file.bats
v. token.bats
vi. zk.bats
iii. mesos
i. api.bats
ii. mesos_helpers.bash
iv. testdata
i. build
v. affinities.bats
vi. api_version.bats
vii. cli.bats
viii. constraints.bats
ix. dependency.bats
x. Dockerfile

6
Docker_Swarm_code

xi. helpers.bash
xii. port-filters.bats
xiii. README.md
xiv. resource_management.bats
xv. run.sh
xvi. swarm_id.bats
xvii. test_runner.sh
ii. regression
i. run.sh
iii. stress
i. stress.bats
15. version
i. version.go
16. CONTRIBUTING.md
17. Dockerfile
18. ISSUE-TRIAGE.md
19. LICENSE
20. logo.png
21. main.go
22. README.md
23. ROADMAP.md

7
Docker_Swarm_code

Docker Swarm 源码分析


Swarm 是 Docker 官方推出的 Docker 容器集群管理项目。通过它,你可以在多个机器构建的集群上使用
Docker 容器,而无需关心具体被分配到哪台机器上。

本书将剖析 Swarm 组件的代码。

最新版本在线阅读:GitBook。

本书源码在 Github 上维护,欢迎参与:https://github.com/yeasy/Docker_Swarm_code。

感谢所有的 贡献者。

更新历史:

V0.1: 2015-06-17
完成基本结构。

参加步骤

在 GitHub 上 fork 到自己的仓库,如 user/Docker_Swarm_code ,然后 clone 到本地,并设置用


户信息。

$ git clone git@github.com:user/Docker_Swarm_code.git


$ cd Docker_Swarm_code
$ git config user.name "User"
$ git config user.email user@email.com

修改代码后提交,并推送到自己的仓库。

$ #do some change on the content


$ git commit -am "Fix issue #1: change helo to hello"
$ git push

在 GitHub 网站上提交 pull request。

定期使用项目仓库内容更新自己仓库内容。

$ git remote add upstream https://github.com/yeasy/Docker_Swarm_code


$ git fetch upstream
$ git checkout master
$ git rebase upstream/master
$ git push -f origin master

前言 8
Docker_Swarm_code

整体结构
源代码主要分为 7 个目录和若干文件: contrib,devstack,doc,etc,magnum,specs 和 tools。 除了这
7 个目录外,还包括一些说明文档、安装需求说明文件等。

contrib

主要包括一个 templates 目录,给出了实现一个 Bay Template 的例子。

devstack

包括将 Magnum 集成到 devstack 中的若干工具和文档。

doc

包括使用 Sphinx 生成文档的相关源码。

etc

跟服务和配置相关的文件,基本上该目录中内容在安装时会被复制到系统的/etc/ 目录下。

magnum

项目核心的代码实现都在这个目录下。 可以通过下面的命令来统计主要实现的核心代码量。

find magnum -name "*.py" | xargs cat | wc -l

目前版本,约为 46k 行。

specs

项目提出时候的提案文档。

tools

一些相关的代码格式化检测、环境安装的脚本。

其它文档

README.rst:介绍了项目的情况和连接。
TESTING.rst:介绍如何进行开发后的测试。官方配置的 jenkins 当 gerrit 上有代码提交 review 的时候

整体结构 9
Docker_Swarm_code

会触发 tox 测试。实际上,OpenStack 中的项目使用 tox 来管理测试的虚拟环境,使用 testr 来管理运


行测试案例的顺序。
Dockerfile:生成一个 Docker 镜像,默认里面运行 Mangum-api 服务。

整体结构 10
Docker_Swarm_code

api

api 11
Docker_Swarm_code

events.go

events.go 12
Docker_Swarm_code

events_test.go

events_test.go 13
Docker_Swarm_code

flusher.go

flusher.go 14
Docker_Swarm_code

handlers.go

handlers.go 15
Docker_Swarm_code

primary.go

primary.go 16
Docker_Swarm_code

README.md

README.md 17
Docker_Swarm_code

replica.go

replica.go 18
Docker_Swarm_code

server.go

server.go 19
Docker_Swarm_code

server_unix.go

server_unix.go 20
Docker_Swarm_code

server_windows.go

server_windows.go 21
Docker_Swarm_code

sorter.go

sorter.go 22
Docker_Swarm_code

status.go

status.go 23
Docker_Swarm_code

utils.go

utils.go 24
Docker_Swarm_code

utils_test.go

utils_test.go 25
Docker_Swarm_code

cli
命令行工具执行的入口。

cli 26
Docker_Swarm_code

cli.go

实现了一个 Run 方法。

生成一个新的应用 app,然后传递执行的命令和参数,调用应用中的 Run 方法。

if err := app.Run(os.Args); err != nil {


log.Fatal(err)
}

cli.go 27
Docker_Swarm_code

commands.go

定义支持的命令和参数格式。目前支持四个命令:

create:创建一个集群;
list:列出一个集群中的节点;
manage:管理集群;
join:加入一个集群。

var (
commands = []cli.Command{
{
Name: "create",
ShortName: "c",
Usage: "Create a cluster",
Action: create,
},
{
Name: "list",
ShortName: "l",
Usage: "List nodes in a cluster",
Flags: []cli.Flag{flTimeout},
Action: list,
},
{
Name: "manage",
ShortName: "m",
Usage: "Manage a docker cluster",
Flags: []cli.Flag{
flStore,
flStrategy, flFilter,
flHosts,
flLeaderElection, flManageAdvertise,
flTLS, flTLSCaCert, flTLSCert, flTLSKey, flTLSVerify,
flHeartBeat,
flEnableCors,
flCluster, flClusterOpt},
Action: manage,
},
{
Name: "join",
ShortName: "j",
Usage: "join a docker cluster",
Flags: []cli.Flag{flJoinAdvertise, flHeartBeat, flTTL},
Action: join,
},
}
)

commands.go 28
Docker_Swarm_code

create.go

create 方法,对应执行 create 命令。通过 token 来初始化一个 discovery,然后创建一个集群。

func create(c *cli.Context) {


if len(c.Args()) != 0 {
log.Fatalf("the `create` command takes no arguments. See '%s create --help'.", c.App.Name)
}
discovery := &token.Discovery{}
discovery.Initialize("", 0, 0)
token, err := discovery.CreateCluster()
if err != nil {
log.Fatal(err)
}
fmt.Println(token)
}

create.go 29
Docker_Swarm_code

flags.go

定义一些 flag 变量以及相关的处理方法。

var (
flStore = cli.StringFlag{
Name: "rootdir",
Value: homepath(".swarm"),
Usage: "",
}
flJoinAdvertise = cli.StringFlag{
Name: "advertise, addr",
Usage: "Address of the Docker Engine joining the cluster. Swarm manager(s) MUST be able to r
EnvVar: "SWARM_ADVERTISE",
}
flManageAdvertise = cli.StringFlag{
Name: "advertise, addr",
Usage: "Address of the swarm manager joining the cluster. Other swarm manager(s) MUST be abl
EnvVar: "SWARM_ADVERTISE",
}
// hack for go vet
flHostsValue = cli.StringSlice([]string{"tcp://127.0.0.1:2375"})

flHosts = cli.StringSliceFlag{
Name: "host, H",
Value: &flHostsValue,
Usage: "ip/socket to listen on",
EnvVar: "SWARM_HOST",
}
flHeartBeat = cli.StringFlag{
Name: "heartbeat",
Value: "20s",
Usage: "period between each heartbeat",
}
flTTL = cli.StringFlag{
Name: "ttl",
Value: "60s",
Usage: "sets the expiration of an ephemeral node",
}
flTimeout = cli.StringFlag{
Name: "timeout",
Value: "10s",
Usage: "timeout period",
}
flEnableCors = cli.BoolFlag{
Name: "api-enable-cors, cors",
Usage: "enable CORS headers in the remote API",
}
flTLS = cli.BoolFlag{
Name: "tls",
Usage: "use TLS; implied by --tlsverify=true",
}
flTLSCaCert = cli.StringFlag{
Name: "tlscacert",
Usage: "trust only remotes providing a certificate signed by the CA given here",
}

flags.go 30
Docker_Swarm_code

flTLSCert = cli.StringFlag{
Name: "tlscert",
Usage: "path to TLS certificate file",
}
flTLSKey = cli.StringFlag{
Name: "tlskey",
Usage: "path to TLS key file",
}
flTLSVerify = cli.BoolFlag{
Name: "tlsverify",
Usage: "use TLS and verify the remote",
}
flStrategy = cli.StringFlag{
Name: "strategy",
Usage: "placement strategy to use [" + strings.Join(strategy.List(), ", ") + "]",
Value: strategy.List()[0],
}

// hack for go vet


flFilterValue = cli.StringSlice(filter.List())
// DefaultFilterNumber is exported
DefaultFilterNumber = len(flFilterValue)

flFilter = cli.StringSliceFlag{
Name: "filter, f",
Usage: "filter to use [" + strings.Join(filter.List(), ", ") + "]",
Value: &flFilterValue,
}

flCluster = cli.StringFlag{
Name: "cluster-driver, c",
Usage: "cluster driver to use [swarm, mesos-experimental]",
Value: "swarm",
}
flClusterOpt = cli.StringSliceFlag{
Name: "cluster-opt",
Usage: "cluster driver options",
Value: &cli.StringSlice{},
}

flLeaderElection = cli.BoolFlag{
Name: "replication",
Usage: "Enable Swarm manager replication",
}
)

flags.go 31
Docker_Swarm_code

help.go

执行 help 命令的输出。

help.go 32
Docker_Swarm_code

join.go

join 方法,对应执行 join 命令。

func join(c *cli.Context) {


dflag := getDiscovery(c)
if dflag == "" {
log.Fatalf("discovery required to join a cluster. See '%s join --help'.", c.App.Name)
}

addr := c.String("advertise")
if addr == "" {
log.Fatal("missing mandatory --advertise flag")
}
if !checkAddrFormat(addr) {
log.Fatal("--advertise should be of the form ip:port or hostname:port")
}

hb, err := time.ParseDuration(c.String("heartbeat"))


if err != nil {
log.Fatalf("invalid --heartbeat: %v", err)
}
if hb < 1*time.Second {
log.Fatal("--heartbeat should be at least one second")
}
ttl, err := time.ParseDuration(c.String("ttl"))
if err != nil {
log.Fatalf("invalid --ttl: %v", err)
}
if ttl <= hb {
log.Fatal("--ttl must be strictly superior to the heartbeat value")
}
d, err := discovery.New(dflag, hb, ttl)
if err != nil {
log.Fatal(err)
}

for {
log.WithFields(log.Fields{"addr": addr, "discovery": dflag}).Infof("Registering on the discov
if err := d.Register(addr); err != nil {
log.Error(err)
}
time.Sleep(hb)
}
}

join.go 33
Docker_Swarm_code

join_test.go

测试 join 命令,检查支持的地址的格式是否正确。

join_test.go 34
Docker_Swarm_code

list.go

list 方法,响应 list 命令。

func list(c *cli.Context) {


dflag := getDiscovery(c)
if dflag == "" {
log.Fatalf("discovery required to list a cluster. See '%s list --help'.", c.App.Name)
}
timeout, err := time.ParseDuration(c.String("timeout"))
if err != nil {
log.Fatalf("invalid --timeout: %v", err)
}

d, err := discovery.New(dflag, timeout, 0)


if err != nil {
log.Fatal(err)
}

ch, errCh := d.Watch(nil)


select {
case entries := <-ch:
for _, entry := range entries {
fmt.Println(entry)
}
case err := <-errCh:
log.Fatal(err)
case <-time.After(timeout):
log.Fatal("Timed out")
}
}

list.go 35
Docker_Swarm_code

manage.go

manage 方法,响应 manage 命令。

sverify") && !c.IsSet("tlscacert") {


log.Fatal("--tlscacert must be provided when using --tlsverify")
}
tlsConfig, err = loadTLSConfig(
c.String("tlscacert"),
c.String("tlscert"),
c.String("tlskey"),
c.Bool("tlsverify"))
if err != nil {
log.Fatal(err)
}
} else {
// Otherwise, if neither --tls nor --tlsverify are specified, abort if
// the other flags are passed as they will be ignored.
if c.IsSet("tlscert") || c.IsSet("tlskey") || c.IsSet("tlscacert") {
log.Fatal("--tlscert, --tlskey and --tlscacert require the use of either --tls or --tlsve
}
}

store := state.NewStore(path.Join(c.String("rootdir"), "state"))


if err := store.Initialize(); err != nil {
log.Fatal(err)
}

uri := getDiscovery(c)
if uri == "" {
log.Fatalf("discovery required to manage a cluster. See '%s manage --help'.", c.App.Name)
}
discovery := createDiscovery(uri, c)
s, err := strategy.New(c.String("strategy"))
if err != nil {
log.Fatal(err)
}

// see https://github.com/codegangsta/cli/issues/160
names := c.StringSlice("filter")
if c.IsSet("filter") || c.IsSet("f") {
names = names[DefaultFilterNumber:]
}
fs, err := filter.New(names)
if err != nil {
log.Fatal(err)
}

sched := scheduler.New(s, fs)


var cl cluster.Cluster
switch c.String("cluster-driver") {
case "mesos-experimental":
log.Warn("WARNING: the mesos driver is currently experimental, use at your own risks")
cl, err = mesos.NewCluster(sched, store, tlsConfig, uri, c.StringSlice("cluster-opt"))
case "swarm":
cl, err = swarm.NewCluster(sched, store, tlsConfig, discovery, c.StringSlice("cluster-opt"))

manage.go 36
Docker_Swarm_code

default:
log.Fatalf("unsupported cluster %q", c.String("cluster-driver"))
}
if err != nil {
log.Fatal(err)
}

// see https://github.com/codegangsta/cli/issues/160
hosts := c.StringSlice("host")
if c.IsSet("host") || c.IsSet("H") {
hosts = hosts[1:]
}

server := api.NewServer(hosts, tlsConfig)


if c.Bool("replication") {
addr := c.String("advertise")
if addr == "" {
log.Fatal("--advertise address must be provided when using --leader-election")
}
if !checkAddrFormat(addr) {
log.Fatal("--advertise should be of the form ip:port or hostname:port")
}

setupReplication(c, cl, server, discovery, addr, tlsConfig)


} else {
server.SetHandler(api.NewPrimary(cl, tlsConfig, &statusHandler{cl, nil, nil}, c.Bool("cors"))
}

log.Fatal(server.ListenAndServe())
}

manage.go 37
Docker_Swarm_code

cluster

cluster 38
Docker_Swarm_code

mesos

mesos 39
Docker_Swarm_code

queue

queue 40
Docker_Swarm_code

queue.go

queue 41
Docker_Swarm_code

queue_test.go

queue 42
Docker_Swarm_code

cluster.go

cluster.go 43
Docker_Swarm_code

cluster_test.go

cluster_test.go 44
Docker_Swarm_code

driver.go

driver.go 45
Docker_Swarm_code

offer_sorter.go

offer_sorter.go 46
Docker_Swarm_code

offer_sorter_test.go

offer_sorter_test.go 47
Docker_Swarm_code

README.md

README.md 48
Docker_Swarm_code

slave.go

slave.go 49
Docker_Swarm_code

slave_test.go

slave_test.go 50
Docker_Swarm_code

task.go

task.go 51
Docker_Swarm_code

task_test.go

task_test.go 52
Docker_Swarm_code

utils.go

utils.go 53
Docker_Swarm_code

swarm

swarm 54
Docker_Swarm_code

cluster.go

cluster.go 55
Docker_Swarm_code

cluster_test.go

cluster_test.go 56
Docker_Swarm_code

cluster.go

cluster.go 57
Docker_Swarm_code

config.go

config.go 58
Docker_Swarm_code

config_test.go

config_test.go 59
Docker_Swarm_code

container.go

container.go 60
Docker_Swarm_code

container_test.go

container_test.go 61
Docker_Swarm_code

engine.go

engine.go 62
Docker_Swarm_code

engine_sorter.go

engine_sorter.go 63
Docker_Swarm_code

engine_sorter_test.go

engine_sorter_test.go 64
Docker_Swarm_code

engine_test.go

engine_test.go 65
Docker_Swarm_code

event.go

event.go 66
Docker_Swarm_code

image.go

image.go 67
Docker_Swarm_code

image_test.go

image_test.go 68
Docker_Swarm_code

options.go

options.go 69
Docker_Swarm_code

options_test.go

options_test.go 70
Docker_Swarm_code

discovery

discovery 71
Docker_Swarm_code

file

file 72
Docker_Swarm_code

file.go

file.go 73
Docker_Swarm_code

file_test.go

file_test.go 74
Docker_Swarm_code

kv

kv 75
Docker_Swarm_code

kv.go

kv.go 76
Docker_Swarm_code

kv_test.go

kv_test.go 77
Docker_Swarm_code

nodes

nodes 78
Docker_Swarm_code

nodes.go

nodes.go 79
Docker_Swarm_code

nodes_test.go

nodes_test.go 80
Docker_Swarm_code

token

token 81
Docker_Swarm_code

README.md

README.md 82
Docker_Swarm_code

token.go

token.go 83
Docker_Swarm_code

token_test.go

token_test.go 84
Docker_Swarm_code

discovery.go

discovery.go 85
Docker_Swarm_code

discovery_test.go

discovery_test.go 86
Docker_Swarm_code

generator.go

generator.go 87
Docker_Swarm_code

generator_test.go

generator_test.go 88
Docker_Swarm_code

README.md

README.md 89
Docker_Swarm_code

docs

docs 90
Docker_Swarm_code

api

api 91
Docker_Swarm_code

swarm-api.md

swarm-api.md 92
Docker_Swarm_code

images

images 93
Docker_Swarm_code

virtual-box.png

virtual-box.png 94
Docker_Swarm_code

scheduler

scheduler 95
Docker_Swarm_code

filter.md

filter.md 96
Docker_Swarm_code

strategy.md

strategy.md 97
Docker_Swarm_code

discovery.md

discovery.md 98
Docker_Swarm_code

Dockerfile

Dockerfile 99
Docker_Swarm_code

install-manual.md

install-manual.md 100
Docker_Swarm_code

install-w-machine.md

install-w-machine.md 101
Docker_Swarm_code

Makefile

Makefile 102
Docker_Swarm_code

release-notes.md

release-notes.md 103
Docker_Swarm_code

swarm-overview.md

swarm-overview.md 104
Docker_Swarm_code

Godeps
godep 是一套管理 Go 项目中依赖的工具,类似 Python 中通过 setup.py 或者 requirements.txt 来记录依赖
信息。

它的使用十分简单。

保存当前项目使用的依赖信息:

$ godep save

基于保存的依赖库来构建项目

$ godep go install

或者

$ GOPATH=`godep path`:$GOPATH
$ go install

Godeps 105
Docker_Swarm_code

_workspace

godep 自动生成的存放依赖库的位置。

_workspace 106
Docker_Swarm_code

src

src 107
Docker_Swarm_code

code.google.com

依赖的第三方包信息。

p.go-uuid.uuid。

src 108
Docker_Swarm_code

github.com

依赖的第三方包信息。

codegangsta
coreos
docker
gogo
golang
gorilla
hashicorp
mesos
samalba
samuel
Sirupsen
stretchr

src 109
Docker_Swarm_code

golang.org

依赖的第三方包信息。

x.net.context

src 110
Docker_Swarm_code

Godeps.json

Godeps.json 111
Docker_Swarm_code

leadership

leadership 112
Docker_Swarm_code

candidate.go

candidate.go 113
Docker_Swarm_code

candidate_test.go

candidate_test.go 114
Docker_Swarm_code

follower.go

follower.go 115
Docker_Swarm_code

follower_test.go

follower_test.go 116
Docker_Swarm_code

README.md

README.md 117
Docker_Swarm_code

pkg

pkg 118
Docker_Swarm_code

store

store 119
Docker_Swarm_code

consul.go

consul.go 120
Docker_Swarm_code

consul_test.go

consul_test.go 121
Docker_Swarm_code

etcd.go

etcd.go 122
Docker_Swarm_code

etcd_test.go

etcd_test.go 123
Docker_Swarm_code

helpers.go

helpers.go 124
Docker_Swarm_code

mock.go

mock.go 125
Docker_Swarm_code

README.md

README.md 126
Docker_Swarm_code

store.go

store.go 127
Docker_Swarm_code

store_test.go

store_test.go 128
Docker_Swarm_code

zookeeper.go

zookeeper.go 129
Docker_Swarm_code

zookeeper_test.go

zookeeper_test.go 130
Docker_Swarm_code

scheduler

scheduler 131
Docker_Swarm_code

filter

filter 132
Docker_Swarm_code

affinity.go

affinity.go 133
Docker_Swarm_code

affinity_test.go

affinity_test.go 134
Docker_Swarm_code

constraint.go

constraint.go 135
Docker_Swarm_code

constraint_test.go

constraint_test.go 136
Docker_Swarm_code

dependency.go

dependency.go 137
Docker_Swarm_code

dependency_test.go

dependency_test.go 138
Docker_Swarm_code

expr.go

expr.go 139
Docker_Swarm_code

expr_test.go

expr_test.go 140
Docker_Swarm_code

filter.go

filter.go 141
Docker_Swarm_code

health.go

health.go 142
Docker_Swarm_code

health_test.go

health_test.go 143
Docker_Swarm_code

port.go

port.go 144
Docker_Swarm_code

port_test.go

port_test.go 145
Docker_Swarm_code

README.md

README.md 146
Docker_Swarm_code

node

node 147
Docker_Swarm_code

node.go

node.go 148
Docker_Swarm_code

strategy

strategy 149
Docker_Swarm_code

binpack.go

binpack.go 150
Docker_Swarm_code

binpack_test.go

binpack_test.go 151
Docker_Swarm_code

random.go

random.go 152
Docker_Swarm_code

README.md

README.md 153
Docker_Swarm_code

spread.go

spread.go 154
Docker_Swarm_code

spread_test.go

spread_test.go 155
Docker_Swarm_code

strategy.go

strategy.go 156
Docker_Swarm_code

weighted_node.go

weighted_node.go 157
Docker_Swarm_code

scheduler.go

scheduler.go 158
Docker_Swarm_code

script

script 159
Docker_Swarm_code

demo

demo 160
Docker_Swarm_code

misc

misc 161
Docker_Swarm_code

script.sh

misc 162
Docker_Swarm_code

nsq

nsq 163
Docker_Swarm_code

docker-compose.yml

nsq 164
Docker_Swarm_code

redmon

redmon 165
Docker_Swarm_code

docker-compose.yml

redmon 166
Docker_Swarm_code

script.sh

redmon 167
Docker_Swarm_code

coverage

coverage 168
Docker_Swarm_code

travis_consul.sh

travis_consul.sh 169
Docker_Swarm_code

travis_etcd.sh

travis_etcd.sh 170
Docker_Swarm_code

travis_zk.sh

travis_zk.sh 171
Docker_Swarm_code

validate-gofmt

validate-gofmt 172
Docker_Swarm_code

state

state 173
Docker_Swarm_code

state.go

state.go 174
Docker_Swarm_code

store.go

store.go 175
Docker_Swarm_code

store_test.go

store_test.go 176
Docker_Swarm_code

test

test 177
Docker_Swarm_code

integration

integration 178
Docker_Swarm_code

api

api 179
Docker_Swarm_code

attach.bats

api 180
Docker_Swarm_code

build.bats

api 181
Docker_Swarm_code

commit.bats

api 182
Docker_Swarm_code

cp.bats

api 183
Docker_Swarm_code

create.bats

api 184
Docker_Swarm_code

diff.bats

api 185
Docker_Swarm_code

events.bats

api 186
Docker_Swarm_code

exec.bats

api 187
Docker_Swarm_code

export.bats

api 188
Docker_Swarm_code

history.bats

api 189
Docker_Swarm_code

images.bats

api 190
Docker_Swarm_code

import.bats

api 191
Docker_Swarm_code

info.bats

api 192
Docker_Swarm_code

inspect.bats

api 193
Docker_Swarm_code

kill.bats

api 194
Docker_Swarm_code

load.bats

api 195
Docker_Swarm_code

login.bats

api 196
Docker_Swarm_code

logout.bats

api 197
Docker_Swarm_code

logs.bats

api 198
Docker_Swarm_code

pause.bats

api 199
Docker_Swarm_code

port.bats

api 200
Docker_Swarm_code

ps.bats

api 201
Docker_Swarm_code

pull.bats

api 202
Docker_Swarm_code

push.bats

api 203
Docker_Swarm_code

rename.bats

api 204
Docker_Swarm_code

restart.bats

api 205
Docker_Swarm_code

rm.bats

api 206
Docker_Swarm_code

rmi.bats

api 207
Docker_Swarm_code

run.bats

api 208
Docker_Swarm_code

save.bats

api 209
Docker_Swarm_code

search.bats

api 210
Docker_Swarm_code

start.bats

api 211
Docker_Swarm_code

stats.bats

api 212
Docker_Swarm_code

stop.bats

api 213
Docker_Swarm_code

tag.bats

api 214
Docker_Swarm_code

top.bats

api 215
Docker_Swarm_code

unpause.bats

api 216
Docker_Swarm_code

version.bats

api 217
Docker_Swarm_code

wait.bats

api 218
Docker_Swarm_code

discovery

discovery 219
Docker_Swarm_code

consul.bats

discovery 220
Docker_Swarm_code

discovery_helpers.bash

discovery 221
Docker_Swarm_code

etcd.bats

discovery 222
Docker_Swarm_code

file.bats

discovery 223
Docker_Swarm_code

token.bats

discovery 224
Docker_Swarm_code

zk.bats

discovery 225
Docker_Swarm_code

mesos

mesos 226
Docker_Swarm_code

api.bats

mesos 227
Docker_Swarm_code

mesos_helpers.bash

mesos 228
Docker_Swarm_code

testdata

testdata 229
Docker_Swarm_code

build

testdata 230
Docker_Swarm_code

affinities.bats

affinities.bats 231
Docker_Swarm_code

api_version.bats

api_version.bats 232
Docker_Swarm_code

cli.bats

cli.bats 233
Docker_Swarm_code

constraints.bats

constraints.bats 234
Docker_Swarm_code

dependency.bats

dependency.bats 235
Docker_Swarm_code

Dockerfile

Dockerfile 236
Docker_Swarm_code

helpers.bash

helpers.bash 237
Docker_Swarm_code

port-filters.bats

port-filters.bats 238
Docker_Swarm_code

README.md

README.md 239
Docker_Swarm_code

resource_management.bats

resource_management.bats 240
Docker_Swarm_code

run.sh

run.sh 241
Docker_Swarm_code

swarm_id.bats

swarm_id.bats 242
Docker_Swarm_code

test_runner.sh

test_runner.sh 243
Docker_Swarm_code

regression

regression 244
Docker_Swarm_code

run.sh

run.sh 245
Docker_Swarm_code

stress

stress 246
Docker_Swarm_code

stress.bats

stress.bats 247
Docker_Swarm_code

version

version 248
Docker_Swarm_code

version.go

version.go 249
Docker_Swarm_code

CONTRIBUTING.md

CONTRIBUTING.md 250
Docker_Swarm_code

Dockerfile

Dockerfile 251
Docker_Swarm_code

ISSUE-TRIAGE.md

ISSUE-TRIAGE.md 252
Docker_Swarm_code

LICENSE

LICENSE 253
Docker_Swarm_code

logo.png

logo.png 254
Docker_Swarm_code

main.go
执行 swarm 命令时候的入口。

package main

import (
_ "github.com/docker/swarm/discovery/file"
_ "github.com/docker/swarm/discovery/kv"
_ "github.com/docker/swarm/discovery/nodes"
_ "github.com/docker/swarm/discovery/token"

"github.com/docker/swarm/cli"
)

func main() {
cli.Run()
}

main.go 255
Docker_Swarm_code

README.md
说明文件,介绍了项目定位(抽象多主机的容器资源为统一管理的接口),以及如何安装等信息。

README.md 256
Docker_Swarm_code

ROADMAP.md
路线图,除了自带的资源管理后端,先支持 Mesos,将来支持 Kubernetes。

ROADMAP.md 257

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy