pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/grid-x/docker

GitHub - grid-x/docker: lightweight docker client without external dependencies · GitHub
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"
)

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

About

lightweight docker client without external dependencies

Topics

Resources

Stars

10 stars

Watchers

10 watching

Forks

Releases

Packages

Contributors

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

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