この記事では以下のdockerコマンドについて説明しています。
docker searchdocker imagedocker containerdocker startdocker psdocker stopdocker rmdocker renamedocker cp目次
Dockerfileというファイル名で作成します。
docker build -t [生成するイメージの名前][:タグ名][Dockerfileの格納場所]
docker container run オプション イメージ名:タグ名
docker searchコマンドDocker Hubに公開されているイメージを検索するには以下のコマンドを実行します。
# docker search 検索文字列
# gitlabを検索する例
docker search gitlab
docker imageコマンド#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コマンドを実行します。