Chapter 04

コンポーネン - Image

ここだけは理解しよう

Imageは 環境のスナップショット としての役割を持っています。
上記は引用ですが、この考えを忘れないようにしましょう。

  • Docker Image は Docker Hub から取得できます
  • tag を使用してバージョン管理ができます(バージョン管理しましょう)
  • Docker Image から Container を作成します

alpineを動かす

image1.png

上記の流れで Ubuntu の Image から Container を作っていきます。
(Docker hub にアップロードするなどは次回)

# Alpine Linuxを起動して、/etc/issueの中をcatしてみる。
docker run alpine cat /etc/issue

こちらが実行結果になります。無事にコンテナが実行できているとがわかります。
image2.png

docker run コマンドを実行することで、
ホストに対象の Image がない場合は、docker hub より Image を取得します。

コンテナの中で作業をしたいなー

と思いませんか?
せっかくコンテナで Linux とかができるなら、設定をみたり試したい人もいるでしょう。

その場合 run コマンドの後に -i-t のオプションを設定することで実現できます。

# Alpine Linuxを起動して、shellを使ってコンテに入る
docker run -it alpine sh
pwd
ls
exit

こちらが実行結果になります。
無事にコンテナで起動している apline linux に入ったのがわかります。
image3.png

-i -tのオプションについて

docker runのドキュメントから引用しています。

オプション 説明
-i(--interactive) コンテナの標準入力を有効化
-t(-tty) TTY を割り当る

オプションは正直理解できないくらい多いので、
必要なタイミングで覚えていったり調べていけばいいと思っています。
もちろん、覚えられるなら覚えた方が何かと便利ですよ。

dockerで言語環境を取得

みんな大好きPythonをコンテナで

# python実行環境をslim-busterで取得して、pythonのバージョンを確認
docker run python:slim-buster python --version

image4.png

これだけだとつまらないので、簡単な print をしてみましょう。

# python実行環境をslim-busterで取得して、pythonコマンドを実行
docker run python:slim-buster python -c 'print("hoge")'

image5.png

dockerでも使われているGoをコンテナで

# python実行環境をalpineで取得して、pythonのバージョンを確認
docker run  golang:alpine go version

image6.png

tagを利用してみる(もう利用しているよ)

docker run python:slim-buster python --version

上記コードの :slim-buster と記載されている部分が tag になります。

こちらは、Docker Hub の Python の tag 一覧となります。
Python のバージョンであったり、Linux の環境であったり、様々な Python を実行できます。
image6.png

例えば…
Python の 3.7 を使っていたが 3.8 が出たので、
自分のホスト PC の設定を変更せずに 3.8 を簡単に試すことができます。

また、Docker は公式で 3 パターンの命名規則を定義できます。
こちらを覚えておくと今度 Docker を使う上でいろいろ出来そうなので、覚えておきましょう。

パターン tag の命名
Docker 公式のイメージ <イメージ名>:<tag>
ユーザーが作成したイメージ <ユーザー名>/<イメージ名>:<tag>
非公式レジストリのイメージ <レジストリ名>/<ユーザー名>/<イメージ名>:<tag>

:<tag> の指定をしない場合
 :latest が自動的に付与されます。

DockerHub を使用しない場合
 (ECR や GCR などの非公式レジストリ)は <tag> の設定が必須になります(3 つ目のパターン)。