Dockerにおける一番はじめによく行う以下の動作コマンドを忘れないように記載しておきます。
- 既存のimages or containerを削除
- イメージをpullします。
- pullしたイメージを起動(run)してcontainerを生成します。
- 起動したcontainerに入ります(in)。
- 作業をして、イメージに対してcommitします。
- 最後にDockerHubに対してpushします。
1. 既存のimages or containerを削除
container削除
$ docker rm `docker ps -a -q`
もし、Error response from daemon:
とエラーがでる場合にはCONTAINER IDを抽出して--force
オプションで削除します。
$ docker ps --format "table {{.ID}} {{.Names}}"
CONTAINER ID NAMES
79157a49118d berserk_curie
$ docker rm --force 79157a49118d
79157a49118d
$ docker ps --format "table {{.ID}} {{.Names}}"
CONTAINER ID NAMES
# なくなりました。
"table {{.ID}} {{.Names}}"
をつけることで出力するカラムを指定しています。
image削除
$ docker rmi `docker images -aq`
2. イメージをpullします。
今回は、debian
のイメージをpullします。
$ docker pull debian:latest
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
debian latest f2aae6ff5d89 5 days ago 100.6 MB
3.pullしたイメージを起動(run)してcontainerを生成します。
pullしたimageを起動してCONTAINERを生成します。
execを使ったやり方など色々ありますが、今回はシンプルにrunとattachを利用していきます。
$ docker run -itd debian
388e45913a52ed4665c1a673de1e75039ceb12b4ca31db6f2ae5689c0352de69
-d
: バックグランド実行
$ docker ps -a --format "table {{.ID}} {{.Names}}"
CONTAINER ID NAMES
388e45913a52 high_engelbart
4. 起動したcontainerに入ります(in)。
CONTAINER IDを指定してattachしていきます。
$ docker ps -a --format "table {{.ID}} {{.Names}}"
CONTAINER ID NAMES
388e45913a52 high_engelbart
$ docker attach 388e45913a52
root@388e45913a52:/#
5. 作業をして、イメージに対してcommitします。
root@388e45913a52:/# touch test.list //適当なファイル作成
root@388e45913a52:/# exit
exit
$ docker commit 388e45913a52 add_test.list
sha256:dd09ff64419d04ef96c64b6b67719ffc3d9a9461707b0d9c926b170e2376ff1d
$ docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
add_test.list latest dd09ff64419d 2 days ago 100.6 MB //増えている
debian latest f2aae6ff5d89 5 days ago 100.6 MB
$ docker run -it add_test.list ls -la test.list
-rw-r--r-- 1 root root 0 Sep 8 01:03 test.list
以上です。
普段開発する際は、docker-composeやDockerfileなどを利用することが多くなると思います。
その場合には、まだ別の操作に必要になりますのでぜひ調べてみてください。
おまけ
Dockerでホストをコンテナ内にマウントする
$ docker run -v [ホストディレクトリの絶対パス]:[コンテナの絶対パス] [イメージ名] [コマンド]