Dockerでgolangを動かしてみます。
Dockerを触ったことがない人でもわかるように意識して書きました。

事前準備

・Dockerのインストールが済んでいること
・Vimの基本的な操作(編集、保存、閉じる)ができること

本題

下記のコマンドを実行します。
docker run -it –name=”任意の名前” -p 8080:80 golang:1.15 bash

コマンドオプションの意味
-i :ホストの入力をコンテナの標準出力をつなげる
-t :コンテナの標準出力とホストの出力をつなげる

-i,-tオプションを付けないとコンテナの中で入力できない
-iオプションと合わせて-itと記述可能

–name=” ” :コンテナ名に任意の名前を付ける #付けなくても動きます
-p 8080:80 :ポートマッピング

 書き方:-p [ホスト側のポート番号]:[コンテナのポート番号]
-p 8080:80で localhost:8080 への接続が、コンテナ内のポート 80 へ送られます。

golang:1.15 :構築するイメージを指定
bash :コンテナ内で Bash シェルを起動

 ❯❯❯ docker run -it --name="first_app" -p 8080:80 golang:1.15 bash

dockerコンテナの中にはいる

#Vimを使いたいのでupdate実行
root@51c29f39210b:/go# apt update
Get:1 http://deb.debian.org/debian buster InRelease [122 kB]
Get:2 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
...

#Vimをインストール
root@51c29f39210b:/go#  apt install vim
Reading package lists... Done
...

#Vimでmain.goファイルを作成
root@51c29f39210b:/go# vim main.go

main.goファイル内に下記のような簡単なコードを書いてみる

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

Vimを閉じてmain.goを実行する。

root@51c29f39210b:/go# go run main.go
Hello, World!

Hello, World!を表示することができました。

おまけ

Dockerから出てもう一度接続する

Dockerから出る

root@51c29f39210b:/go# exit

接続する

#コンテナの状態を確認する
❯❯❯ docker ps -a                                                                                                                                    
CONTAINER ID   IMAGE         COMMAND                  CREATED             STATUS                           PORTS                      NAMES
51c29f39210b   golang:1.15   "bash"                   About an hour ago   Exited (127) 3 seconds ago                                  first_app

#コンテナを起動する docker start <CONTAINER IDまたはNAME>
❯❯❯ docker start 51c29f39210b

#コンテナに接続するdocker attach <CONTAINER IDまたはNAME>
❯❯❯ docker attach 51c29f39210b

docker exec コマンドでも接続できる。
attachで接続した場合、exitコマンドで抜けるとコンテナが停止しますが、execで接続した場合、exitコマンドで抜けるてもコンテナが停止しないという違いがあります。
詳しくはこちらの記事に記載してあります。

bannerAds