こんにちは。sinyです。
本記事では、Docker入門者向けにdocker runコマンドオプションについて情報をまとめました。
docker runコマンドとは?
docker runコマンドはDockerイメージからコンテナを作成し、実行状態にするために使うコマンドです。
なお、「docker run」だと何をrunしているか明確でないので、「docker container run」コマンドを使うことをお勧めします。
理由は、「何をrunしているかコマンドを見れば明確だから」です。
※docker runもdocker kontainer runも実施していることは同じです。
docker container runコマンドオプション
docker runコマンドのオプションには様々なものがありますが、よく使う押さえておきたいものをまとめました。
-dオプション
バックグラウンドでコンテナを動作させることができる。
※-dオプションをつけないとdocker container runしたコマンドがアクティブのままになって他のコマンドが実行できない状態になるため、通常は-dオプションをつけることが多いと思います。
※-dオプションをつけないとdocker container runしたコマンドがアクティブのままになって他のコマンドが実行できない状態になるため、通常は-dオプションをつけることが多いと思います。
-itオプション
これは-iと-tという2つのオプションをつなげたものでdocker内入力ができるようにするために頻繁に利用します。
-tオプション:コンテナの標準出力をホストの標準出力につなげる(=標準入力を開き続け操作出来るようにする)
-iオプション:ホストの入力をコンテナの標準出力につなげる(=標準入力を開き続ける)
-iオプション:ホストの入力をコンテナの標準出力につなげる(=標準入力を開き続ける)
例としてpythonのdockerイメージを-itオプションでrunしてみます。
docker container run -it pythonを実行するとpythonコンテナの内部でコマンドが入力できるようになります。
つまり、pythonコマンドが実行できる状態になります。
docker container run -it pythonを実行するとpythonコンテナの内部でコマンドが入力できるようになります。
つまり、pythonコマンドが実行できる状態になります。
以下の例ではprint("testです")と実行し、pythonコードが実行できることが確認できます。
$ docker container run -it python Python 3.7.4 (default, Sep 12 2019, 15:40:15) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> print("testです") testです >>> exit() sinfo@SINPC MINGW64 /c/Program Files/Docker Toolbox $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES sinfo@SINPC MINGW64 /c/Program Files/Docker Toolbox $
最後にexit()したあと、docker psを実行するとpythonのコンテナがなくなっていることがわかります。
-itオプションをつけると操作を終了した時に明示的にコンテナを停止しなくても自動で停止してくれます。
-p [ホスト側のポート番号]:[コンテナのポート番号]
-pオプションはポートフォワーディング設定と言って、ホスト側とコンテナ側の通信ポートを紐づける設定です。
docker container run -it -p 9000:8000 <イメージ名>
上記の例だと、9000がホスト側のポート、8000がコンテナ側のポート番号です。
--rmオプション
コンテナ終了時に自動的に破棄してくれるオプションです。
デフォルトだとコンテナを終了しても破棄されず残った状態になっているため不要なものは明示的に削除する必要がありますが、--rmオプションをつければ自動的に破棄してくれるため便利です。
docker container runと合わせてよく使うコマンド
最後にdocker container runコマンドと合わせてよく使うコマンドをまとめてました。
docker ps
docker psで実行中のコンテナ情報を一覧表示してくれます。
ちなみに、「docker ps -a」を実行(-aオプションをつける)と停止しているコンテナも含めた一覧情報を表示してくれます。
docker container ls
docker container lsも基本的にdocker psと同じ情報を表示してくれます。
docker-machine ls
docker-machine lsコマンドは、virtualbox環境などの場合に実際にアクセスするURLの情報を確認するときによく使います。
デフォルトでは「192.168.99.100」が割り当てられています。
IPだけを知りたいときは、docker-machine ip defaultコマンドで確認できます。
$ docker-machine ip default 192.168.99.100