当社はIT技術のオンライン教育を得意としたセミナー専門会社です。 | 一戸英男

ITエンジニアの技術力UPをお約束します。

Docker初心者用 基本コマンド集

ドッカーのコマンドを忘れないように忘備録として残す。

ドッカーコマンド集

Dockerのバージョン確認

インストールしているDockerのバージョンを確認します。

Usage:docker version
  • 例)
    • Client: Docker Engine – Community
    • Version: 19.03.2
    • API version: 1.40
    • Go version: go1.12.8
    • Git commit: 6a30dfc
    • Built: Thu Aug 29 05:26:49 2019
    • (途中省略)

DockerHubから任意のイメージを検索する。

レポジトリーからOS&アプリのイメージを探します。思い当たるキーワードを入れてみましょう。

Uage: docker search [option] イメージ名にマッチするキーワード
  • 使用例)
    • $ search centos
    • $ docker search centos:centos7

DockerHubから任意のイメージを取得する。

Searchで探索したイメージの名前やネットで調べた名前を入力してローカルのパソコンへイメージを設置します。

Usage:docker pull イメージ名(イメージ名:タグ名) イメージ名にはイメージ名の他にバージョンを指定するタグ名が使える。 タグを使わない場合はDockerHubに存在する最新バージョンが取得できる。
  • 使用例)
    • $ docker pull centos:centos7
    • centos7: Pulling from library/centos
    • d8d02d457314: Pull complete
    • Digest: sha256:307835c385f656ec2e2fec602cf093224173c51119bbebd602c53c3653a3d6eb
    • Status: Downloaded newer image for centos:centos7
    • docker.io/library/centos:centos7

ローカルPC上に存在する取得済みのDockerイメージを表示する。

ローカルに既にインストールした様々なイメージを一覧で表示します。

Usage:docker images
  • 使用例)
    • $ docker images
    • REPOSITORY TAG IMAGE ID CREATED SIZE
    • centos centos7 67fa590cfc1c 6 weeks ago 202MB

DockerHubレポジトリからイメージを探し取得しつつ インスタンス生成後にすぐインスタンス起動を行う。

この方法で起動する場合は次回の起動からdocker start コンテナ名で起動できます。

つまりコンテナの作成と起動を一度にやってしまうコマンドになります。

Usage:docker run -d -it -p  外部ポート:内部ポート –name コンテナ名 探索イメージ名
  • 使用例)
    • $ docker run -d -it -p 80:80 –name mycentos7 centos:centos7
    • e2cae4cf90948cab52213bf17ba54954b0d5d664413a1e4688ca9120d8f14d5f

Dockerインスタンス起動状態の確認

現在ローカルPC上で起動されているインスタンスの一覧を表示します。

コンテナーを一覧で表示します。

Usage:docker ps [option]
  • 使用例1 インスタンスロードされている一覧)
    • $ docker ps
インスタンロードの状況
  • 使用例2 インスタンスロードされていないものも含めてインスタンス一覧を表示する。
    • $ docker ps -a
すべての存在するインスタンス

Dockerインスタンスの起動と停止

【インスタンス起動】

Usage:docker start {Container ID} | コンテナ名(NAMES)
  • 使用例1 – コンテナ名で起動)
    • $ docker start mycentos7 ※コンテナ名を忘れてしまった場合は「docker ps -a」でNAMESのフィールド値を調べて指定する。
  • 使用例2 – Container IDで起動)
    • $ docker start e2cae4cf9094 ※Container IDはインスタンス作成時に固有のランダムなIDが割り当てられるので「docker ps -a」でContainerIDを調べて指定する。

【インスタンス停止】

Usage: docker ps {Container ID} | コンテナ名(NAMES)
  • 使用例1 – コンテナ名で停止)
    • $ docker stop mycentos7
  • 使用例2 – Conatiner IDで停止)
    • $ docker stop e2cae4cf9094

インスタンス(コンテナ)の削除

Dockerインスタンス生成した際に作られたコンテナを削除します。この処理はDockerイメージを削除するわけではありません。このコマンド実行後は「docker ps -a」コマンドを実行しコンテナが消滅していることを確認しましょう。またコンテナを削除する際はインスタンスを事前に停止させることが必要です。

Usage:docker rm {Conatiner ID}|コンテナ名
  • 使用例)
    • $ docker rm mycentos7
    • $ docker rm e2cae4cf9094

起動中の特定インスタンスへターミナル接続

起動中のインスタンスがtty割付し起動されているなら、このコマンドでターミナル接続が可能です。接続するべきインスタンスはどのプロセスなのか? 「docker ps」で事前にしらべ、該当するインスタンスのConatiner IDをこのコマンドで指定して接続を行います。

Usage:docker exec -it {Conatiner ID} 接続先のシェル
  • 使用例)
    • $ docker exec -it e2cae4cf9094 /bin/bash

尚、ターミナル接続中の状態を維持したままプロンプトに戻りたい場合は中断処理をすることができます。

ターミナル接続の中断

Dockerインスタンスへターミナル接続中に一時的にプロンプトへ戻りたい時があるはずです。このような時は中断処理を行うことで接続を維持した状態でコンソールへ戻ることができます。

  • 使用例)
    • ターミナル接続のプロンプトでCtrl+p Ctrl+q を連続して押下します。
    • また中断中のインスタンスへ接続したい場合はattach処理を行うことでターミナルの再開ができます。

ターミナル接続の再開(attach)

Dockerターミナル接続を中断した場合、コンソールからまたインスタンスにターミナル接続を再開したい場合に使うコマンドがattachコマンドです。

  • 使用例)
    • $ docker attach {Container ID}

インスタンス作業の保存(commit)

DockerでアプリのインストールやOSのコンフギュレーションを行ってもインスタンス終了したあとにDockerイメージがその内容を保持しているわけではありません。インスタンス(コンテナ)は勿論変更した内容は含んでいる事は間違いありませんが、イメージはあくまでもテンプレートのようなものですから作業した内容は反映されていません。

通常はインスタンスが変更を持っていれば問題ないので作業を継続してゆく上でイメージに修正内容を反映する必要はありませんが、自分が作ったサーバ&アプリをグループ内や一般ユーザへ公開したい場合はイメージに内容を反映したいはずです。それを実現するコマンドがcommitコマンドです。

Usage: docker commit {Container ID} 付与するイメージ名
  • 使用例)
    • $ docker commit e2cae4cf9094 centos7-apache-http2

Dockerで使うコマンドはその他にも色々ありますが、頻度の高い大半の作業はこのマニュアルにあるコマンドで事足りるはずです。まずはしっかりと基本的なコマンドを厳密に把握することが効率的な学習に繋がります。中途半端な理解は学習コストを逆に増やしてしまいますから、次の段階に進むためにもコマンドがマニュアルを見なくても打ち込めるくらいになってから次へ進みましょう。

番外編コマンド)

イメージ削除

普段使う頻度は低いと思いますが、使わないイメージをディスクに保存しても 容量の無駄です。定期的に掃除をすることも必要です。ただし注意が必要で、既にひとつのイメージで複数のインスタンスを作成しているなら削除することで意図していないものを削除してしまうかもしれません。事前にインスタンス一覧を確認し、該当イメージが削除してよいものかを確認しましょう。

Usage: docker rmi {IMAGE ID}
  • $ docker images
    • REPOSITORY TAG IMAGE ID CREATED SIZE
    • mysql 5.7.27 383867b75fd2 3 weeks ago 373MB
    • centos centos7 67fa590cfc1c 6 weeks ago 202MB
    • $ docker rmi 383867b75fd2