TLDR
- golangでHello Worldをやる
- dockerが使える環境であることが前提
golangイメージの起動とHello World実行
$ docker pull golang:1.8.3-alpine3.6
$ docker run -it golang:1.8.3-alpine3.6
# apk --no-cache add vim=8.0.0595-r0
# vim main.go
package main
import "fmt"
func main() {
fmt.Printf("Hello World\n")
}
# go run main.go
Hello World
# go build main.go
# ls -l main*
-rwxr-xr-x 1 root root 1560062 Aug 5 06:14 main
-rw-r--r-- 1 root root 81 Aug 5 06:13 main.go
# ./main
Hello World
# exit
作成したイメージを保存する(コミットする)
$ docker ps -a | grep golang:1.8.3-alpine3.6
1e9306728b3e golang:1.8.3-alpine3.6 "/bin/sh" 5 minutes ago Exited (0) 50 seconds ago infallible_hamilton
$ docker commit infallible_hamilton tsujimitsu:golang
sha256:215c40c37af81fac9bbc4daa030ce965d2dd3e940729589f0d79778770aaee67
$ docker image ls | grep golang
tsujimitsu golang 215c40c37af8 13 seconds ago 285 MB
コミットしたイメージファイルを起動する
$ docker run -it tsujimitsu:golang
# ./main
Hello World
付録(Dockerfile)
$ vim Dockerfile
FROM golang:1.8.3-alpine3.6
MAINTAINER tsujimitsu
RUN apk --no-cache add vim=8.0.0595-r0
$ docker build -t tsujimitsu/golang:1.8.3 ./
$ docker image ls | grep tsujimitsu/golang
tsujimitsu/golang 1.8.3 ff0c5cdf4a51 29 seconds ago 284 MB
$ docker run -it tsujimitsu/golang:1.8.3
# go version
go version go1.8.3 linux/amd64
# vim a.out
# exit