New Rice Growth

新米SESエンジニア日々の成長日記

DockerでGolangコンテナ立てて入門する

前提条件

  • dockerがインストールされている

docker imageを持ってくる

このコマンドでdockerhubから最新のgolang docker imageを落とすことができる

$ docker pull golang

落としてきたdocker imageを確認する

$ docker images
REPOSITORY              TAG       IMAGE ID       CREATED         SIZE
golang                  latest    861b1afd1d13   7 weeks ago     862MB

コンテナを起動する

落としてきたimageのコンテナを起動する

$ docker run -d -ti --name my_golang golang

最後のgolangはIMAGE IDでもおっけい
今回やと861b1afd1d13

オプション
-d : コンテナをバックグラウンドで実行するよ
-t (tty) : ホスト側のコンソールの標準出力とコンテナの標準出力をつなげる
-i (interactive) : ホスト側の入力をコンテナの標準出力をつなげる
--name : コンテナの名前を決める

コンテナが立ち上がったかどうか確認する

$ docker ps
CONTAINER ID   IMAGE                   COMMAND                  CREATED         STATUS        PORTS                               NAMES
455c14a23d88   golang                  "bash"                   2 seconds ago   Up 1 second                                       my-golang

これでmy-golangという名前のgolangコンテナができた

いざ、立ち上げたコンテナに入る

$ docker exec -ti golang bash
root@7272531ef7bd:/go#

実行環境構築完了

これだけで新しい言語に挑戦できるdocker素敵☆

ついでにHello Goする

エディタ入れる

viもvimも入っていなかったのでvimをinstallする
vscodeのremote containerを使う選択肢もありではあるが、今回はvimを使うことにする

ディストリビューションの確認

まずはlinuxディストリビューションを確認

$ cat /etc/*release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Debianなのでパッケージ管理はapt

apt-getをアップデート

$ apt-get update
Get:1 http://deb.debian.org/debian buster InRelease [121 kB]
Get:2 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
Get:3 http://deb.debian.org/debian buster-updates InRelease [51.9 kB]
Get:4 http://security.debian.org/debian-security buster/updates/main amd64 Packages [271 kB]
Get:5 http://deb.debian.org/debian buster/main amd64 Packages [7907 kB]
Get:6 http://deb.debian.org/debian buster-updates/main amd64 Packages [9504 B]
Fetched 8426 kB in 4s (2232 kB/s)
Reading package lists... Done

vimをinstallする

$ apt-get -y install vim

vimを起動して見て確認

$ vim

:qvim終了

goを書いてみる

$ mkdir myapp
$ cd myapp
$ vim hello_world.go
package main

import "fmt"

func main() {
    fmt.Println("Hello Go")
}

goファイルを実行する

golangコンパイル言語ですがgo runコマンドでコンパイルと実行を一緒にやってくれる

$ go run hello_world.go
Hello Go