docker踏み込み記

3514 ワード

最近dockerが使われ始めました.一つはミラーオープンインスタンスが新しい仮想マシンよりずっと便利になりました.二つ目はdockerの発展も比較的成熟しています.docker-toolboxというワンタッチのインストールパッケージがあれば、docker-hubは国内にもいろいろなミラーライブラリがあります.資源の獲得は出たばかりのものよりずっと便利になりました.しかし、穴はまだ少なくないので、まとめてみましょう.

インストール


インストールはdocker-toolboxがおすすめです.前にvagrantを使ってvirtual boxをインストールしたので、インストールする必要はありません.なければoracle公式サイトでダウンロードできます.

ミラーリング


ミラーを探す


dockerミラーはdocker-hubで降りることができますが、速度が遅く、国内のいくつかの2つの資源アリhub daocloudをお勧めします.

docker pull stuck


docker pullは半分、他に用事があったので、機械はしばらく待機していたが、機械を起こした後、docker pullは動かなくなった.ネットワークをチェックしても何もなく、数分ほど待っても進捗は変わらず、強制的に中断するしかなかった.再びdocker pullは同じミラーで、ダウンロードの進捗はダウンロードしたばかりの場所からで、進捗は何も変わりません.
仕方なく、半分のミラーを落として、手動で削除するしかありません(ソリッドステートドライブの空間はやはり貴重で、1つのミラーが1つのG近くを占めています).
>docker info
/mnt/sda1/var/lib/docker

dockerホーム/var/lib/docker/、下のミラーは/var/lib/docker/imageに保存されていますが、半分下のミラーはありません.
docker@default:/mnt/sda1/var/lib/docker$ sudo ls
aufs        containers  image       network     tmp         trust       volumes

ls下tmpディレクトリ、ディレクトリサイズはダウンロードしたばかりのミラーサイズと同じで、下半分のものがここにあることがわかります.このディレクトリを削除してdocker pullを続けますが、ダウンロードを続けることはできません.どこかでダウンロードキャッシュがあるはずです.最後の手でdocker-machineを再起動します.
docker-machine restart

再びdocker pullを試して、やっとダウンロードを再開しました.

Error checking TLS connection: Error checking and/or regenerating the certs


docker-machineのipは動的に割り当てられているため、1、2回再起動した後、異なるIPが割り当てられる可能性があります.docker-machineにログインするには、証明書を再生成する必要があります.もう1つの解決策は、固定IPを設定することです.次に、固定IPをどのように配置するかを説明します.

docker-machine静的IPの設定


docker-machineのlinuxバージョンはCore Linuxで、リリース版ではなく、静的IPを直接割り当てることはできません.マシンプロセスを表示すると、デフォルトではudhcpcで動的IPが取得され、再起動すると異なるIPが取得される可能性があります.docker-machine env defaultで$DOCKER_を取得できますがHOSTですが、IPを固定する必要がある場合は、やはり面倒です.資料を集めたところ、docker-machineはIPを固定していないことが分かった.これはgithubでissueを提出したことがあるが、まだ修復されていない.コメントには/var/lib/boot 2 dockerディレクトリにbootsyncを新規作成する方法がある.sh,ファイル内設定固定IP
ifconfig eth1 192.168.99.150 netmask 255.255.255.0 broadcast 192.168.99.255 up

しかし,この方法で設定されたIPは,機器起動20分程度ごとにバックグラウンドで起動されたdhcpクライアントによって再取得され,IPは新しいIPに設定される.
現在、一時的なソリューションは2つあります.
  • dhcp clientをオフにする、dhcp client起動スクリプトは起動ディレクトリ/etc/rcで行うことができる.dファイル名dhcp.sh
  • if [ $DEVICE = "eth1" ]; then
         ifconfig eth1 192.168.99.150 netmask 255.255.255.0 broadcast 192.168.99.255 up
    else
        ...
    fi

    ファイル内のforループに判断条件を付け、eth 1ネットワークカードであれば固定IPを設定し、else他のネットワークカードはデフォルトでdhcpでIPを取得する
  • dhcp clientを閉じる方法を必要とせず、計画タスクを書き、1分間に1回IP
  • を再設定する.
    */1 * * * * ifconfig eth1 192.168.99.150 netmask 255.255.255.0 broadcast 192.168.99.255 up