\ お問い合わせはこちら! /

【Docker】新旧コマンドの対応関係

  • Dockerの新旧コマンドの対応関係が知りたい!
  • docker psコマンドが古いコマンドとは知らなかった…

このような方に向けて書きました。

2017年1月に公表されたDocker 1.13.0からは、新しいコマンドが導入されました。

これにより、より直感的なコマンド操作ができるようになっています。

本記事では新旧コマンドを対応づけながら、気になるポイントを解説していきます。

新旧コマンド対応表と新コマンドのメリット

以下は新旧コマンドの対応表です。

旧コマンド新コマンド
docker pulldocker image pull
docker imagesdocker image ls
docker rmidocker image rm
docker psdocker container ls
docker rundocker container run
docker rmdocker container rm

コマンドが長くなってしまったようにも見えます。

とはいえ、特に初学者の方にとっては新コマンドのメリットは大きいはずです。

新コマンドを使うメリット

大きく、以下の2つのメリットがあります。

  • 何に対するコマンドかがわかりやすくなった
  • サブコマンド体系が一貫化された

それぞれ解説します。

何に対するコマンドかがわかりやすくなった

新しいコマンドでは、imageに対する操作なのかcontainerに対する操作なのかが明示されます。

例えばDockerイメージを取得する場合には、以下のように変更されました。

# 旧コマンド
docker pull nginx

# 新コマンド
docker image pull nginx

imageに対する操作であることがコマンドで明示されるので、よりイメージを浮かべながら操作できるようになったはずです。

特に初学のうちは「イメージ」に対する操作なのか、「コンテナ」に対する操作なのか見失ってしまいがちなので、この仕様変更は学習の助けになってくれるはずです。

サブコマンド体系が一貫化された

旧コマンドではサブコマンドの命名規則がバラバラでしたが、新しいコマンドでは一貫性を意識した命名に変更されました。

docker imagedocker container の下に関連コマンドがまとまったイメージです。

具体的には以下の通り。

# 旧:コンテナ一覧を表示
docker ps
# 新:コンテナ一覧を表示
docker container ls

# 旧:イメージ一覧を表示
docker images
# 新:イメージ一覧を表示
docker image ls

lsなどの Linux コマンドと同じものが採用されたので、より覚えやすくなりました。

ちなみに…旧コマンドはまだ使える?

記事執筆時点(2025年1月現在)は、まだ旧コマンドが使えます。

とはいえDocker公式としては新しいコマンドが推奨になっており、将来的に旧コマンドが非推奨(Deprecated)となる可能性は大いにあります。

そのため、なるべく早い段階で新しいコマンドに慣れておく方が良いでしょう。

何より理解しやすいコマンドになってますので。

新しいコマンドは、目的ごとに “image” や “container” といったリソース名が明示されており、直感的に分かりやすくなっています。

イメージを操作するためのコマンドを解説!

docker image ls

Dockerイメージの一覧を表示するコマンドです。

➜  ~ docker image ls
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
ubuntu        latest    80dd3c3b9c6c   7 weeks ago     139MB
hello-world   latest    5b3cc85e16e3   20 months ago   21kB

REPOSITORYはイメージの名前を、TAGはバージョンが表示されます。

TAGはDocker Hubのtagsというセクションと対応しています。

docker image rm {イメージ名}

イメージを削除するコマンドです。

➜  ~ docker image rm ubuntu
Untagged: ubuntu:latest
Deleted: sha256:80dd3c3b9c6cecb9f1667e9290b3bc61b78c2678c02cbdae5f0fea92cc6734ab
➜  ~ docker image ls
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
ubuntu        20.04     8e5c4f0285ec   3 months ago    101MB
hello-world   latest    5b3cc85e16e3   20 months ago   21kB

イメージIDでも削除できます。

➜  ~ docker image rm 8e5c4f0285ec
Untagged: ubuntu:20.04
Deleted: sha256:8e5c4f0285ecbb4ead070431d29b576a530d3166df73ec44affc1cd27555141b
➜  ~ docker image ls
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    5b3cc85e16e3   20 months ago   21kB

コンテナを操作するためのコマンドを解説!

docker container run {イメージ名}

イメージをダウンロードして、コンテナを立ち上げるコマンドです。

➜  Desktop docker container run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (arm64v8)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

docker container ls

コンテナの一覧を取得するコマンドです。

docker container ls

起動していないコンテナも表示させたい場合には-aオプションをつけます。

docker container ls -a

docker container stop {コンテナ名}

起動中のコンテナを止めるコマンドです。

➜  ~ docker container ls
CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS          PORTS     NAMES
29cc6a36c822   nginx     "/docker-entrypoint.…"   22 seconds ago   Up 22 seconds   80/tcp    sad_lovelace
➜  ~ docker container stop sad_lovelace
sad_lovelace

上記のように、まずはコンテナ一覧を取得してから止める流れとなります。

docker container restart {コンテナ名}

コンテナを再起動するコマンドです。

➜  ~ docker container ls -a
CONTAINER ID   IMAGE     COMMAND                   CREATED         STATUS                      PORTS     NAMES
29cc6a36c822   nginx     "/docker-entrypoint.…"   2 minutes ago   Exited (0) 45 seconds ago             sad_lovelace
82d28c77cb54   nginx     "/docker-entrypoint.…"   6 minutes ago   Exited (0) 4 minutes ago              cool_euclid
➜  ~ docker container restart 82d28c77cb54
82d28c77cb54

上記では止まっている(Exited)コンテナを再起動させました。

以下のコマンドで、裏でコンテナが動いていることを確認できます。

docker container logs 82d28c77cb54

docker container rm {コンテナ名}

Exitedステータスのコンテナを削除します。

➜  ~ docker container ls -a
CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS         PORTS     NAMES
82d28c77cb54   nginx     "/docker-entrypoint.…"   11 minutes ago   Up 3 minutes   80/tcp    cool_euclid
➜  ~ docker container stop 82d28c77cb54
82d28c77cb54
➜  ~ docker container rm 82d28c77cb54
82d28c77cb54
➜  ~ docker container ls -la
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

コンテナが動いている場合は、docker container stopで止めてから実行しましょう。

この記事が気に入ったら
フォローしてね!

シェア・記事の保存はこちら!

この記事を書いた人

karo@プログラマのアバター karo@プログラマ プログラマ

「書くことで人の役にたつ」をモットーに活動中。
本職はプログラマで、Pythonが得意。
基本情報技術者試験合格。

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)