Docker:【はじめて自作した】Dockerイメージ
目次
はじめに
概要
- ベースイメージをカスタマイズ
- 独自の環境イメージを作成して、コンテナ実行する
手順の流れ
- Dockerファイルの作成
- Dockerイメージを作成する設定ファイル
- どのような環境にするか記載する
- イメージのビルド
- 作成したDockerファイルを使ってイメージを作成
- 今回は標準のファイル名「Dockerfile」を利用した
- コンテナ実行
- 作成したDockerイメージを使って実行
前提
- Dockerの基本
- イメージ
- コンテナ
- Dockerファイル
- Docker操作コマンド(参照、実行、ビルド、停止/削除)
- 参考
- Dockerの基本が理解できる記事
- Docker:【チュートリアルやってみた】基本編
準備
Dockerファイル作成
cat <<+ > Dockerfile
FROM alpine
CMD ["/bin/sh", "-c", "echo AI Self Studying by \$AUTHOR."]
+
ls -l Dockerfile
-rw-rw-r-- 1 futa futa 71 Feb 17 23:54 Dockerfile
- cat <<+ > Dockerfile
- Dockerファイルを作成
- viなどのエディタでもいいが、コピペできるようにLinuxのヒアドキュメントを利用
- ls -l Dockerfile
- Dockerファイルが作成されたことを確認
- FROM
- Apline Linuxがベースイメージ
- バージョン指定していないので最新(leatest)
- バージョン指定する場合はalpine:3.5のようにする
- CMD
- 「,」で区切ってコマンドを記載
- /bin/shを起動
- -c …… コマンド実行するshellのオプション
- 実行するコマンド「echo …」
- 環境変数を「AUTHOR」とする
- 環境変数「AUTHOR」について
- コンテナ実行時に引数で値を指定できる
- 補足
- Dockerファイルに利用できる基本コマンドについて
- Docker:【コマンド集】最初に役に立ったもの
ベースイメージのダウンロード
sudo docker images
sudo docker pull alpine
sudo docker images
$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 4 months ago 13.3kB ubuntu 12.04 5b117edd0b76 4 years ago 104MB dockersamples/static-site latest f589ccde7957 5 years ago 191MB $ sudo docker pull alpine Using default tag: latest latest: Pulling from library/alpine 59bf1c3509f3: Pull complete Digest: sha256:21a3deaa0d32a8057914f36584b5288d2e5ecc984380bc0118285c70fa8c9300 Status: Downloaded newer image for alpine:latest docker.io/library/alpine:latest $ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE alpine latest c059bfaa849c 2 months ago 5.59MB hello-world latest feb5d9fea6a5 4 months ago 13.3kB ubuntu 12.04 5b117edd0b76 4 years ago 104MB dockersamples/static-site latest f589ccde7957 5 years ago 191MB
- docker images
- 現在あるイメージを一覧表示する
- docker pull
- イメージのダウンロード
- 今回は「alpline」を指定してDocker HUBよりAlpine Linuxのイメージをダウンロード
- 結果考察
- ダウンロードが成功した
- イメージ一覧に表示されている(REPOSITORY列が「alpine」)
Dockerイメージ作成と実行
イメージビルド
sudo docker build -t futa-sample .
sudo docker images
$ sudo docker build -t futa-sample . Sending build context to Docker daemon 2.048kB Step 1/2 : FROM alpine ---> c059bfaa849c Step 2/2 : CMD ["/bin/sh", "-c", "echo AI Self Studying by $AUTHOR."] ---> Running in 713d99150c66 Removing intermediate container 713d99150c66 ---> 4538bbabe489 Successfully built 4538bbabe489 Successfully tagged futa-sample:latest $ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE futa-sample latest 4538bbabe489 15 seconds ago 5.59MB alpine latest c059bfaa849c 2 months ago 5.59MB hello-world latest feb5d9fea6a5 4 months ago 13.3kB ubuntu 12.04 5b117edd0b76 4 years ago 104MB dockersamples/static-site latest f589ccde7957 5 years ago 191MB
- docker build
- Dockerイメージをビルドする
- Dockerファイルに記載したコマンドが順次実行されている
- 「-t」
- タグ名を指定
- タグ名は「futa-sample」
- 「.」
- カレントディレクトリにあるDockerファイルを使う
- Dockerファイル名は標準の「Dockerfile」を使用
- Dockerイメージをビルドする
- docker images
- イメージを一覧表示する
- REPOSITORY列に「futa-sample」が表示されている
- 補足
- docker buildで「-f」オプションを使えば、任意のDockerファイル名を利用できる
コンテナの実行
sudo docker run --name futa-conte -e AUTHOR=futa futa-sample
$ sudo docker run --name futa-conte -e AUTHOR=futa futa-sample AI Self Studying by futa.
- docker run
- 指定したイメージを使ってコンテナ実行する
- –name(nameの左のハイフン2つ)
- コンテナ名を指定
- コンテナ名は「futa-conte」とした
- -e
- コンテナに渡す環境変数を指定する
- コンテナに渡す環境変数「AUTHOR」に「futa」を設定
- -P
- 「-P」は省略した
- コンテナ実行するイメージを指定する
- イメージ名は先ほど自作した「futa-sample」を設定
- 結果考察
- DockerファイルのCMDで設定したコマンド(echo …)が実行された
- 環境変数AUTHORはコンテナ実行時のオプション「-e」で設定した「futa」に置き換わった
コンテナ実行履歴を確認
sudo docker ps -a
$ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a87e101fc051 futa-sample "/bin/sh -c 'echo AI…" 6 minutes ago Exited (0) 6 minutes ago futa-conte be19cc34d51b hello-world "/hello" 3 days ago Exited (0) 3 days ago condescending_almeida 13e8f94aab43 hello-world "/hello" 3 days ago Exited (0) 3 days ago gallant_lumiere e62a017fdc2d hello-world "/hello" 3 days ago Exited (0) 3 days ago magical_euclid
- docker ps -a
- コンテナ実行履歴が確認できる
- 「-a」オプションがなければ、実行中のコンテナを確認できる
- 今回は実行が終わっている(echo …で終了)ので「-a」オプションを付ける
- 一覧表示
- CONTAINER ID列 …… コンテナID「a87e101fc051」
- IMAGE列 …… 先ほど作成したイメージ「futa-sample」
- COMMAND列 …… DockerファイルのCMDで設定したコマンド「/bin/sh -c 'echo AI…」(表示は一部)
- NAMES列 …… 実行コンテナ名は「futa-conte」
後処理
コンテナ実行履歴を削除
sudo docker ps -a
sudo docker rm futa-conte
sudo docker ps -a
$ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a87e101fc051 futa-sample "/bin/sh -c 'echo AI…" 10 minutes ago Exited (0) 10 minutes ago futa-conte be19cc34d51b hello-world "/hello" 3 days ago Exited (0) 3 days ago condescending_almeida 13e8f94aab43 hello-world "/hello" 3 days ago Exited (0) 3 days ago gallant_lumiere e62a017fdc2d hello-world "/hello" 3 days ago Exited (0) 3 days ago magical_euclid $ sudo docker rm futa-conte futa-conte $ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES be19cc34d51b hello-world "/hello" 3 days ago Exited (0) 3 days ago condescending_almeida 13e8f94aab43 hello-world "/hello" 3 days ago Exited (0) 3 days ago gallant_lumiere e62a017fdc2d hello-world "/hello" 3 days ago Exited (0) 3 days ago magical_euclid
- docker ps -a
- 実行履歴の確認
- NAME列の「futa-conte」を確認
(削除キーワード)
- docker rm
- コンテナ実行履歴を削除する
- コンテナID「a87e101fc051」を使っても削除可能
- 結果考察
- 「docker rm」で削除成功したので、削除したコンテナ名「futa-conte」が表示された
- コンテナ実行履歴の一覧表示から「futa-conte」がなくなっている
イメージを削除
sudo docker images
sudo docker rmi futa-sample alpine
sudo docker images
$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE futa-sample latest 4538bbabe489 24 minutes ago 5.59MB alpine latest c059bfaa849c 2 months ago 5.59MB hello-world latest feb5d9fea6a5 4 months ago 13.3kB ubuntu 12.04 5b117edd0b76 4 years ago 104MB dockersamples/static-site latest f589ccde7957 5 years ago 191MB $ sudo docker rmi futa-sample alpine Untagged: futa-sample:latest Deleted: sha256:4538bbabe4897816892c2a9b433e203a59e57bbf01cfdc6f33b28a73d4a5a2cb Untagged: alpine:latest Untagged: alpine@sha256:21a3deaa0d32a8057914f36584b5288d2e5ecc984380bc0118285c70fa8c9300 Deleted: sha256:c059bfaa849c4d8e4aecaeb3a10c2d9b3d85f5165c66ad3a4d937758128c4d18 Deleted: sha256:8d3ac3489996423f53d6087c81180006263b79f206d3fdec9e66f0e27ceb8759 $ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 4 months ago 13.3kB ubuntu 12.04 5b117edd0b76 4 years ago 104MB dockersamples/static-site latest f589ccde7957 5 years ago 191MB
- docker images
- 今あるイメージを一覧表示
- REPOSITORY列「futa-sample」「alpine」がある
- docker rmi
- イメージ削除を実行
- 「futa-sample」「alpine」を同時に指定
- 結果考察
- 一覧から「futa-sample」「alpine」が消えた
- 掃除終わり!
リファレンス
-
Docker:【チュートリアルやってみた】基本編
- チュートリアル(基本編)
