LoginSignup
2
2

More than 3 years have passed since last update.

MacにDockerでGolang環境を作ってみる - vol.2 Docker起動?

Last updated at Posted at 2019-11-11

今回の記事は、以下を参考に作成しました。
で、自分なりに「あれ?」って詰まったところ?を捕捉しつつ記載します。

こちらの記事にお世話になりました。
メインのやった内容はこちらなので、
並行して読んでいただけるとありがたいです。
https://qiita.com/yonaimineakio/items/0990648bbce64de7edfa

作業ディレクトリ作成 & ファイル配置

 今までHomeにいたので、任意の場所に移動して、ディレクトリを作ってみました。

  $ mkdir go_doc
  $ cd go_doc/

 ここで移動した「go_doc」ディレクトリに、以下のファイルを作成します。
 (元記事参照)
  ・main.go
  ・Dockerfile

 つまり、階層はこんな感じ。

   任意の階層
     ∟ go_doc
       ∟ Dockerfile
       ∟ main.go

Dockerfile って何書いてんの?

で、この状態から、以下のDockerfileが何を定義しているのか、個人的に絵にしてみる。

Dockerfile
     FROM golang:1.9
     mkdir /echo
     COPY main.go /echo
     CMD ["go", "run", "/echo/main.go"]

   FROM golang:1.9
    https://hub.docker.com/_/golang
    ①公式の Golang Docker コンテナの、バージョン1.9をベースにするよ。
スクリーンショット 2019-11-11 10.00.22.png

   mkdir /echo
    ②DockerのHomeの下に、「echo」っていうディレクトリを作るよ。
スクリーンショット 2019-11-11 10.03.38.png

   COPY main.go /echo
    ③Localにある「main.go」ファイルを、
     ②で作った「echo」ディレクトリの下にコピーするよ。
スクリーンショット 2019-11-11 10.08.49.png

  CMD ["go", "run", "/echo/main.go"]
    ④Docker側でコマンド実行!
スクリーンショット 2019-11-11 10.12.18.png

  結果。
   ・ Dockerのベース定義
   ・ 実行ファイルの配置
   ・ 実行
  っていう手順を書いてる、ってことなのかなー、と。
  Dockerfile 自体には他にも定義できることがいっぱいあって、
  これだけではないと思うんだけど、1ファイルの実行だけならこんな感じになるのかな。

イメージのビルド

  さっき作ったDockerfileから実体を作成?

基本
     $ docker image build -t イメージ名[:タグ名] Dockerfile配置ディレクトリのパス

  基本の構文はこれ。イメージ名とタグ名は任意でいいみたい。
  イメージ名とか、タグ名って何に使われてるんだろ?と思って調べてたら
  こんな記事を見つけました。
https://qiita.com/t-yotsu/items/559731aca6300eef78ec

  で、パスは同じ階層にいるから「.」になるんですな。

shell
     $ docker image build -t example/docker:tag .
     Sending build context to Docker daemon  10.24kB
     Step 1/4 : FROM golang:1.9
      ---> ef89ef5c42a9
     Step 2/4 : RUN mkdir /echo
    ---> Using cache
    ---> 46ca04568ee5
   Step 3/4 : COPY main.go /echo
    ---> Using cache
    ---> 24719acca39b
   Step 4/4 : CMD ["go", "run", "/echo/main.go"]
      ---> Using cache
      ---> 03df9c7950f8
     Successfully built 03df9c7950f8
     Successfully tagged example/docker:tag

  実行したらこんな感じになりました。

  で、元記事を参考にコンテナの起動まで行いました。
  その後、いざ実行しようと思ったらポートフォワーディングというのが必要だそうで。
  これについては次回の記事で書きます。

  なんか消化不良ですが今回はここまでー。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2