【Docker】AmazonLinuxイメージのyumを少しだけ早くするかもしれない方法

ちょっと環境が変わって、最近はDockerばかり触っています。
Dockerは1コンテナ1サービスってのが主流というか流れという話を聞きましたが、
本番環境ではDockerを使用しておらず、開発環境を構築する為のDockerなので、本番環境と同じような環境を作りたいのです。
で、本番環境もお客様の都合やら政治的なんちゃらの影響で1つのサーバにApacheとMySQLが混在するなんてこともあります。
そんな時に本番で使っているAmazonLinuxのイメージを元にDockerfileにApacheやらMySQLやらのyumを書きますが、
いかんせん構築までに時間がかかるんですよね。

前置きが長くなりましたが、多分少しだけAmazonLinuxのイメージでyumが早くなると思われる方法をメモとして残します。

事の発端としては、yumで100以上のパッケージをインストールした時にタイムアウトを起こしたときのメッセージでした。
スクリーンショットやらは残っていないのですが「us-west-1」だったかのリポジトリを参照してエラーと出ていました。
日本からus-west-1を見に行くのって距離あるし遅いんじゃ……?と思い、ちょっと実験。
実験用に用意したDockerfileはこんな感じです。

実行

ひとまずこれで実行。
Docker Composeで環境を作っている最中の実験なので、Docker Composeで実行しています。
また、途中は長いので端折りました。

1.1MB/sでした。
これはus-west-1に繋いでいるはず。

Dockerfileの改善バージョンがこちら

変更点は6行目。
実行している国から近いリージョンをファイルに書き込むようにしてみました(ファイルについては後述)。

ということでこのDockerfileで再度実行。

3.4MB/sとだいぶ速くなった。
回線の混み具合の影響もあるかなと思って何度かやりましたが、全て後者の方が速かったです。

考察

で、なんで速くなったのかなと思って見てみましたが、ミラーリストの取得先が影響しているのかなと考えています。
AmazonLinuxのイメージの中にあるリポジトリ設定を見てみると下記のようになっています。

/etc/yum.repos.d/amzn-main.repo

$awsregion という変数は /etc/yum/vars/awsregion の値を取得しています。
何も変更していないと、ここには「default」が設定されています。
defaultの場合に取得されるリストは下記でした。

us-west-1が一番上に設定されています。
で、ここに「northeast-1」を設定してやった時のリストはというと

northeast-1が一番上となりました。
やはりコンテナを作る国とリージョンは合わせた方が良いということなのだろうか。

これで秘伝のDockerfileにまたスパイスが追加されることになりました。


sponsored link

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です