2015-01-04 12 views
12

DOCKER_OPTS="-H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock"(ubuntu 14.04のドッカーバージョン1.4.1)に変更しましたが、私にとっては何の効果もありません(ポート2375を聞いていません)。私はexport http_proxy環境が見つからないので、ドッカーはこの初期設定ファイルを読んでいないようです。設定ファイル/ etc/default/docker内でDOCKER_OPTSが動作しない

sudo docker -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock -dのみが動作します。

本当に私を混乱させました。

+1

'/ etc/default/docker'を編集した後、ドッカーサービスを再起動しますか? –

+0

ええ、私は何度も何度もやり直しました – seanlook

答えて

1

ドッキングウィンドウのソースコード(config.goflags.go)をチェックした後、私はあなたが$DOCKER_OPTSに渡すことができるオプションがドッキングウィンドウ自体のオプションがあると言うでしょう、と-Hまたは--hostは、ドッキングウィンドウデーモンのオプションです。 問題を解決するための回避策として、使用しているinitスクリプトファイルを編集してそこに-Hオプションを含めることができます。たとえば:あなたは成り上がりのinitシステムを使用している場合は

  • は、のようなもので始まる行を変更し、ファイル/etc/init.d/dockerを編集し、あなたははsysvinitのinitシステムを使用している場合はexec "$DOCKER" -H "tcp://127.0.0.1:2375" -H "unix:///var/run/docker.sock" -d $DOCKER_OPTS
  • とexecの行を変更し、ファイル/etc/init/docker.confを編集します。

start-stop-daemon --start --background \ --no-close \ --exec "$DOCKER" \ --pidfile "$DOCKER_SSD_PIDFILE" \ --make-pidfile \ -- \ -H "tcp://127.0.0.1:2375" \ -H "unix:///var/run/docker.sock" \ -d -p "$DOCKER_PIDFILE" \ $DOCKER_OPTS >> \ "$DOCKER_LOGFILE" 2>&1 log_end_msg $? ;;

+0

'/ etc/default/docker'はドッカーデーモンのスタートアップコンフィギュレーションファイルですか?多くの記事([公式ドキュメント](https://docs.docker.com/articles/networking/)を含む)は、bash環境ではなく '/ etc/default/docker'に' DOCKER_OPTS'を設定するように指示しました。 – seanlook

+0

はい、そうすべきです。ドッカーの初期化スクリプトは/ etc/default/dockerを読み込みます。私は 'DOCKER_OPTS =" -H tcp://127.0.0.1:2375 -H unix:/// var/runを設定すると、テストして、自分の環境(Linux Mint 17 -Ubuntu 14.04-とdocker 1.4.1)で動作します。 /docker.sock "。私はデフォルトのinitシステム(upstart)を使用していますが、同じものを使用する必要があります。 '/ etc/init/docker.conf'ファイルをチェックして、設定ファイルがロードされているかどうか確認してください。次のように表示されます: '[-f/etc/default/$ UPSTART_JOB];次に。/etc/default/$ UPSTART_JOB; fi' –

+0

'/ etc/default/docker'は、私のubuntuサーバを再起動した後に動作します。 – seanlook

3

私はちょうど "同じ" 問題に遭遇しました。

私は、/ etc/default/dockerのすべてのオプションがデフォルトで実際にコメントアウトされていることに気付きました。

DOCKER_OPTSの前にある#を削除して再起動し、意図したとおりに動作しました。

以前のドッカーバージョン(1.3)にはこれらのオプションがデフォルトでコメントアウトされていなかったと思います。少なくとも、#-signを削除する必要はありません。

+0

これはドッカー17.xx + ubuntu 1.18でdocker-composeを行います。16.04 –

7

私は同じ問題がありました。

Ubuntu 14.10は、sysv-init/upstartの代わりにsystemdを使用します。場合によっては、/lib/systemd/system/docker.serviceを調べてオプションを変更する必要があります。

+0

完全性のために、必要に応じて 'sudo'を使って' systemctl daemon-reload'と 'service docker restart'を発行する必要があります。 –

+0

また、' journalctl'はサービスの開始に失敗した場合にメッセージを表示するのに便利なコマンドです。 –

14

systemdを使用するDebian/Ubuntuのそれ以降のバージョンについては、ここを参照してください。

このリンクは正しくDOCKER_OPTSで動作するようにsystemdユニットファイルを変更する方法について説明しますhttps://github.com/docker/docker/issues/9889

基本的にあなたが/etc/systemd/system/docker.service.d/docker.confファイルを作成し、上書きを指定しますそこ。私はsystemdに環境中のDOCKER_OPTS環境変数でドッキングウィンドウを起動するには、前述のファイルに次のような何かしなければならなかった

[Unit] 
Description=Docker Application Container Engine 
Documentation=https://docs.docker.com 
After=network.target docker.socket 
Requires=docker.socket 

[Service] 
EnvironmentFile=-/etc/default/docker 
ExecStart= 
ExecStart=/usr/bin/docker -d $DOCKER_OPTS -H fd:// 
MountFlags=slave 
LimitNOFILE=1048576 
LimitNPROC=1048576 
LimitCORE=infinity 

[Install] 
WantedBy=multi-user.target 

現在のドッキングウィンドウには、プロセスをインストールするには、にsystemdユニットファイルを無視するようです。

+0

私は変更したい '/ lib/systemd/system/docker.service'の部分をオーバーライドした、もっと小さなdocker.confで成功しました。 – Aneel

19

推奨方法ドッカー17.xx +

あなたドッカーデーモンのデーモンフラグや環境変数を設定するには、いくつかの方法があります。recommended wayは、プラットフォームに依存しないdaemon.jsonファイルを使用します。デフォルトでは、Linuxの/etc/docker/にあります。次の操作を行い、に接続するためのデーモンソケット(複数可)を設定するので、

、:

{ 
    "hosts": ["tcp://127.0.0.1:2375", "unix:///var/run/docker.sock"] 
} 
  • 再起動ドッカー

    1. daemon.jsonファイルに次のフラグを設定します。

      $ sudo systemctl restart docker 
      

    毎回簡単!

    ドッカー1.xの上まで

    docker documentationによると、あなたのドッカーデーモンのデーモンフラグや環境変数を設定するための推奨方法は、にsystemdドロップでファイルを使用することです。

    ので、この特定のケースのために、次の操作を行います。

    1. 次の内容の/etc/systemd/system/docker.service.d/custom.confと呼ばれるファイルを作成します。

      [Service] 
      ExecStart= 
      ExecStart=/usr/bin/dockerd -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock 
      
    2. フラッシュの変更:

      $ sudo systemctl daemon-reload 
      
    3. 再起動ドッカー:

      そして、実行ウェイ

      編集ファイル/lib/systemd/system/docker.service

      ... 
      [Service] 
      ExecStart=/usr/bin/docker -d -H fd:// $DOCKER_OPTS 
      ... 
      EnvironmentFile=-/etc/default/docker 
      ... 
      

      推奨しない

      $ sudo systemctl restart docker 
      

    のUbuntuとの組み合わせでsystemdにコメントへの返信で
    $ systemctl daemon-reload 
    $ systemctl restart docker 
    

  • +0

    -Hは既に設定されているので、推奨される方法は私にとってはうまくいきませんでした。私は前のメソッドの一部を使用しなければなりませんhttps://stackoverflow.com/a/44055659/467082 – blackbox

    1

    :まだUbuntuの14.04 Upstartを使用するので、への変更は望ましい効果があったはずです。 Ubuntuがデフォルトでsystemdの使用を開始したのは15.04まででした。

    あなたがUbuntu 15.04以降を持っているため、systemdを使う必要がある場合や、15より前にsystemdを明示的に使用する必要がある場合。04、OP、TCPソケットの所望の効果を得るために正しいと最も簡単な方法、次のようになります。

    1. /etc/systemd/system/docker.service.d/docker-tcp.conf
    2. sudo systemctl daemon-reload
    3. sudo systemctl restart dockerを実行する実行
    4. 下の内容を追加したファイルを作成します。

    ファイルの内容:

    [Service] 
    ExecStart= 
    ExecStart=/usr/bin/docker daemon --host=tcp://127.0.0.1:2375 
    
    0

    私も同様の問題がありました。いくつかのシステムをUbuntu 14.04からUbuntu 16.04に移行しようと考え始めたとき。私の目標は、/etc/docker/daemon.json以外のUbuntu 16.04(systemd)とUbuntu 14.04(Upstart)の両方のdockerd設定ファイル(DOCKER_OPTS)を使用することでした。 jsonはコメントをサポートしていないので、私は/etc/docker/daemon.jsonをdockerデーモンの設定に使用しないことを選択しました。

    私は、dockerdフラグを変更するだけのオーバーライドファイルを使用するシステム設計を望んでいました。他のDocker設定には、デフォルトのDockerシステム構成ファイル(/lib/systemd/system/docker.service)が使用されます。もう1つの目的は、各変更またはブート後に各システムのsystemdをカスタマイズすることでした。

    私のチャレンジを解決します。それはあなたを助けるかもしれません。

    git clone https://github.com/BradleyA/docker-scripts 
    cd docker-scripts/dockerd-configuration-options 
    
    関連する問題