Categories: Docker

dockerコマンド一覧

この記事では以下のdockerコマンドについて説明しています。

この記事で解説するdockerコマンド
  1. docker search
  2. docker image
  3. docker container
  4. docker start
  5. docker ps
  6. docker stop
  7. docker rm
  8. docker rename
  9. docker cp

Dockerfileを作成してからコンテナを起動するまでの手順

STEP.1
Dockerfileの作成
Dockerfileというファイル名で作成します。
STEP.2
Dockerイメージの生成
DockerfileからDockerイメージを生成するためのコマンドが以下です。
docker build -t [生成するイメージの名前][:タグ名][Dockerfileの格納場所]
STEP.3
Docker コンテナの生成と起動
Dockerイメージからコンテナを生成&起動するためのコマンドが以下です。
docker container run オプション イメージ名:タグ名
おまけ
Dockerfileを修正した場合はimageを削除してbuildからやり直す!

docker searchコマンド

Docker Hubに公開されているイメージを検索する

Docker Hubに公開されているイメージを検索するには以下のコマンドを実行します。

# docker search 検索文字列
# gitlabを検索する例
docker search gitlab

docker imageコマンド

dockerイメージをpullする

#docker image pull [オプション] イメージ名 [:タグ名]
docker image pull centos:7

タグ名を省略すると最新版(latest)を取得します。

以下のようにイメージ名の代わりにURLを用いてpullすることもできます。
その場合、”https://”は省いて指定します。

docker image pull gcr.io.tensorflow/tensorflow

ダウンロードしたイメージの一覧を確認するコマンド

自分の端末が持っているdockerイメージを調べたいときにはこのコマンドを実行します。

docker image ls

REPOSITORY          TAG       IMAGE ID       CREATED       SIZE
gitlab/gitlab-ce    latest    4f638aa756e4   2 days ago    2.31GB
docker101tutorial   latest    51b4693e2f08   7 days ago    28.3MB
node                lts       6a64cec3731e   10 days ago   944MB
node                latest    c4fbd6393264   10 days ago   905MB
nginx               latest    87a94228f133   12 days ago   133MB
alpine/git          latest    612b988140be   2 weeks ago   27.4MB

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

docker image lsの結果から削除したいイメージを見つけ、以下のコマンドを実行します。

# docker image rm repository[:tag]
docker image rm node:lts

docker containerコマンド

docker run — イメージを使って毎回新しくコンテナを作成&起動するコマンド

docker container runは、コンテナの生成と起動を同時に行うコマンドです。
コンテナの生成のみを行いたい場合はdocker container createを実行してください。

# docker container run --name コンテナ名 -d -p 80:80 イメージ名
# nginxを起動する例
docker container run --name testserver -d -p 80:80 nginx

元イメージが同じであってもコンテナ名が異なれば別コンテナとして作成されます。
そのため以下のように実行すると「testserver2」「testserver3」という2つのコンテナが作成されます。

docker container run --name testserver2 -d -p 80:80 nginx
docker container run --name testserver3 -d -p 80:80 nginx

なお、すでに存在しているコンテナ名を指定すると以下のようにエラーになります。
この場合はdocker start コンテナ名で起動できます。

PS C:workspaceapp-node-js> docker container run --name testserver -d -p 80:80 nginx 
docker: Error response from daemon: Conflict. The container name "/testserver" is already in use by container "18b5aa5aab0751da8231f2b868a64a758e75bba838e13e08fe103c4ef1e54689". You have to remove (or rename) that container to be able to reuse that name.

docker container runコマンドのオプション

オプション 意味
--name コンテナ名を定義するオプション
-it コンテナがCtrl + Cなどの入力を受け付けるようになるオプション
-d コンテナをバックグラウンドで動かすためのオプション
-p ポートフォワードを指定するためのオプション。
-p 1111:8080と指定すると1111番のアクセスを8080にフォワードしてくれる
--rm コンテナ終了時にコンテナ自身を削除してくれるオプション

docker container start — 既存のコンテナを起動するコマンド

既にコンテナが生成された状態の場合に、以下のコマンドで起動することができます。
省略形のdocker start コンテナ名でも起動できます。

# docker container start コンテナ名
docker container start testserver

複数のコンテナを一括して起動したい場合は、以下のようにコンテナ名を半角スペース区切りで指定します。

docker contaienr start testserver testserver2

docker container ps — 起動しているコンテナの一覧を確認するコマンド

docker container ps

停止中のコンテナも含めてすべてのコンテナの一覧を確認するコマンド

docker container ps --all

#以下の4種類が使える
docker container ps --all
docker container ps -a
docker container ls --all
docker container ls -a

docker container stop — 起動しているコンテナを停止するコマンド

省略形のdocker stop コンテナ名でも停止できます。

# docker container stop コンテナ名
docker container stop testserver

docker container rm — コンテナを削除するコマンド

省略形のdocker rm コンテナ名でも削除できます。

# docker contaienr rm コンテナ名
docker container rm testserver

起動中のコンテナを削除しようとすると以下のようなエラーが出ることがあります。


Error response from daemon: You cannot remove a running container fbc42e530649b22fea8fcb8541afd84fa16f0f2c0741aac6b25dda9164d49adb. Stop the container before attempting removal or force remove

このようなエラーが出た場合はコンテナを停止してから削除する必要があるので先にdocker stop コンテナ名を実行します。

docker container rename — コンテナ名をリネームするコマンド

コンテナ名をリネームするにはdocker conatiner rename 現在のコンテナ名 新しいコンテナ名と指定します。
省略形のdocker renameでもリネームできます。

# docker conatiner rename 現在のコンテナ名 新しいコンテナ名
PS C:wk_docker> docker container ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS                     PORTS     NAMES
6fcc465b3d29   nginx     "/docker-entrypoint.…"   23 seconds ago   Exited (0) 9 seconds ago             oldserver
PS C:wk_docker>
PS C:wk_docker> docker container rename oldserver newserver
PS C:wk_docker>
PS C:wk_docker> docker container ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS                      PORTS     NAMES
6fcc465b3d29   nginx     "/docker-entrypoint.…"   45 seconds ago   Exited (0) 31 seconds ago             newserver

docker container cp — — コンテナ内のファイルをコピーする

省略形のdocker cpでもコピーできます。

# docker container cp コンテナ名:コピー元ファイル名 コピー先ファイル名
docker container cp testserver:/etc/nginx/nginx.conf ./nginx.conf

# pwdを用いて以下のようにも記述できます。
docker container cp testserver:/etc/nginx/nginx.conf ${pwd}/nginx.conf

# ホスト側のファイルをコンテナに送る
docker container cp ./test.txt testserver:/etc/nginx/test1.txt

docker exec — コンテナ内に入る

起動したコンテナ内に入るには以下のコマンドを実行します。

docker exec -it コンテナ名 bash

コンテナから抜ける際にはexitコマンドを実行します。

issiki_wp