Dockerでコンテナに修正を加えた後で保存する方法をまとめました.
0.前提
Dockerのコンテナのbashを起動している.
1 2 3 |
<span class="pln">$ sudo docker run</span> <span class="pun">-</span><span class="pln">i </span><span class="pun">-</span><span class="pln">t ubuntu </span><span class="pun">/</span><span class="pln">bin</span><span class="pun">/</span><span class="pln">bash $ # コンテナubuntu の bashが起動される $ # ここで色々コンテナに修正を加える</span> |
この状態からコンテナの状態を保存する方法は簡単です.
1.コンテナのdetach
CTRL-p
+CTRL-q をコンソールで入力して、コンテナをdetachする.
exitコマンドで抜けてしまわないこと.(exitで抜けた場合の保存手順はこちら)
これでdockerを起動したときのコンソールまで戻ってくることになる.
コンソール上はこのような表示になる.
1 |
bash-4.1# bash-3.2$ |
(bash-3.2がdockerを実行したコンソール.bash-4.1がdockerで起動されたコンテナのコンソール.)
2.保存(commit)
今detachしたコンテナのIDを調べます.
1 2 3 |
bash-3.2$ docker ps CONTAINER ID IMAGE COMMAND ...右側は省略 21f6639b8503 testuser/testing "/etc/bootstrap.sh |
このIDをコミットします.コマンドは docker commit <container id> <image name>です.
1 2 |
bash-3.2$ docker commit -m "コメントを入れると便利です" 21f6639b8503 testimage d734e9c1e7b965cadb2f7058f729045a2db5ed0e80480077a54b57ab5d5f15ca |
ここでは-mオプションを利用してコメントを入れています.
コマンドの実行結果として返ってきているのが新しいコンテナIDです.
これで保存完了です.以下のコマンドで保存されていることが確認出来ます.
1 2 3 |
bash-3.2$ docker images REPOSITORY TAG IMAGE ID ...右側は省略 testapp latest d734e9c1e7b9 |
detachしたコンテナで作業を再開したい場合は、attachしてください.
1 |
bash-3.2$ docker attach 21f6639b8503 |
3. Dockerhubに保存する
まず、dockerhubにアカウントを作成してください.
その後、コンソールからログインします.
1 2 3 4 |
bash-3.2$ docker login Username: Password: Email: |
Username/password/Emailを聞かれるので、アカウント作成時に登録した情報を入力します.
後は、commitによってコンテナを保存し(ユーザ名/コンテナ名 という形式の名前でリポジトリが作成されるはずです)、それをpushします.
1 |
bash-3.2$ docker push <Repository名> |
Pingback: Docker コンテナの名前変更AICS | AICS