Dockerコンテナの高度な操作

3730 ワード

前の記事では、Nginxの例を紹介しましたが、Nginxのようなコンテナでは、起動に成功した後、Nginxの構成を変更する必要が避けられません.では、この変更はどのように完了しますか?
とりつけようき
$ docker attach

依存コンテナこれは主にインタラクティブコンテナに対して,このコマンドには一定の限界があり,理解として利用でき,本格的な作業では使用が少ない.docker attachコマンドを使用する場合は、まずコンテナが起動していることを確認し、そのコマンドを使用してコンテナに入ることができます.具体的な手順は次のとおりです.
#       ,    
$ docker run --name ubuntu -it ubuntu

#        ,         
$ docker attach ubuntu

このとき容器のコマンドラインに入って操作できます.コンテナが閉じられているか、またはコンテナがバックグラウンドコンテナである場合、このコマンドは使用できません.以上の操作から分かるように、このコマンドの限界は大きく、使用シーンも少ないので、理解としてください.
コンテナ内実行コマンド
コンテナがバックグラウンドで起動した場合、docker execを使用してコンテナ内でコマンドを実行できます.docker attachとは異なり、docker execを使用するとユーザが端末から退出してもコンテナは停止せず、docker attachを使用するとユーザが端末から退出するとコンテナは停止する.このような特性に基づいて,我々は今後,容器内部を操作する際に,基本的にdocker execコマンドにより実現する.
コンテナ情報の表示
コンテナの作成に成功すると、ユーザーはdocker inspectコマンドでコンテナの詳細を表示できます.これらの詳細には、コンテナのid、コンテナ名、環境変数、実行コマンド、ホスト構成、ネットワーク構成、データボリューム構成などの情報が含まれます.formatパラメータを使用して、ユーザーが関心を持っているデータのみを表示します.
#         
$ docker inspect -f='{{.State.Running}}' ubuntu

#      IP   
$ docker inspect -f='{{.NetworkSettings.IPAddress}}' ubuntu

#      、  ID
$ docker inspect -f='{{.Name}} {{.ID}}' Ubuntu

#         
$ docker inspect -f='{{.HostConfig}}' ubuntu

コンテナプロセスの表示docker topコマンドを使用して、コンテナで実行中のプロセスを表示します.まず、コンテナが起動していることを確認し、docker topコマンドを実行します.
$ docker top

コンテナログの表示
インタラクティブコンテナは、ログがコンソールで直接印刷されるため、ログを表示するのに便利ですが、バックグラウンドコンテナでは、ログを表示する場合はdockerが提供するdocker logsコマンドを使用して表示できます.
$ docker logs ubuntu

まずログを打つコンテナを起動し、docker logsコマンドでログを表示しますが、デフォルトでは履歴ログしか表示されず、リアルタイムログを表示できません.-fパラメータを使用すると、リアルタイムログを表示できます.--tailパラメータを使用すると、ログの出力行数を正確に制御でき、-tパラメータを使用すると、ログの出力時間を表示できます.また、-fパラメータが追加されているため、他のログが出力され続けます.また、-tパラメータが追加されたため、時間はログとともに印刷された.
$ docker logs -f --tail=3 -t ubuntu

dockerの大きな利点は移植性であるため,dockerコンテナは任意に導入導出操作を行うことができる.
コンテナのエクスポート
コンテナである以上、DockerもVMWareのように異なるシステム間で容易にコピーできることを望んでいますが、DockerはVMWareエクスポートコンテナほど便利ではありません(実際には、VMWareにはコンテナエクスポート操作は存在せず、インストールディレクトリを直接コピーすればよい)、Dockerではexportコマンドを使用してコンテナをエクスポートできます.具体的な操作は以下の通りです.
この例では、まずnginxコンテナを作成し、起動します.起動に成功したら、ローカルのindex.htmlファイルをコンテナにアップロードします.
$ docker run -itd --name nginx -p 80:80 nginx

nginxトップページの表示内容を変更する
$ vi ./blog/docker/index.html
$ docker cp ./blog/docker/index.html nginx:/usr/share/nginx/html/

まずnginxというコンテナを実行し、ホストでindex.htmlファイルを編集し、編集が完了したらコンテナにアップロードします.その後、ブラウザにhttp://localhost:80と入力すると、変更に成功したことがわかります.
次にexportコマンドでコンテナをエクスポートします.次のようにします.
$ docker export nginx > ./blog/docker/nginx.tar

このコマンドは、コンテナをdockerディレクトリにインポートします.エクスポートが成功すると、このエクスポートファイルを任意に伝播することができ、他のパートナーに送信して使用することができます.VMWareの膨大なファイルに比べて、このエクスポートファイルは非常に小さいです.普通は数百兆しかないかもしれませんが、もちろん具体的な状況も見ます.
コンテナのインポート
他のパートナーはこのファイルを入手し、次のコマンドを実行してコンテナをインポートできます(自分で再インポートする場合は、dockerとnginxに関連するコンテナとミラーを削除することを覚えておく必要があります).
$ cat nginx.tar | docker import - importednginx:ilatest

コンテナのインポートに成功すると、docker runコマンドで実行できます.実行に成功した後、私たちは自分でカスタマイズしたindex.htmlページが依然として存在していることを発見しました.これは私たち自身のコンテナであることを示しています.
より多くの乾物は移動してください:https://antoniopeng.com