【2023年】これからブログを始める人へおすすめの書籍

Kissy

よく使うdockerコマンドまとめ

作成: 更新:

よく使う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コンテナ上のパスが存在するかを確認する」に記載しています。

最後まで読んでいただきありがとうございます。
また読んでくださいませ。
そんじゃーね。

関連記事

SPONSORED LINK
SPONSORED LINK