= Docker = 個人的なメモなので、Dockerを勉強したい場合、ここより他のサイトを見ることをお勧めします。 == Ubuntuで最新のDockerを使う == ここみる http://www.ubuntuupdates.org/ppa/docker 最新版のDockerは、Dockerプロジェクトでパッケージを配布している。ここみるとよい http://blog.docker.com/2015/07/new-apt-and-yum-repos/ == 設定について == http_proxyやDNSの設定は、/etc/default/dockerでやる。http_proxyは設定しておかないとProxy環境ではdocker search/pullが使えない。 DNSをきちんと設定しておかないと、サーバプロセスが遅くなることがあるので注意 == Dockerfile == Dockerイメージを作るファイル * COPYは使わずADDを使う。ADDの方がURLを指定したり、アーカイブを自動解凍したり高機能。 * ENTRYPOINT/CMDは引数無しで実行したときのデフォルトの実行コマンド。CMDは上書き可能でENTRYPOINTは上書きできない?(要確認) * 汎用的なイメージを作りたい場合はCMD。アプリケーションコンテナとしてユーザに勝手な操作をさせないならENTRYPOINT == ネットワーク == DockerfileにEXPOSEを記述して、公開するポートを指定。もしくは、--expose でポートを公開。 Dockerのホスト以外からアクセスする場合は、-p <ホストのポート>:<コンテナのポート>オプションでホストのポートを使って公開。例えば、SSHのポートをホストの2022番でアクセスできるようにするには、下記のようになる。 {{{ # docker run -it --name foo --expose 22 -p 2022:22 ubuntu /bin/bash }}} === 起動済みのDockerのポートの公開 === Docker自身には機能はありません。ホスト上でiptablesを利用して直接設定してやります。例えば、上記のコンテナ上の22番をホスト上の2022番に公開するには、次のようにします。 まず、コンテナのIPアドレスを調べます。 {{{ # docker inspect コンテナ名 |grep IPAddress "IPAddress": "172.17.0.18", }}} 上記で調べたコンテナに対して、直接iptableを設定します。 {{{ # iptables -t nat -A DOCKER ! -i docker0 -p tcp -m tcp --dport 2022 -j DNAT --to-destination 172.17.0.18:22 # iptables -t filter -A DOCKER -d 172.17.0.18/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 22 -j ACCEPT }}} == イメージ初期化のChips == Tipsですね。ポテトチップスではありません。 * expect: コマンドラインでインタラクティブな設定を行う場合利用 * supervisord: Dockerではsystemdが使えないので、supervisordなどでデーモンを起動するとよい