Skip to content
This repository was archived by the owner on Aug 22, 2024. It is now read-only.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

1 Commit

Repository files navigation

docker

docker is a lightweight docker libary that uses only the golang standard libary. This library can be used for basic operations like start, stop, create and delete containers.

Example: create, start, stop and delete a container

package main
import (
"log""time""github.com/grid-x/docker"
)
funcmain() {
dc:=docker.NewClient("/var/run/docker.sock")
constcontainer="gridx-docker-test"log.Printf("create container %s", container)
exposedPorts:= []string{"80/tcp"}
cID, err:=dc.CreateContainer(container, "nginxdemos/hello:plain-text", nil, exposedPorts, nil)
iferr!=nil {
log.Println(err)
}
deferfunc() {
log.Printf("delete container %s", container)
iferr:=dc.DeleteContainer(cID); err!=nil {
log.Println(err)
}
}()
log.Printf("start container %s", container)
iferr:=dc.StartContainer(cID); err!=nil {
log.Println(err)
}
deferfunc() {
log.Printf("stop container %s", container)
iferr:=dc.StopContainer(cID); err!=nil {
log.Println(err)
}
}()
// simulating a running program. During this time we can check if// everything was started by entering docker network ls and// docker container ps.time.Sleep(time.Second*60)
}

Example: Create a container from a container and connect both containers via a docker network

package main
import (
"fmt""log""os""time""github.com/grid-x/docker"
)
funcmain() {
dc:=docker.NewClient("/var/run/docker.sock")
// get containerID e.g.:// docker run --rm -it ubuntu:latest// root@ef3e8b0e9c4c:/# echo $HOSTNAME// ef3e8b0e9c4cmyID:=os.Getenv("HOSTNAME")
log.Println("myID", myID)
variintnetwork:=fmt.Sprintf("test_net_%d", i)
log.Printf("create network %s", network)
nwID, err:=dc.CreateNetwork(network)
iferr!=nil {
log.Fatal(err)
}
log.Println("networkID", nwID)
deferdc.DeleteNetwork(nwID)
container:=fmt.Sprintf("test_%d", i)
log.Printf("create container %s", container)
exposedPorts:= []string{"80/tcp"}
cID, err:=dc.CreateContainer(container, "nginxdemos/hello:plain-text", nil, exposedPorts, nil)
iferr!=nil {
log.Println(err)
}
deferdc.DeleteContainer(cID)
iferr:=dc.ConnectNetwork(myID, nwID, nil); err!=nil {
log.Println(err)
}
deferdc.DisconnectNetwork(myID, nwID)
iferr:=dc.ConnectNetwork(cID, nwID, nil); err!=nil {
log.Println(err)
}
deferdc.DisconnectNetwork(cID, nwID)
iferr:=dc.StartContainer(cID); err!=nil {
log.Println(err)
}
deferdc.StopContainer(cID)
// simulating a running program. During this time we can check if// everything was started by entering docker network ls and// docker container ps.time.Sleep(time.Second*60)
}

About

lightweight docker client without external dependencies

Topics

Resources

Stars

10 stars

Watchers

10 watching

Forks

Releases

Packages

Contributors

Languages