docker

tcコマンドとDockerコンテナを用いて遅いネットワークをシミュレートする

「手元で、できるだけ実際の環境に近い環境でプログラムの挙動を確認したい」ということがあるかと思います。そこで今回は、遅い(レイテンシの高い)ネットワークをDockerコンテナを用いてシミュレートする具体的な方法を紹介します。 準備 以下のファイル…

Dockerイメージのビルド時にシンボリックリンクの実体を含める

タイトルがわかりにくいですが... 事の発端 以下のような構成のディレクトリがあったとします。 /foo (共有したいファイル) /bar/foo (/fooへのシンボリックリンク) /bar/Dockerfile /baz/foo (/fooへのシンボリックリンク) /baz/Dockerfile そして、{bar,ba…

Docker上のUbuntuでmanページなどを見れるようにする

問題 コンテナにおいてイメージサイズの小ささは正義です。 そのため、UbuntuのDockerイメージはいろいろなものを削り落としています。その削り落とされているものの一つとして、manページが挙げられます。 例えば、次のようにUbuntuのイメージからコンテナ…

安全で軽量なコンテナランタイム「gVisor」について

gVisorのロゴ 「少し聞いたがことある」程度だったのですが、Software Engineering Dailyというポッドキャストのエピソードで耳にしたのを機に、gVisorについて調べてみました。そして日本語の情報もあまり多くなかったので軽く記事にしました。 gVisorとは …

NginxとDockerでリバースプロキシサーバーを作る

Dockerコンテナ内でnginxを動かし、リバースプロキシサーバーを作る簡単な例を紹介します。 プロダクションで利用する際はnginxの設定をもっとしっかりしないといけませんが、この記事ではそのあたりは端折ります。 コード Dockerfile nginx.confを /etc/gin…

初期化されたMySQLのDockerコンテナを用意する

サーバーサイドアプリケーションの開発環境などにおいて、「初期化された(データベースやテーブルが作成された)MySQLのDockerコンテナを用意したい」といった場面があると思います。そういった際にどうすればよいか、簡単な例を通して説明します。 コード …

Nvidia Dockerを用いてDockerコンテナからGPUを利用する

ディープラーニング系の処理でもDockerを使いたい!ということで、Nvidia Dockerを利用してDockerコンテナでGPUを使ってみました。 マシンはAWSのp2.xlargeインスタンス(NVIDIA K80を積んでいます)を、OSはUbuntu 18.04を利用しました。 Dockerのインスト…

dockerのコンテナ・ボリュームを掃除する

逐一きれいにしていくのが一番なのですが、dockerを用いていろいろやっていると、不要なファイルが残っていたりします。 そういうときには以下のコマンドを実行します。 docker rm `docker ps -qf "status=exited"` docker volume rm `docker volume ls -qf …

Dockerを用いて一行でmysqlサーバーを動かす

以下のコマンドを実行します。 docker run -e MYSQL_ROOT_PASSWORD=password -d -p 3306:3306 mysql --character-set-server=utf8mb4 これだけで、dockerのmysqlサーバーの動いているコンテナが立ち上がります。なお、以下のように設定しています。 rootのパ…