独自のDockerImageを作成する
Dockerでは、自分で独自のimageを作成することが可能です。 独自のdocker imageを作成する方法は主に2つあります。
① docker container commit
コマンドを使う
② Dockerfileからビルドする
今回は、①の起動中のDockerコンテナから新しいイメージを作成する方法を試してみます。
※ 実行環境は、Docker for Mac
を使っています。
※ 環境構築については過去記事のとおりです。
docker container commit
コマンドを使う
ベースイメージの準備
今回はnginxのイメージを元に独自のイメージを作成してみます。 まずは、ベースとなるnginxのimageをDocker Hubからダウンロードします。
docker image pull nginx:latest
docker image pull <イメージ名>:<タグ名>
- ※ タグ名を
latest
にすると最新のバージョンを取得
イメージを確認してみます。
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 46102226f2fd 4 days ago 109 MB
取得したイメージからコンテナを起動します。
docker run -d -p 80:80 --name webserver nginx
docker run -d -p <ポート> --name <コンテナ名> <イメージ名>
-d
: コンテナをバックグラウンドで起動する-p
: ポート指定、<ホストのポート>:<コンテナのポート>で割当を行う。 例: <80>:<12345> コンテナの12345ポートをホストの80ポートに割り当てる--name
: コンテナに名前を割り当てる
localhost
にアクセスして確認します。
nginxが起動してデフォルトのindex.htmlファイルが表示されていることが確認できました。
コンテナの内容を編集
dockerのコンテナにアクセスしてこのindexファイルを編集してみます。
docker exec -it webserver /bin/bash
docker exec -it <コンテナ名> <コマンド>
-i
: コマンド入力後にコンテナの標準入力をホストの標準入力と接続する-t
: コンテナ内の仮想端末と、Dockerホストの標準出力と接続する
cd /usr/share/nginx/html echo "<h1>Welcome my nginx</h1>" > index.html
localhost
に再度アクセスするとindex.htmlの内容が変更されていることが確認できます。
docker imageを作成
index.htmlを編集した状態の今のコンテナからimageを作成します。
docker container commit webserver mynginx:latest
docker container commit <コンテナ名> <イメージ名>:<タグ>
イメージを確認してみます
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE mynginx latest fa7dff65a5ba 5 seconds ago 109 MB nginx latest 46102226f2fd 4 days ago 109 MB
起動中のコンテナを削除して今作ったイメージからコンテナを起動します。
docker stop webserver docker rm webserver
docker stop <コンテナ名>
: コンテナを停止docker rm <コンテナ名>
: コンテナの削除
docker run -d -p 80:80 --name myserver mynginx
localhostにアクセスして確認します。
先程に編集した状態でイメージが起動していることを確認できました。