docker container run [イメージ名:タグ名](docker run [イメージ名:タグ名])
Dockerイメージを探し出してコンテナを起動します。(探す先はローカルに見つからなければインターネット上まで探しに行きます。)、「docker pull」、「docker create」、「docker start」コマンドを3つ続けて実行した物と同じ動作になります。
ビルドやpullしたDockerイメージからDockerコンテナを作成して実行します。デフォルトではターミナルのフォアグラウンドでコンテナが動き続けてしまいます。
-dオプション
バックグラウンドでDockerコンテナを実行させます。
-pオプション [ホスト側のポート:コンテナ側のポート番号]
コンテナの外からコンテナ内へ通信をポートフォワーディングできます。例えば、「8080:80」となっていた場合はローカルの8080ポートにアクセスすればコンテナ内の80番ポートにアクセスすることが可能ということです。
なお、-pオプションの任意のホスト側のポートは省略することが可能です。その場合はエフェメラルポート(ホストOS側で空いているポート)が自動で割り当てられることになります。どのポートが割り当てられているかは「docker container ls」コマンドの「PORTS」にてわかります。
Dockerでのポートフォワーディングとは?
ホストマシンのポートをコンテナポートに紐付けて、コンテナの外から来た通信をコンテナポートに紐づけることができる機能です。この機能により、コンテナの外からでもコンテナ内のポートを利用することができるようになります。
ポートフォワーディングの利用例
- コンテナ側でHTTPリクエストを受けるアプリがあった場合にコンテナ外からのリクエストを受けたい場合
--name コンテナ名
コンテナ名をつけれます。後で停止させる際にいちいち「docker container ls」で自動生成されたコンテナ名やコンテナIDを調べなくても良いので楽です。開発用途ではしばしば利用されますが、次々に実行停止破棄のコンテナライフサイクルを回す本番環境においては同名コンテナを削除しなければならなくなりシステムが一時停止してしまうので使いません。
--rm
停止と同時にコンテナの破棄も行います。
linkオプション
レガシーなリンク機能のためいずれは廃止されるようです。
リンク機能自体はDockerのネットワークを構築すれば実現することが可能なのでそれほど使う機会はないかと思いますが、過去構築されたDocker環境であればたびたび使われているのを見る機会があるかと思いますので覚えておきましょう。
1 |
docker run --link [コンテナ名 or コンテナID]:[リンク先コンテナの別名(任意なのでなくても良い)] |
動作
別のコンテナに別名(エイリアス)を使って通信できるようになる。
linkオプションを使わなくてもIPアドレスを使って通信が可能ですが使った方がより直感的に操作できます。仕組みとしてはリンク元のコンテナの「/etc/hosts」ファイルにエイリアス名とIPアドレスの対応が記録されます。
環境変数が起動したコンテナで追加される。
リンク元のコンテナに対してリンク先コンテナの環境変数が自動で追加されます。
コマンドは省略できる。
例えば、「docker container run」は「docker run」のように省略してタイプ数を減らすことも可能です。ただ、何をしているコマンドなのかわかりづらい場合もあるのでできるだけ省略せずにコマンドを記入する方が良い場合もあるでしょう。
この記事へのコメントはありません。