(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Docker】デバッグツールを持ったSideCarを別コンテナにつける方法

スポンサーリンク

やりたいこと

例えば以下のようなnetstatコマンドが打てないコンテナにて

> docker run -t -i ubuntu                                                                                                            
root@652f2bab700c:/# netstat
bash: netstat: command not found

同コマンドが打てるようにする。

環境情報
  • Docker Version:19.03.5

やり方

接続したいコンテナIDを--pid=container--net=containerで指定してデバッグツールをインストール済のコンテナを起動する。

> docker run -t -i --pid=container:652f2bab700c --net=container:652f2bab700c busybox sh
/ # which netstat
/bin/netstat

以下、補足です。

補足

以下記事ではapt-get installで該当コマンドをインストールできますが

今回はサイドカーという手法でコマンドを利用可能にしました。

Dockerのベストプラクティスとして不要なファイルはイメージに配置しないものの、PD時には解析用コマンドを打ちたくなります。そのような場合には上で挙げたようにPID名前空間とネットワークを共有することで既存コンテナの中でコマンドを打つことができます。

ホスト名を確認すれば冒頭の既存コンテナに接続できていることが確認でき

/ # hostname
652f2bab700c

解析が終わればコンテナを消すことでイメージ量が増大せずに解析が可能となります。

以上、ご参考になれば幸いです。