はじめに
この記事では、Dockerコンテナとイメージの管理に必要な様々なDockerコマンドについて解説します。各コマンドについて、コードと出力の例を紹介します。
docker pull
docker pull
コマンドを使用すると、Docker HubのようなリモートDockerレジストリからイメージをダウンロードできます。
$ docker pull ubuntu:20.04
20.04: Pulling from library/ubuntu
Digest: sha256:cfb43ffdb609eb9c3ecd47d8e48e16f7abbb1c95b7340d8f883942e0730e950a
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04
docker build
docker build
コマンドは、Dockerfileとビルドコンテキスト(通常はプロジェクトディレクトリ)からDockerイメージを作成します。
$ docker build -t yourusername/your-image:tag .
Sending build context to Docker daemon 2.048kB
Step 1/5 : FROM node:14
---> 91e0ff2b2a31
Step 2/5 : WORKDIR /app
---> Using cache
---> 0a0d332bddc2
Step 3/5 : COPY package*.json ./
---> Using cache
---> 7bf6e8c6d4ea
Step 4/5 : RUN npm install
---> Using cache
---> 15a0c0a4812e
Step 5/5 : COPY . .
---> 9adad8d1eeca
Successfully built 9adad8d1eeca
Successfully tagged yourusername/your-image:tag
docker run
docker run
コマンドは、Dockerイメージから新しいコンテナを作成して起動します。
$ docker run -d -p 8080:80 --name your-container yourusername/your-image:tag
ac7e2b3a3f7de342d0a16a7f13ea8c3425d58f5e5c5e5eb5
docker exec
docker exec
コマンドを使用すると、実行中のコンテナ内でコマンドを実行できます。
$ docker exec -it your-container bash
root@ac7e2b3a3f7d:/app#
docker stop
docker stop
コマンドは、実行中のコンテナを停止します。
$ docker stop your-container
your-container
docker start
docker start
コマンドは、停止中のコンテナを起動します。
$ docker start your-container
your-container
docker restart
docker restart
コマンドは、実行中のコンテナを再起動します。
$ docker restart your-container
your-container
docker push
docker push
コマンドを使用すると、Dockerイメージをリモートレジストリにアップロードできます。
$ docker push yourusername/your-image:tag
The push refers to repository [docker.io/yourusername/your-image]
tag: digest: sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef size: 1234
docker ps
docker ps
コマンドは、全ての実行中のコンテナを一覧表示します。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ac7e2b3a3f7d yourusername/your-image:tag "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:8080->80/tcp your-container
docker images
docker images
コマンドは、システムにある全てのDockerイメージを一覧表示します。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
yourusername/your-image tag 9adad8d1eeca 4 hours ago 939MB
ubuntu 20.04 2c047404e52d 2 weeks ago 72.9MB
node 14 91e0ff2b2a31 3 weeks ago 943MB
docker rm
docker rm
コマンドは、停止したコンテナを削除します。
$ docker rm your-container
your-container
docker rmi
docker rmi
コマンドは、未使用のDockerイメージを削除します。
$ docker rmi yourusername/your-image:tag
Untagged: yourusername/your-image:tag
Deleted: sha256:9adad8d1eeca0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
docker logs
docker logs
コマンドは、コンテナのログを表示します。
$ docker logs your-container
Starting application...
Listening on port 80
docker attach
docker attach
コマンドを使用すると、ターミナルを実行中のコンテナにアタッチできます。
$ docker attach your-container
Listening on port 80
docker cp
docker cp
コマンドを使用すると、コンテナとホストシステム間でファイルをコピーできます。
$ docker cp your-container:/app/data.txt /path/to/host/data.txt
(no output unless there's an error)
docker commit
docker commit
コマンドを使用すると、コンテナの変更から新しいイメージを作成できます。
$ docker commit -m "Added new features" -a "Your Name" your-container yourusername/your-image:new-tag
sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789
docker system prune
docker system prune
コマンドを使用すると、停止したコンテナ、使用されていないネットワーク、およびダングリングイメージなど、未使用のデータを削除できます。
$ docker system prune
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container