よく使うdockerコマンドまとめ
docker
dockerの起動
dockerサービスを起動します。これを実行しないとdockerコマンドが使用できません。
$ sudo cgroupfs-mount && sudo service docker start
* Starting Docker: docker [ OK ]
[OK]
と出れば起動に成功しました。
コンテナを列挙する
すべてのコンテナを列挙します。
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6b51ca7011a4 9f917781b98a "/bin/sh" 3 weeks ago Exited (255) 25 minutes ago 0.0.0.0:8080->8080/tcp web
c50b3e9da57c hello-world "/hello" 3 weeks ago Exited (0) 3 weeks ago dazzling_shirley
コンテナを削除する
指定したコンテナを削除します。<CONTAINER ID>
にはdocker ps
コマンドで調べたコンテナIDを指定します。
$ sudo docker rm <CONTAINER ID>
イメージを列挙する
イメージをすべて列挙します。
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
vue-test_web latest 9f917781b98a 3 weeks ago 269MB
hello-world latest fce289e99eb9 8 months ago 1.84kB
node 10.13-alpine 93f2dcbcddfe 9 months ago 70.3MB
イメージを削除する
指定したイメージを削除します。<REPOSITORY>
にはdocker images
コマンドで調べたコンテナIDを指定します。
$ sudo docker rmi <REPOSITORY>
ローカルからdockerコンテナへファイルをコピーする
ローカルからdockerコンテナへファイルをコピーするには、以下のコマンドを実行します。
docker cp <ローカル上のパス> <コンテナ名orコンテナID>:<コンテナ上のパス>
<ローカル上のパス>は絶対パスまたは相対パスで指定ます。<コンテナ上のパス>は絶対パスで指定します。(コンテナ上のパスはvar/www/html/index.html
のように記載しても/var/www/html/index.html
と解釈します。このため、絶対パスで指定するものと考えた方が良いです。)
dockerコンテナからローカルへファイルをコピーする
dockerコンテナからローカルへファイルをコピーするには、以下のコマンドを実行します。
docker cp <コンテナ名orコンテナID>:<コンテナ上のパス> <ローカル上のパス>
パスの指定方法は「ローカルからdockerコンテナへのコピー」の場合と一緒です。
dockerコンテナ上のパスが存在するかを確認する
ローカルとdockerコンテナでファイルをコピーする場合に困るのが、dockerコンテナ上のパスが正しいかどうか調べるのが面倒なところです。dockerコンテナにシェルで入って確認すればよいのですが、以下のコマンドを使うと、ローカル上からdockerコンテナのパスを確認することができます。
docker exec <コンテナID> [ -d "コンテナ上のパス" ] && echo "Exist" || echo "Does not exist"
<コンテナ上のパス>が存在すれば「Exist」、存在しなければ「Does not exist」とコンソールに表示されます。
コンテナにシェルで入る
起動中のコンテナにシェルで入るには以下を実行します。
docker exec -i -t <コンテナIDまたはコンテナ名> bash
docker-compose
コンテナを作成する
docker-compose.yml(必要に応じてDockerfileも)と同じディレクトリで以下のコマンドを実行します。
$ sudo docker-compose build
コンテナを起動する
docker-compose.yml(必要に応じてDockerfileも)と同じディレクトリで以下のコマンドを実行します。-d
はバックグラウンドで起動するオプションです。
$ sudo docker-compose up -d
コンテナを再起動する
docker-compose.ymlと同じディレクトリで以下のコマンドを実行します。
$ sudo docker-compose restart
コンテナを停止する
docker-compose.ymlと同じディレクトリで以下のコマンドを実行します。
$ sudo docker-compose stop
コンテナにシェルで入る
起動中のコンテナにシェルで入るには以下を実行します。
sudo docker-compose exec <コンテナIDまたはコンテナ名> sh
コンテナを削除する
docker-compose.ymlと同じディレクトリで以下のコマンドを実行します。
コンテナとネットワークを削除しますが、イメージとボリュームは削除されません。
$ sudo docker-compose down
コンテナとネットワークとイメージを削除します。ボリュームは削除されません。
$ sudo docker-compose down --rmi all
コンテナとネットワークを削除しますが、イメージとボリュームは削除されません。
$ sudo docker-compose down -v
ボリュームを削除する
docker volume ls
で存在するボリュームを確認したのち、docker volume prune
で使用していないボリュームを削除します。
$ sudo docker volume ls
$ sudo docker volume prune
dockerコマンドでエラーが発生した場合の対処方法
イメージが削除できない
イメージを削除しようとして、以下のようなエラーが出る場合があります。
$ sudo docker rmi hello-world
Error response from daemon: conflict: unable to remove repository reference "hello-world" (must force) - container c50b3e9da57c is using its referenced image fce289e99eb9
原因は、削除しようとしたイメージを使用しているコンテナがあるためです。先にコンテナを削除すれば、イメージが削除できるようになります。
ローカルからdockerコンテナにファイルをコピーすると「Error:No such container」エラーが発生する
docker cp
コマンドに指定したdockerコンテナのパスが誤っていることが原因です。パスが正しいかを確認してください。確認方法は本記事の「dockerコンテナ上のパスが存在するかを確認する」に記載しています。
最後まで読んでいただきありがとうございます。
また読んでくださいませ。
そんじゃーね。