はじめまして、名古屋支店のヤタテです。
今回の記事では、Dockerfileから自前のDockerイメージを作成する手順を書いてみます。
ゴールはdocker runコマンドで動作させるところまでです。
Dockerfileとは
Docker上で動作させるコンテナの構成情報を記述するファイルのこと。Dockerfileから作成されたDockerイメージは、公開されているDockerイメージにはない自分専用のものとなる。
Dockerfile のコマンド
Dockerfile内で使用できる主なコマンドを紹介する。
No | コマンド | 説明 |
---|---|---|
1 | FROM | ベースイメージを指定する際に使用。 事前にベースイメージを取得(pull)していなくても自動取得する。 |
2 | RUN | OSのコマンドを実行する際に使用。 パッケージのインストールなどに使用される。 |
3 | CMD | コンテナ起動時に実行するコマンドを指定する際に使用。 Dockerfileには1つしか記述できない。 |
4 | COPY | コンテナ内にファイルやディレクトリをコピーする際に使用。 |
1行に1コマンドを記載し、上から順に実行される。ただし、直前のコマンド実行状態になるわけではない。また、#で始まる行はコメント行となる。
ベースイメージscratchは、空のイメージでshやbashの実行もできない。
上記のもの以外や詳細については、こちら(Dockerfile リファレンス)が参考となる。
Dockerイメージの作成
実際にDockerfileからDockerイメージの作成をする。
1.Dockerfile
今回使用するDockerfileは以下のものとする。
#amazonlinuxの最新版をベースイメージとする FROM amazonlinux:latest #スクリプト用ディレクトリの作成 RUN mkdir /script #シェルスクリプトを作成したディレクトリにコピー COPY hello_world.sh /script/ #シェルスクリプトの実行 CMD ["sh","/script/hello_world.sh"]
シェルスクリプトは、以下のような簡単なものでDockerfileと同じディレクトリに配置してあるものとする。
#!/bin/sh echo 'Hello World'
2.Dockerイメージの作成
以下のコマンドで、Dockerをビルドする。
docker build -t amazonlinux:v1 .
このコマンドは、Dockerfileが存在するディレクトリで実行する。
オプション「-f」を使用することで、Dockerfileの指定も可能である。
3.コンテナの起動
以下のどちらかのコマンドで、コンテナを起動する。
① コンテナの起動と削除を同時に行う
docker run --rm amazonlinux:v1
②コンテナの起動と名前を付ける
docker run --name <container名> -it amazonlinux:v1
まとめ
上記手順を実行し、「Hello World」が出力されれば成功である。
DockerはAWSにも使用さている技術である。そちらについてはこちらの記事を参考に。