Socket
Book a DemoInstallSign in
Socket

github.com/grid-x/docker

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/grid-x/docker

v0.0.0-20200217123402-7363bc750886
Source
Go
Version published
Created
Source

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"
)

func main() {
    dc := docker.NewClient("/var/run/docker.sock")

    const container = "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)
    if err != nil {
        log.Println(err)
    }
    defer func() {
        log.Printf("delete container %s", container)
        if err := dc.DeleteContainer(cID); err != nil {
            log.Println(err)
        }
    }()

    log.Printf("start container %s", container)
    if err := dc.StartContainer(cID); err != nil {
        log.Println(err)
    }
    defer func() {
        log.Printf("stop container %s", container)
        if err := 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"
)

func main() {
    dc := docker.NewClient("/var/run/docker.sock")

    // get containerID e.g.:
    // docker run --rm -it ubuntu:latest
    // root@ef3e8b0e9c4c:/# echo $HOSTNAME
    // ef3e8b0e9c4c
    myID := os.Getenv("HOSTNAME")

    log.Println("myID", myID)

    var i int

    network := fmt.Sprintf("test_net_%d", i)
    log.Printf("create network %s", network)
    nwID, err := dc.CreateNetwork(network)
    if err != nil {
        log.Fatal(err)
    }
    log.Println("networkID", nwID)
    defer dc.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)
    if err != nil {
        log.Println(err)
    }
    defer dc.DeleteContainer(cID)

    if err := dc.ConnectNetwork(myID, nwID, nil); err != nil {
        log.Println(err)
    }
    defer dc.DisconnectNetwork(myID, nwID)

    if err := dc.ConnectNetwork(cID, nwID, nil); err != nil {
        log.Println(err)
    }
    defer dc.DisconnectNetwork(cID, nwID)

    if err := dc.StartContainer(cID); err != nil {
        log.Println(err)
    }
    defer dc.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)
}

FAQs

Package last updated on 17 Feb 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.