この記事では以下のdockerコマンドについて説明しています。
docker search
docker image
docker container
docker start
docker ps
docker stop
docker rm
docker rename
docker 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
コマンドを実行します。