Skip to content

Instantly share code, notes, and snippets.

@goern
Created December 2, 2015 20:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save goern/dd9e78426d4b020beb8f to your computer and use it in GitHub Desktop.
Save goern/dd9e78426d4b020beb8f to your computer and use it in GitHub Desktop.
package main
import (
"bytes"
"fmt"
"io/ioutil"
"os"
"github.com/fsouza/go-dockerclient"
)
func pullImage(registry, repository, name, tag string) {
fmt.Printf("pulling %s/%s/%s:%s... ", registry, repository, name, tag)
client, err := docker.NewClientFromEnv()
if err != nil {
fmt.Printf("%#v\n", err)
return
}
err = client.PullImage(
docker.PullImageOptions{repository + "/" + name, registry, tag, nil, false},
docker.AuthConfiguration{})
if err != nil {
fmt.Printf("%#v\n", err)
return
}
fmt.Println("done.")
}
func dumpImage(id string) {
var buf bytes.Buffer
client, err := docker.NewClientFromEnv()
if err != nil {
fmt.Printf("%#v\n", err)
return
}
err = client.ExportImages(docker.ExportImagesOptions{Names: []string{id}, OutputStream: &buf})
if nil != err {
fmt.Printf("%#v\n", err)
return
}
err = ioutil.WriteFile("image.dat", buf.Bytes(), 0644)
if err != nil {
fmt.Printf("%#v\n", err)
return
}
}
func main() {
pullImage("registry.docker.com", "projectatomic", "mariadb-centos7-atomicapp", "latest")
client, err := docker.NewClientFromEnv()
if err != nil {
fmt.Printf("%#v\n", err)
return
}
mariadbHistory, _ := client.ImageHistory("projectatomic/mariadb-centos7-atomicapp")
fmt.Printf("%#v\n", mariadbHistory[0].ID)
err = client.DownloadFromContainer(mariadbHistory[0].ID, docker.DownloadFromContainerOptions{os.Stdout, "/Nulecule"})
if err != nil {
fmt.Printf("%#v\n", err)
return
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment