[小ネタ] docker run コマンドではオプションの順番が大切

docker run コマンドでエラーが発生してハマったので原因と解決策を紹介します。
2022.07.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。アノテーションの中村 (誠) です。
今回は小ネタとして、docker run コマンド実行時のオプションの順番が大切であるという内容を紹介します。

結論

docker run コマンド実行時には、オプションの後にイメージ情報を記載する必要があります。

Docker 日本語ドキュメント より

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

ハマったこと

オプションの順番を気にせず、以下のようなコマンドを実行しました。

docker run <image-id> -p 80:8080

すると、以下のエラーが発生しました。

[eval]:1
80:8080
  ^

SyntaxError: Unexpected token :
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Object.<anonymous> ([eval]-wrapper:6:22)
    at Module._compile (module.js:653:30)
    at evalScript (bootstrap_node.js:479:27)
    at startup (bootstrap_node.js:180:9)
    at bootstrap_node.js:625:3

タイポもないのになぜエラーになるのかがわからず、ハマってしまいました。

Docker のドキュメントを確認

Docker のドキュメントは見ていたのですが、オプションの順番までは見ていませんでした。

初心に戻り、上記のドキュメントに記載されている順番通りにコマンドを実行したところ、エラーが解消されました。

docker run -p 80:8080 <image-id>

ドキュメント通りに実行するという大切さをあらためて感じました。

まとめ

今回は小ネタとして、docker run コマンド実行時のオプションの順番が大切であるという内容を紹介しました。
AWS に限らず、コマンドや仕様のドキュメントを読んで試す際には、まずはレールから逸れずに素直にやってみることが大切ですね。

小ネタでしたが、参考になれば幸いです。

参考資料

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社 WEB サイトをご覧ください。