5. イメージ作成とコンテナ起動

ファイル構成

LinuxUbuntu 20.04のイメージを作成し、コンテナを起動してみましょう。まず「test」プロジェクトフォルダを作成し、Dockerfiledocker-entrypoint.shファイルを追加します。

test
├── Dockerfile
└── docker-entrypoint.sh

シェルスクリプト作成

docker-entrypoint.shファイルは、コンテナ開始時にコマンド実行します。シェルコマンド実行するexecを追記します。 "$@" でコマンドの引数受け渡しできます。

#! /bin/sh

exec "$@"

Dockerfileの作成

Linuxイメージの指定

LinuxUbuntu 20.04のイメージを作成するDockerfileを作成します。バージョンは:(セミコロン) で指定します。バージョン指定しないと常に最新バージョンが選択されてしまうので注意が必要です。

FROM ubuntu:20.04

シェルスクリプトのコピー

COPYdocker-entorypoint.sh/tmp/ にコピーします。

FROM ubuntu:20.04

COPY docker-entrypoint.sh /tmp/

シェルスクリプトの移動と実行権限付与

RUNdocker-entorypoint.sh/usr/local/bin に移動します。またアクセス権限も付与します。

FROM ubuntu:20.04

COPY docker-entrypoint.sh /tmp/

RUN mv /tmp/docker-entrypoint.sh /usr/local/bin; \
    chmod +x /usr/local/bin/bindocker-entrypoint.sh/

シェルスクリプトの実行

ENTRYPOINTコンテナ起動時のシェルスクリプトを指定します。CMDでコマンドを引数をつけてコンテナ起動時にシェルスクリプトを実行します。

FROM ubuntu:20.04

COPY docker-entrypoint.sh /tmp/

RUN mv /tmp/docker-entrypoint.sh /usr/local/bin; \
    chmod +x /usr/local/bin/bindocker-entrypoint.sh;

ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["echo", "Hello Docker"]

ビルドとコンテナ起動

イメージのビルド

イメージをタグ名「test」でビルドします。タグ名は /(スラッシュ) でユーザ名をつけておくと、DockerHubで管理するのに便利です。

% docker build -t ユーザ名/test .

イメージの確認

作成したDockerイメージ「test」を確認します。

% docker image ls
REPOSITORY            TAG          IMAGE ID       CREATED          SIZE
ユーザ名/test        latest       eb4e47233c83   54 minutes ago   72.8MB

コンテナの起動と削除

コンテナの起動

docker run で「test」コンテナを起動します。起動時に環境変数の内容と「Hello Docker」とスクリプトが実行されているか確認します。

% docker run ユーザ名/test
Hello Docker

コンテナの削除

動作が確認できたら、停止中のコンテナをすべて削除します。

% docker container prune

イメージの削除

作成したイメージを削除します。

% docker rmi ユーザ名/test

Web環境構築(Docker編)