Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitcd303d8

Browse files
committed
Switch to another docker client library.
1 parentb2033c4 commitcd303d8

File tree

1 file changed

+89
-62
lines changed

1 file changed

+89
-62
lines changed

‎contrib/pg_dtm/docker/contain.go‎

Lines changed: 89 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,19 @@ package main
33
import (
44
"archive/tar"
55
"bufio"
6-
"encoding/json"
76
"flag"
87
"fmt"
9-
"github.com/samalba/dockerclient"
8+
"github.com/fsouza/go-dockerclient"
109
"io"
1110
"log"
1211
"os"
1312
"path"
1413
"path/filepath"
1514
"strings"
16-
//"time"
1715
)
1816

1917
varcfgstruct {
20-
Docker*dockerclient.DockerClient
18+
Docker*docker.Client
2119
Pathsstruct {
2220
Postgresstring
2321
Dtmdstring
@@ -60,7 +58,7 @@ func get_labels(container_id string) map[string]string {
6058
returninfo.Config.Labels
6159
}
6260

63-
funcget_containers(morelabels...string) []dockerclient.Container {
61+
funcget_containers(morelabels...string) []docker.APIContainers {
6462
labellist:=make([]string,len(labels)+len(morelabels))
6563
i:=0
6664
fork,v:=rangelabels {
@@ -72,12 +70,13 @@ func get_containers(morelabels ...string) []dockerclient.Container {
7270
i+=1
7371
}
7472
filters:=map[string][]string{"label":labellist}
75-
filterstr,err:=json.Marshal(filters)
76-
iferr!=nil {
77-
log.Fatal(err)
78-
}
7973

80-
containers,err:=cfg.Docker.ListContainers(true,true,string(filterstr))
74+
opts:= docker.ListContainersOptions{
75+
All:true,
76+
Size:false,
77+
Filters:filters,
78+
}
79+
containers,err:=cfg.Docker.ListContainers(opts)
8180
iferr!=nil {
8281
log.Fatal(err)
8382
}
@@ -86,25 +85,22 @@ func get_containers(morelabels ...string) []dockerclient.Container {
8685
}
8786

8887
funcget_ip(container_idstring) (string,bool) {
89-
info,err:=cfg.Docker.InspectContainer(container_id)
88+
cont,err:=cfg.Docker.InspectContainer(container_id)
9089
iferr!=nil {
9190
log.Fatal(err)
9291
}
9392

94-
net,err:=cfg.Docker.InspectNetwork("contain")
95-
iferr!=nil {
96-
log.Fatal(err)
97-
}
93+
ip:=cont.NetworkSettings.Networks["contain"].IPAddress
9894

99-
returnnet.Containers[container_id].IPv4Address,info.State.Running
95+
returnip,cont.State.Running
10096
}
10197

10298
funcstatus() {
10399
log.Println("--- status")
104100

105101
for_,c:=rangeget_containers() {
106102
name:=c.Names[0]
107-
ip,running:=get_ip(c.Id)
103+
ip,running:=get_ip(c.ID)
108104
ifrunning {
109105
fmt.Printf("%s (%s)\n",name,ip)
110106
}else {
@@ -206,23 +202,25 @@ func open_as_tar(paths map[string]string) *io.PipeReader {
206202
funcbuild_image() {
207203
log.Println("--- build")
208204

209-
reader:=open_as_tar(map[string]string{
205+
tarstream:=open_as_tar(map[string]string{
210206
"Dockerfile":"Dockerfile",
211207
cfg.Paths.Postgres:"postgres",
212208
cfg.Paths.Dtmd:"dtmd",
213209
cfg.Paths.DtmBench:"dtmbench",
214210
})
215-
deferreader.Close()
211+
defertarstream.Close()
216212

217-
config:=&dockerclient.BuildImage{
218-
Context :reader,
219-
RepoName :"postgrespro",
220-
SuppressOutput :false,
221-
ForceRemove :true,
222-
Remove :true,
213+
buildreader,buildstream:=io.Pipe()
214+
config:= docker.BuildImageOptions{
215+
InputStream :tarstream,
216+
OutputStream :buildstream,
217+
Name :"postgrespro",
218+
SuppressOutput :false,
219+
ForceRmTmpContainer :true,
220+
RmTmpContainer :true,
223221
}
224222

225-
buildreader,err:=cfg.Docker.BuildImage(config)
223+
err:=cfg.Docker.BuildImage(config)
226224
iferr!=nil {
227225
log.Fatal(err)
228226
}
@@ -237,31 +235,48 @@ func build_image() {
237235
}
238236
}
239237

240-
funccreate_bulk_containers(config dockerclient.ContainerConfig,rolestring,numint) {
238+
funccreate_bulk_containers(imagestring,netnamestring,rolestring,numint) {
239+
clabels:=make(map[string]string)
240+
fork,v:=rangelabels {
241+
clabels[k]=v
242+
}
243+
clabels["role"]=role
244+
241245
fori:=0;i<num;i++ {
242-
config.Labels["role"]=role
243246
name:=fmt.Sprintf("%s%d",role,i)
244-
config.Hostname=name
245-
id,err:=cfg.Docker.CreateContainer(&config,name,nil)
247+
opts:= docker.CreateContainerOptions{
248+
Name:name,
249+
Config:&docker.Config{
250+
Hostname :name,
251+
Labels :clabels,
252+
Tty :true,
253+
Image :image,
254+
},
255+
HostConfig:&docker.HostConfig{
256+
Privileged :true,
257+
NetworkMode :netname,
258+
},
259+
}
260+
c,err:=cfg.Docker.CreateContainer(opts)
246261
iferr!=nil {
247262
log.Fatal(err)
248263
}
249264

250-
log.Printf("created container %s (%s...)\n",name,id[:8])
265+
log.Printf("created container %s (%s...)\n",name,c.ID[:8])
251266
}
252267
}
253268

254269
funccreate_network(namestring) {
255-
netconfig:=dockerclient.NetworkCreate{
270+
opts:=docker.CreateNetworkOptions{
256271
Name :name,
257272
CheckDuplicate :true,
258273
Driver :"bridge",
259274
}
260-
response,err:=cfg.Docker.CreateNetwork(&netconfig)
275+
net,err:=cfg.Docker.CreateNetwork(opts)
261276
iferr!=nil {
262277
log.Fatal(err)
263278
}
264-
log.Printf("created network %s (%s...)\n",name,response.ID[:8])
279+
log.Printf("created network %s (%s...)\n",name,net.ID[:8])
265280
}
266281

267282
funcremove_network(namestring) {
@@ -275,38 +290,26 @@ func remove_network(name string) {
275290
funccreate_containers() {
276291
log.Println("--- create")
277292

293+
image:="postgrespro:latest"
278294
netname:="contain"
279295
create_network(netname)
280296

281-
clabels:=make(map[string]string)
282-
fork,v:=rangelabels {
283-
clabels[k]=v
284-
}
285-
286-
config:= dockerclient.ContainerConfig{
287-
Image :"postgrespro:latest",
288-
Tty :true,
289-
Labels :clabels,
290-
}
291-
config.HostConfig.Privileged=true
292-
config.HostConfig.NetworkMode=netname
293-
294-
create_bulk_containers(config,"postgres",cfg.NodesAs.Postgres)
295-
create_bulk_containers(config,"dtmd",cfg.NodesAs.Dtmd)
296-
create_bulk_containers(config,"dtmbench",cfg.NodesAs.DtmBench)
297+
create_bulk_containers(image,netname,"postgres",cfg.NodesAs.Postgres)
298+
create_bulk_containers(image,netname,"dtmd",cfg.NodesAs.Dtmd)
299+
create_bulk_containers(image,netname,"dtmbench",cfg.NodesAs.DtmBench)
297300
}
298301

299302
funcstart_containers() {
300303
log.Println("--- up")
301304

302305
for_,c:=rangeget_containers() {
303306
name:=c.Names[0]
304-
ip,running:=get_ip(c.Id)
307+
ip,running:=get_ip(c.ID)
305308
ifrunning {
306309
fmt.Printf("%s (%s)\n",name,ip)
307310
}else {
308311
log.Printf("starting %s\n",name)
309-
err:=cfg.Docker.StartContainer(c.Id,nil)
312+
err:=cfg.Docker.StartContainer(c.ID,nil)
310313
iferr!=nil {
311314
log.Fatal(err)
312315
}
@@ -319,10 +322,10 @@ func stop_containers() {
319322

320323
for_,c:=rangeget_containers() {
321324
name:=c.Names[0]
322-
ip,running:=get_ip(c.Id)
325+
ip,running:=get_ip(c.ID)
323326
ifrunning {
324327
log.Printf("stopping %s (%s)\n",name,ip)
325-
err:=cfg.Docker.StopContainer(c.Id,5)
328+
err:=cfg.Docker.StopContainer(c.ID,5)
326329
iferr!=nil {
327330
log.Println(err)
328331
}
@@ -335,25 +338,42 @@ func stop_containers() {
335338
funcrun_in_container(container_idstring,argv...string) {
336339
log.Printf("run in %s: %v",container_id[:8],argv)
337340

338-
config:=dockerclient.ExecConfig{
339-
AttachStdin :true,
341+
createopts:=docker.CreateExecOptions{
342+
AttachStdin :false,
340343
AttachStdout :true,
341344
AttachStderr :true,
342345
Tty :true,
343346
Cmd :argv,
344347
Container :container_id,
345-
Detach :false,
346348
}
347349

348-
execid,err:=cfg.Docker.ExecCreate(&config)
350+
exec,err:=cfg.Docker.CreateExec(createopts)
349351
iferr!=nil {
350352
log.Fatal(err)
351353
}
352354

353-
err=cfg.Docker.ExecStart(execid,&config)
355+
reader,writer:=io.Pipe()
356+
357+
startopts:= docker.StartExecOptions{
358+
Detach :false,
359+
Tty :true,
360+
OutputStream :writer,
361+
ErrorStream :writer,
362+
}
363+
364+
err=cfg.Docker.StartExec(exec.ID,startopts)
354365
iferr!=nil {
355366
log.Fatal(err)
356367
}
368+
369+
scanner:=bufio.NewScanner(reader)
370+
forscanner.Scan() {
371+
fmt.Println(scanner.Text())
372+
}
373+
374+
iferr:=scanner.Err();err!=nil {
375+
log.Fatal(err)
376+
}
357377
}
358378

359379
funcinitdb(container_idstring) {
@@ -365,7 +385,7 @@ func init_data() {
365385
log.Println("--- init")
366386

367387
for_,c:=rangeget_containers("role=postgres") {
368-
initdb(c.Id)
388+
initdb(c.ID)
369389
}
370390
}
371391

@@ -375,7 +395,14 @@ func clean_all() {
375395
for_,c:=rangeget_containers() {
376396
name:=c.Names[0]
377397
log.Printf("removing %s\n",name)
378-
err:=cfg.Docker.RemoveContainer(c.Id,true,true)
398+
399+
opts:= docker.RemoveContainerOptions{
400+
ID :c.ID,
401+
RemoveVolumes :true,
402+
Force :true,
403+
}
404+
405+
err:=cfg.Docker.RemoveContainer(opts)
379406
iferr!=nil {
380407
log.Println(err)
381408
}
@@ -415,7 +442,7 @@ func init() {
415442
cfg.Actions= []string{"status"}
416443
}
417444

418-
cfg.Docker,_=dockerclient.NewDockerClient("unix:///var/run/docker.sock",nil)
445+
cfg.Docker,_=docker.NewClientFromEnv()
419446
dump_cfg()
420447

421448
should_exist(path.Join(cfg.Paths.Postgres,"bin","postgres"))

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp