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
:q
でvim終了
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