docker は打つ回数のわりにコマンドが長いので、alias を置く価値があります。ただ、思いつくまま増やすと自分でも覚えていない略語が溜まるだけです。数年使って rc ファイルに残ったものと、途中でやめたものを書きます。

単に短くするもの
alias d='docker' alias dc='docker compose'
これだけで体感がかなり変わります。ただし dc にはひとつ注意があります。
dc は既存のコマンドです。 bc に付属する逆ポーランド記法の電卓で、macOS にも多くの Linux ディストロにも最初から入っています。alias で潰しても普段は困りませんが、他人の端末で dc を叩いて電卓が起動したときに一瞬混乱します。気になるなら dco などにしてください。
なお docker-compose(ハイフン)は v1 の名前で、すでにサポートが終わっています。今から書くなら docker compose(スペース)です。
docker ps を読める形にする
デフォルトの docker ps は CONTAINER ID と IMAGE と COMMAND で横幅を使い切り、肝心の名前とポートが折り返します。列を絞ります。
alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'
ただ、これを alias にする前に選択肢がもうひとつあります。~/.docker/config.json に書いておくと、docker ps そのものの既定の出力が変わります。
{ "psFormat": "table {{.Names}}\t{{.Status}}\t{{.Ports}}", "imagesFormat": "table {{.Repository}}\t{{.Tag}}\t{{.Size}}" }
alias と違って、シェルを問わず効きます。逆に、出力を機械的に処理するスクリプトが同じマシンにあると、そちらの前提を壊す可能性があります。個人の開発機なら設定ファイル、共用のサーバーなら alias、で使い分けています。
コンテナに入る
引数を取るので alias ではなく関数にします。
dsh() { docker exec -it "$1" sh -c 'command -v bash >/dev/null 2>&1 && exec bash || exec sh' }
docker exec -it xxx bash だけを alias にしていた時期がありましたが、Alpine ベースのイメージには bash が入っていないので毎回失敗していました。上のように bash があれば bash、なければ sh に落とす形にしてから、そこで止まらなくなりました。
コンテナ名を思い出せないことのほうが多いので、fzf が入っているなら一覧から選ばせたほうが速く済みます。
dsh() { local c c=$(docker ps --format '{{.Names}}' | fzf --select-1 --exit-0) || return docker exec -it "$c" sh -c 'command -v bash >/dev/null 2>&1 && exec bash || exec sh' }
--select-1 は候補が1つなら選択を省略、--exit-0 は候補が0なら何もせず終了します。これがないと、コンテナが動いていないときに空の選択画面が出ます。
ログ
alias dlog='docker logs -f --tail 100'
--tail を付けないと、起動から現在までの全ログが流れてから追従が始まります。長時間動いているコンテナでは待たされるので、既定で直近だけ出すようにしています。
全部止める
alias dstop='docker stop $(docker ps -q)'
これは動いているコンテナが1つもないとエラーになります。docker ps -q が空を返し、docker stop が引数なしで呼ばれるためです。
"docker stop" requires at least 1 argument.
害はありませんが、毎回赤い文字が出るのは気分が悪いので、関数にして黙らせています。
dstop() { local ids ids=$(docker ps -q) [ -z "$ids" ] && return 0 docker stop $ids }
掃除するもの
ここだけは、alias にする前に何が消えるかを把握しておく必要があります。
alias dprune='docker system prune -f'
docker system prune が消すのは、停止済みのコンテナ、どのコンテナからも使われていないネットワーク、宙に浮いた(タグのない)イメージ、ビルドキャッシュです。-f は確認をスキップします。この範囲なら、作り直せるものしか消えません。
問題は、よく一緒に紹介される次の2つのオプションです。
-a:使っていないイメージを、タグ付きも含めて全部消します。次のビルドやプルが軒並み遅くなります--volumes:使っていないボリュームを消します。名前付きボリュームに DB のデータを置いている場合、コンテナを落としている隙にこれを叩くと消えます
docker system prune -af --volumes を dclean のような短い名前に割り当てるのは勧めません。打ち間違いや履歴からの誤爆で、戻せないものが消えます。ディスクを本気で空けたいときだけ、フルコマンドを自分で打つのが結局安全です。
イメージだけ整理したいなら、こちらのほうが範囲が明確です。
alias dprunei='docker image prune -f'
Compose
alias dcu='docker compose up -d' alias dcd='docker compose down' alias dcl='docker compose logs -f --tail 100' alias dcr='docker compose run --rm'
dcr の --rm は忘れると効いてきます。docker compose run は毎回新しいコンテナを作り、終了しても残るので、--rm なしで何度も実行していると停止済みコンテナが静かに積み上がります。
docker compose down にも -v を付けるとボリュームが消えます。dcd を down -v にしないでください。開発中の DB を毎回作り直すつもりならそれでも構いませんが、たいていは事故になります。
どこに置くか
~/.bashrc や ~/.zshrc に直接書いてもいいのですが、量が増えてきたら分けたほうが見通しが良くなります。
# ~/.bashrc [ -f ~/.docker_aliases ] && . ~/.docker_aliases
ファイルの存在チェックを挟んでおくと、Docker を入れていないマシンに同じ dotfiles を持っていってもエラーが出ません。
最後にひとつ、これは alias 全般の性質です。alias はスクリプトの中では展開されません。 bash では対話シェル以外で無効なので、ssh host 'dps' のような呼び出しも通りません。手元で打つためのものと割り切って、自動化する処理にはフルコマンドを書いてください。