Basic docker usage

systemctl の使い方

Docker の起動と停止

$ systemctl start docker.service
$ systemctl stop docker.service
$ systemctl stop docker.socket

設定の反映と再起動

$ systemctl deamon-reload
$ systemctl restart docker.service

docker コマンド

$ docker <上位コマンド> <副コマンド> <オプション> <対象> <引数>

option

オプションの書式 内容
–name <コンテナ名> コンテナ名の指定
-p <ホストのポート番号>:<コンテナのポート番号> ポート番号の指定
-v <ホストのディスク>:<コンテナのディレクトリ> ボリュームのマウント
–net=<ネットワーク> コンテナをネットワークに接続
-e <環境変数名>=<値> 環境変数の指定
-d バックグラウンドで実行(detach: デタッチモードの略)
-i コンテナに操作端末(キーボード)をつなぐ
-t 特殊キーを使用可能にする
-help ヘルプの表示
–rm コンテナ終了時に自動的にコンテナを削除する
–workdir , -w コンテナ内部の作業ディレクトリを変更する

Docker container の作成

$ docker run <option> <container image> <引数>

docker runコマンドは、イメージをダウンロードするdocker pull, コンテナを作成するdocker create, コンテナを起動するdocker startコマンドを一つにまとめたもの。

コンテナを起動せずに作成したい(docker createしたい)場合などに, docker createdocker startを分けて使用する。

Docker 起動と停止

$ docker start <container name or container ID> #container の起動(container ID は他と重複しない先頭数文字だけでOK!)
$ docker stop <container name or container ID> #container のストップ

便利なコマンド

$ docker logs <container name> #logの確認

container の破棄

$ docker container ls #起動中のコンテナの表示(`docker ps`のように省略可)
$ docker container rm <container name> #コンテナの削除(``docker rm`のように省略可)

起動していないコンテナをすべて削除する場合は

$ docker container prune

image の破棄

$ docker image ls #ダウンロードしたイメージ一覧
$ docker image rm <repository>:<tag> #imageの削除(※tag が latest という最新版を表す値の場合は省略可, `docker rmi` のように省略可)

Docker の容量利用状況の確認

$ docker system df

Build Cache の削除

$ docker builder prune

※キャッシュが貯まると容量を大量に食うので注意!

detachとattach

  • detach Ctrl+P, Ctrl+Q

  • attach

    $ docker attach <container name or containerID>
    

shellの実行

コマンド コンテナの状態 シェル終了時
docker run 停止時 コンテナ終了
docker exec 稼働時 稼働のまま
  • 実行中のコンテナの場合

    $ docker exec -it <container name> /bin/bash
    

    を実行することでシェルが起動する

    ※ここでexitしてもdocker exec で実行したものが終了するだけのため、コンテナは終了しない

  • 停止中のコンテナの場合

    $ docker run --name <container name> -it <conteinaer image> /bin/bash
    

    を実行することでシェルが起動する

    ※ここでexitするとコンテナも終了する

  • 補足

    • ここではあくまで/bin/bashというコマンドを実行しているだけのため、/bin/passwd(パスワードの変更画面を表示)のような他のコマンドを実行することもできる。
    • 他のシェルを使用したい場合には /bin/bash でなく /bin/sh/ のように実行することもできる
    • 現在使用しているシェルはecho $SHELL, 使用可能なシェルはcat /etc/shellsで確認することができる。