Dockerってなによ?
Dockerで開発してみる
ローカルにDockerを導入する
- Docker for Mac -> ネットワーク周りが微妙に特殊
- Docker for Windows -> Windows10からなのが残念
- Docker Toolbox -> Windows7は64bitOSである必要あり
- VirtualBox+Vagrant -> たぶんいちばん汎用的
ほかにもあるけどこの辺がおそらく主流
とりあえずDockerでHello world!
$ docker container run hello-world
なにが起こったの?
-
Docker Hubからhello-worldのイメージをダウンロード(
docker image pull
) - hello-worldイメージをフォアグラウンドで実行
hello-worldイメージはなにをしているのか見てみよう
Dockerfileを見てみるとわかります
これを踏まえて開発の流れ
- ベースイメージを決める
- Dockerfileを作成する
- Dockerfileを元にイメージをbuild(
docker image build
) - buildしたイメージをデプロイ(実行)
(ベースイメージ内で作業した内容をcommitする方法もあるけどアンチパターンだと思う)
golangでhello-worldしてみよう
1. ベースイメージを決める
golangの公式イメージ(golang:1.7.5)を使用することにします。
当然、まっさらなイメージを選択して自分でgolangのインストールから実施するのもOKです。
2. Dockerfileを作成する
FROM golang:1.7.5
COPY hello-world.go /src/
RUN go build /src/hello-world.go && rm /src/hello-world.go
ENTRYPOINT ./hello-world
hello-world.go
package main
import "fmt"
func main() {
fmt.Printf("Hello world\n")
}
3. Dockerfileを元にイメージをbuild
$ docker image build . -t dockertest:1.0
4. buildしたイメージをデプロイ(実行)
$ docker container run dockertest:1.0
Dockerfile書き始める前に色々試したい
ベースイメージでbashを実行して作業しましょう。
$ docker container run -it --rm golang:1.7.5 /bin/bash
とりあえず今日はこのあたりまで。指摘とかあったら修正します。
次回(あるのか!?)はコンテナ間の通信について、とかかな。