LoginSignup
1
5

More than 5 years have passed since last update.

【初級】Dockerコマンドチート 〜images + container delete → pull → run → container in → commit〜

Last updated at Posted at 2018-09-10

Dockerにおける一番はじめによく行う以下の動作コマンドを忘れないように記載しておきます。

  1. 既存のimages or containerを削除
  2. イメージをpullします。
  3. pullしたイメージを起動(run)してcontainerを生成します。
  4. 起動したcontainerに入ります(in)。
  5. 作業をして、イメージに対してcommitします。
  6. 最後に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 [ホストディレクトリの絶対パス]:[コンテナの絶対パス] [イメージ名] [コマンド]
1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5