ドッカーはドッカーデーモンに接続できません


473

Dockerのバージョンをに更新した後0.8.0、次のように入力するとエラーメッセージが表示されますsudo docker version

Client version: 0.8.0
Go version (client): go1.2
Git commit (client): cc3a8c8
2014/02/19 12:54:16 Can't connect to docker daemon. Is 'docker -d' running on this host?

そして、私は指示に従ってコマンドを入力しましたsudo docker -d、そして私はこれを得ました:

[/var/lib/docker|2462000b] +job initserver()
[/var/lib/docker|2462000b.initserver()] Creating server
open /var/lib/docker/aufs/layers/cf2414da53f9bcfaa48bc3d58360d7f1cfd3784e4fe51fbef95197709dfc285d: no such file or directory[/var/lib/docker|2462000b] -job initserver() = ERR (1)
2014/02/19 12:55:57 initserver: open /var/lib/docker/aufs/layers/cf2414da53f9bcfaa48bc3d58360d7f1cfd3784e4fe51fbef95197709dfc285d: no such file or directory

どうすれば問題を解決できますか?


7
docker -dを実行するときにsudoを使用しましたか?
Ben Whaley 2014

私はエラーでそれが言うことに気づきますno such file or directory[/var/lib/docker|2462000b]/var/lib/dockerあなたのシステム上に存在しますか?そうでない場合は、Dockerを再インストールする必要があると思います。
Ben Whaley

3
デーモンの起動時に「ファイルが見つかりません」というメッセージが表示されないことを除いて、同じ問題があります(「ps」がまだ実行しているデーモンに接続できません)。/ var / lib / dockerは存在します。
Jonathan Hartley

VPSでDockerを使用していますか?
pigletfly 2014

ここからDockerデスクトップをインストールしてください、それはそれを解決します。docs.docker.com/docker-for-mac/install
Guy Assaf

回答:


642

Linux

Linuxのインストール後の手順のマニュアルは、次の手順を明らかに:

  1. Dockerグループを作成します。
    sudo groupadd docker
  2. ユーザーをdockerグループに追加します。
    sudo usermod -aG docker $(whoami)
  3. ログアウトして再度ログインし、Dockerが正しい権限で実行されるようにします。
  4. Dockerを起動します。
    sudoサービスDockerの開始

Mac OS X

Dayel Ostracoは、環境変数を追加する必要があると言います。

docker-machine start # Start virtual machine for docker
docker-machine env  # It's helps to get environment variables
eval "$(docker-machine env default)" # Set environment variables

docker-machine startコマンドは、プロセスを導くために、コメントを出力します。


はい。これは私にとって問題でした。ユーザーをdockerグループに追加し、デーモンに接続できるようになりました。ありがとう
ボグダン

FWIW、特定のセクションへのリンクはこれです
非対称的な

20
何らかの理由でログアウトしたくない場合は、newgrpコマンドを使用して、この新しいグループで新しいシェルを開始できます。このように:newgrp docker
DenilsonSáMaia 2016

sudo chown $ USER:$ USER / path / to / docker / binary
Ivor Scott

bashを再起動する時間がありませんでした。alias docker='sudo docker'トリックもそうしました。:p
LovaBill

150

Linux

Linuxで(CLIから)Dockerデーモンを実行するには、次のコマンドを実行します

$ sudo service docker start # Ubuntu/Debian

注:$コピーして貼り付けるときに文字をスキップします。

RedHat / CentOSでは、次を実行しますsudo systemctl start docker

「ベース」ファイルシステムを初期化するには、次を実行:

$ sudo service docker stop
$ sudo rm -rf /var/lib/docker
$ sudo service docker start

または手動で:

$ sudo docker -d --storage-opt dm.basesize=20G

docker-machineLinuxにインストール

Linuxにマシンバイナリをインストールするには:

  • ローカル:

    install -vm755 <(curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) $HOME/bin/docker-machine
    
  • グローバル:

    sudo bash -c 'install -vm755 <(curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) /usr/local/bin/docker-machine'
    

マックOS

macOSではdockerバイナリはクライアントにすぎず、DockerデーモンはLinux固有のカーネル機能を使用するため、Dockerデーモンを実行するために使用できません。したがって、OS XでDockerをネイティブに実行することはできません。したがってdocker-machine、作成するためにインストールする必要があります。 VMに接続します。

docker-machinemacOSにインストールする

docker-machineコマンドがまだない場合は、次のいずれかの方法を使用してインストールします。

  • Brewコマンドの使用:brew install docker-machine docker
  • GitHubから手動で:

    install -v <(curl https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) /usr/local/bin/docker-machine
    

参照:Mac用のDockerを始めましょう

docker-machinemacOSで構成する

Homebrewを介してDocker Machineを起動するには、次を実行:

brew services start docker-machine

defaultマシンを作成するには(マシンがない場合は、以下を参照してくださいdocker-machine ls):

docker-machine create --driver virtualbox default

次に、Dockerクライアントの環境をセットアップします。

eval "$(docker-machine env default)"

次に、コンテナをリストして再確認します。

docker ps

参照:Docker MachineとローカルVMの使用開始


macOSにDocker.appをインストールする

上記のソリューションの代わりに、次の方法でDockerアプリをインストールできます。

brew cask install docker

詳細については、この投稿を確認してください。関連項目:macOSでDockerデーモンに接続できない


1
sudo service

ありがとう。これは私にとってUbuntu 14.04で機能したものです。他のすべてが失敗しました。
nyxee 2017

これは私がインストールする必要がありました2010年よりも古いハードウェアを搭載したMac OSX上で私のために働いた唯一のものですdocker-toolboxからdocs.docker.com/toolbox/toolbox_install_mac
ビクラム

2
Homebrew経由でdocker-compose、docker-machine、dockerをインストールする必要がありましたが、うまくいきました!
Entalpi

CentOS 7.6のdocker 18でこの問題が発生しましたsudo rm -rf /var/lib/dockerが、再起動するとうまくいきました。私は本当に行き詰まり、他の解決策は私には役に立たなかった。
アシュカン

142

OS XでDockerを実行している場合、次のevalを実行するとうまくいきます。

eval "$(docker-machine env default)"

すべてのターミナルセッションでこのevalステートメントを実行する必要がない場合は、これをに追加できますbash_profile

#Docker
eval "$(docker-machine env default)"

bash_profile変更を有効にするには、ターミナルセッションを再起動するか、ソースを実行してください。


3
ここでも同じですが、これを一人で試してみると、Error checking TLS connection: Host is not running...コマンドを実行した後でこのevalを実行することがよくありますdocker-machine start default
Emilio Ferrucci、

100

詳細な調査の結果、この問題はMac OS Xが再起動された(またはDocker仮想マシンが再起動された)たびに発生するようで、DockerクライアントがDockerデーモンに接続できなくなります。

この問題を解決するには、次のいずれかを実行できます。

A)公式インストーラー(https://www.docker.com/products/docker-toolbox)を使用してDocker Toolboxを再インストールするか、単に

B)次のコマンドを順番に実行します。

# First make sure that the virtual machine is running
docker-machine start default

# Regenerate TLS connection certs, requires confirmation
docker-machine regenerate-certs default

# Finally, set env
eval "$(docker-machine env default)"

C)(B)と同様に、次の行をコピーして貼り付けて、3つのコマンドすべてを実行することもできます。

docker-machine start default; docker-machine regenerate-certs default; eval "$(docker-machine env default)"

次のエラーが発生した場合:

Error getting SSH command: Something went wrong running an SSH command!
command : cat /etc/os-release
err     : exit status 255
output  :

3つのコマンドをもう一度再実行するだけで、2回目に機能するはずです。


6
Host does not exist: "default"
Roman Gaufman

@RomanGaufman:これは機能しますか:docker-machine start default?
KAD、2016

1
@RomanGaufmanコマンドが正常に実行される前に端末を再起動する必要がありました。
anon58192932 2016年

これは、仮想ボックスvmのIPがMacを再起動するたびに変化するためですか?
Cui Pengfei崔鹏飞16

:RomanGaufmanのエラーは、(現在は)以下の答えによって解決される@ stackoverflow.com/a/34887761/634576
デイブSchweisguth

47

これは通常、dockerグループに参加していないときに発生します。次のコマンドを使用して、自分をdockerグループに追加できます。

sudo usermod -aG docker yourusername

または

sudo usermod -aG docker $(whoami)

この後、ログアウトしてサーバーに再度ログインする必要があります。

または、sudoすべてのDockerコマンドを使用できます。


5
グループが存在しない場合:sudo groupadd
docker

30

上記の他の解決策がすべて機能しない場合は、次の所有権を確認してみてください/var/run/docker.sock

ls -l /var/run/docker.sock

所有者でない場合は、次のコマンドで所有権を変更します。

sudo chown *your-username* /var/run/docker.sock

次に、先に進んでDockerコマンドを手間なしで実行してみます。D


1
私はこの答えから始めました、そしてこれは私を助けました!
Andrzej Martyna 2017

2
このアプローチの問題は、デーモンが再起動されるたびにこの手順を繰り返す必要があることです
MFIhsan 2017

こんにちは@MFIhsanスマートなシステム管理者は、これらのコマンドのbashスクリプトを作成し、crontabに追加して、ここで説明するように再起動/起動時に実行するように指示します> stackoverflow.com/a/29247942/3469960
kevthanewversi

一般的なユーザーは靴下を決して所有しないでください!靴下を所有していない場合は、靴下の所有者グループではなく、wheelグループと靴下が属するグループに属していることを確認してください。
CrazyMerlin

16

Dockerが機能していない理由を見つける最善の方法は、デーモンを手動で実行することです。

$ sudo service docker stop
$ ps aux | grep docker  # do this until you don't see /usr/bin/docker -d
$ /usr/bin/docker -d

DockerデーモンはSTDOUTにログを記録するので、何をしていても吐き出します。

これが私の問題でした:

[8bf47e42.initserver()] Creating pidfile
2015/01/11 15:20:33 pid file found, ensure docker is not running or delete /var/run/docker.pid

これは、インスタンスが別の仮想マシンから複製されたためです。私はpidfileを削除する必要があり、その後すべてが機能しました。

もちろん、これがうまくいくと思い込むのではなく、もう一度デーモンを手動で実行し、サービスを再開する前にログ出力でその他のエラーを確認することをお勧めします。


1
それはまた、問題を見つけるのに私が役立った理由でもあります(残念ながら、私はあなたの答えを後で見ました)。私は欠けていたapparmorパッケージでした。
Pierre de LESPINAY、2015

この解決策は私にとってうまくいきました。/var/run/docker.pidを削除した後、ようやくdockerを起動できました。
jirikadlec2 2015年

3
警告: '-d'は非推奨です。間もなく削除されます。使用法を参照してください。警告[0000]代わりに「dockerデーモン」を使用してください。
juanmf 2015年

3
フラグ設けなく定義されていない。-d
ルイス・デ・スーザ

デバッグ有効に利用して、最新バージョンでは、手動でドッキングウィンドウデーモンを実行するには:dockerd -D
ルイス・ミゲル・セラーノ

14

メッセージが表示されたら、でCan't connect to docker daemon. Is 'docker -d' running on this host?確認できますdocker version

Docker Clientが実行されているような情報が表示された場合Docker Serverはそうはありません。Dockerサーバーを起動する必要があるのは明らかです。

CentOSでは、を使用serviceしてDockerサーバーを起動または停止できます。

$ sudo service docker stop
$ sudo service docker start

次に、と入力docker versionすると、DockerクライアントとDockerサーバーの情報が表示され、Dockerデーモンが起動します。


2
sudo service docker startUbuntu 14.04でも動作しました。
funroll 2016

Cent OS 7は、Dockerを起動するたびに実行する必要があります。
Paddy

@Paddyサービスを表明した後、サービスを有効にする必要があります。システムが起動し、バックグラウンドで稼働し続けると、サービスが稼働します。
CrazyMerlin

これらすべての答えは次のとおりです。「Dockerサービスを開始するには、sudo systemctl start dockerをsudoする必要があります」。Dockerのインストールに問題があった場合、サービス構成ファイルが存在しない可能性もあります。その場合、「Unit docker.service not loaded」
CrazyMerlin

12

やるps aux | grep dockerデーモンが動作しているかどうかを確認します。実行しない場合/etc/init.d/docker start


5
私は同じ問題を抱えています。「ps」は、私のdockerプロセスがまだ実行中であることを示しています。
ジョナサンハートレイ

Docker(既に実行されていました)を停止して開始すると、正直になりました。
カイル2014年

14
sudo service docker start「docker start / running、process 4633」とsudo service docker status言ってから「docker stop / waiting」と言う
Pierre de LESPINAY

12

インストール後にDockerを再起動します。

$ sudo service docker stop
$ sudo service docker start

そしてそれは機能します。


9

同様の問題があります。Dockerをインストールしたばかりで、次のコマンドが環境に表示されなかったため、ログアウトしてシェルに再度ログインする必要がありました。

export DOCKER_HOST=127.0.0.1:4243 >> ~/.bashrc

3
ログアウトして再度ログインする必要がありました。すべて修正されました!
Mark Shust、M.academy、2015

これは私の問題を解決しました!私はWSLとしてUbuntu 16.04を実行しています。変更しなければならない唯一のことは、デフォルトのポート番号でした:export DOCKER_HOST = 127.0.0.1:2375 >>〜/ .bashrc
Alex

9

私はこの問題に直面し、次のコマンドを使用してDockerを再起動しました。

$ sudo service docker stop
$ sudo service docker start

しかし、Dockerコマンドをなしで実行するのを忘れたため、問題は解決しませんでしたsudo。この問題に直面している人のために、それをチェックしてみてください。

試す

$ sudo docker info

これの代わりに:

$ docker info

Ubuntu Xenialで実行しようとしたとき、これはまさに私の問題docker buildでした。
ashnazg 2016

9

次のコマンドを使用できます

sudo service docker stop && sudo service docker start

開始するだけです。


3
それともsudo service docker restart、それは😊簡単だ
fr1sk

8

私は同じエラーを持っているとしようdocker-machine regenerate-certsか、eval..私のために動作しませんでした。

これはOS X 10.11.3(El Capitan)およびDocker v1.10.1で発生します。docker-machineを削除して再作成するだけで修正できました。ソース

を実行docker-machine lsしている場合は、次のような出力が表示されます。

ドッカー

わからない

エラー

Dockerバージョンをクエリできません:Dockerエンジンエンドポイントに接続できません

Dockerマシンを削除してみてください。

docker-machine rm -f default

defaultDockerマシン名はどこですか。その後;

docker-machine create -d virtualbox default

新しいDockerマシンを作成します。

次のコマンドを使用して、すべてが正常に見える(エラーや不明なDockerがない)ことを再確認します。

docker-machine ls

最後"$(docker-machine env default)"に、続行する前に実行するか、Docker Quickstart Terminalを実行して実行します...


6

同じ問題が発生しました-「Dockerデーモンに接続できません。」(ただし、サーバーを起動しようとしたときに「ファイルが見つかりません」というエラーは表示されませんでした。)

「ps」は、「/ usr / bin / docker -d」がまだ実行中であることを示しました

自分でサーバーを実行することに成功したことは決してないことに気づきました。すべての試みが生み出した

...
2014/03/24 21:57:29 pid file found, ensure docker is not running or delete /var/run/docker.pid

そのため、Dockerをインストールすると、デーモンがupstartに登録され、起動されたことがわかりました。したがって、デーモンを強制終了して手動で再起動しようとすると失敗します(操作は許可されません)。だから私はやった

sudo kill -9 <PID>

デーモンプロセスで。別のデーモンがすぐにその場所になり、この新しいデーモンが私のCLIクライアントを接続できるようになりました。

$ sudo docker info
Containers: 0
Images: 0
Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Dirs: 0
WARNING: No memory limit support
WARNING: No swap limit support

6

現在のユーザーをdockerグループに追加してみてください:

sudo usermod -aG docker $USER

次に、ログアウトしてログインします。


6

Docker CEアプリを使用する

マックOS

macOS用の新しいDocker Community Editionアプリを使用します。例えば:

  1. これまでにインストールしたすべてのDocker Homebrewパッケージをアンインストールします。

    brew uninstall docker-compose
    brew uninstall docker-machine
    brew uninstall docker
    
  2. 手動またはHomebrew-Caskを介してアプリインストールします。

    brew cask install docker
    

    注:このアプリはに必要なリンクが作成されますdockerdocker-composedocker-machine、など

  3. アプリを実行した後、ステータスメニューのDockerクジラアイコンをチェックアウトします。

  4. 今、あなたは使用することができるはずdockerdocker-composedocker-machineでいつものようにコマンドをターミナル

関連:

Linux / Windows

ダウンロードページからDocker CEをダウンロードし、指示に従ってください。


2018-5-20注:macOSのDocker CEアプリはかなり安っぽいです。開くたびに、すぐにフリーズし、何もできません。私はGoogleを試して問題を修正しようとしましたが、これまでのところまだ取り組んでいます
NamNamNam

1
これは報告された問題の正解です、ありがとう!
パランザ

6

この投稿にはすでにたくさんの答えがあることを知っていました。上記の問題を解決する簡単な答えを1つ追加したいと思います。

sudo systemctl start docker

上記のコマンドを実行すると、すべてのdocker関連のスレッド/サービスが開始されます。


5

Amazon AWSで実行している同じ問題が発生しました。

これが私が試みたものです:

  • docker-machine既存のAWSインスタンスを使用してローカルにセットアップする
  • 使用された一般的なセットアップ
  • 接続のようなものですが、リモートポートが閉じられていたため、失敗しました
  • その後、Dockerデーモンは起動を拒否しましたが、実行dockerdは機能しました...

リモートマシンで次のようにテストされました。

service docker start # Also restart, no success
systemctl start docker # Also restart, no success
dockerd # Success

/var/lib/dockerすべて削除してアンインストールしましたが、再インストールしても成功しませんでした。残念ながら、失敗したログは保存されていませんdocker.serviceが、開始を拒否しただけです。

しかし、最終的に私の問題を解決したのは基本的に:

sudo usermod -aG docker $(whoami)

4

DockerのDOCサイトをフォロー:Dockerを非rootユーザーとして管理

1)Dockerグループを作成する

sudo groupadd docker 

2)グループの権限を取得するには、ユーザーをdockerグループに属させます。

sudo usermod -aG docker $USER

シェルにDOCKER_HOST環境変数が設定されているかどうかを確認します。

env | grep DOCKER_HOST

存在する場合、

unset DOCKER_HOST

その後、これはうまくいくはずです:

docker run hello-world

1
あなたは命の恩人であるunset DOCKER_HOST私のために働いた
user3014595

4

Dockerツールを使用してOS Xで実行している場合は、これに従ってください。

デーモンを再起動して、環境を構成します。

docker-machine restart

その後

docker-machine env

最終的に、

eval $(docker-machine env)

デーモンが実行されていることをテストするには:

docker ps -aまたはdocker-machine ls。これにより、すべてのコンテナが一覧表示されます。


2

同じ問題が発生しました。CentOS 6.5の場合:

ps aux |grep `cat /var/run/docker.pid`

Dockerデーモンプロセスが存在しないことが示された場合は、次のように入力します。

docker -d

次にCtrl+でDDockerを停止します。この-dオプションを使用するため、Dockerはデーモンとして実行されます。今私たちはできる:

service docker start

その後、私は行うことができますdocker pull centos。それで全部です。

注:これらが機能しない場合は、を試してyum updateから、これらを繰り返すことができますyum install


2

ドッカーサービスが実行されない場合があります。

RedHat / Fedora / CentOSを使用している場合は、これを試してください。

sudo systemctl start docker

Ubuntu / Debianを使用している場合:

sudo service start docker

Dockerがホストとそれぞれのポートで実行を開始します。


1

Docker Machineを使用しているかどうかを確認します。

実行docker-machine env defaultするとうまくいくはずです。

ドキュメントによると:

Docker Machineは、仮想ホストにDocker Engineをインストールし、docker-machineコマンドを使用してホストを管理できるツールです。Machineを使用して、ローカルのMacまたはWindowsボックス、会社のネットワーク、データセンター、またはAWSやDigital OceanなどのクラウドプロバイダーにDockerホストを作成できます。

docker-machineコマンドを使用して、管理対象ホストを起動、検査、停止、再起動し、Dockerクライアントとデーモンをアップグレードし、ホストと通信するようにDockerクライアントを構成できます。

Machine CLIを実行中の管理対象ホストに向けると、dockerそのホストで直接コマンドを実行でき ます。たとえば、実行する docker-machine env defaultと呼ばれるホストを指すようにdefault、画面上の完全に指示に従っenv設定、および実行docker psdocker run hello-worldなどなどを。

https://docs.docker.com/machine/overview/


1
  1. 私も同じ問題を抱えていました。問題はdocker-daemonとdocker-clientに割り当てられたソケットにありました。
  2. まず、docker.sockのdocker-clientに権限が設定されていませんでした。「sudo usermod -aG docker $ USER」を使用して設定できます。
  3. 次に、docker-clientが実行されているbashファイルを確認します。私にとっては、それは0.0.0.0:2375でしたが、docker-daemonはunixソケットで実行されていました(それはdockerdの構成ファイルで設定されていました)。
  4. bash-lineにコメントするだけで問題なく動作します。
  5. ただし、UNIXソケットではなくTCPポートで機能させる場合は、dockerdの構成ファイルを変更して0.0.0.0.2375に設定し、存在する場合は行をそのままbashに保持するか、0.0.0.0に設定します。 2375。

1

修正するには、ターミナルで次のコマンドを発行する必要があります。各ステップについて説明します。

# Uninstall Docker from apt packages
$ sudo apt-get remove docker docker.io

# Remove it from the libraries just to be
# sure it's gone forever
$ sudo rm -rf /var/lib/docker/*

さて、物事を単純化して時間を増やしたい場合は、パラメーターを指定してinitスクリプトを実行できますinstallDocker

# Pull the init script from GitHub
$ wget https://github.com/dminca/dotfiles/blob/master/init

# Add rights to run the script
$ chmod 755 init

# Just run the script with the installDocker parameter
$ ./init installDocker

再起動はオプションですが、すべてがスムーズに実行されるようにすることをお勧めします。


1

Ubuntu 14.04でDocker 1.10を実行すると同じ問題が発生し、指定された回答がどれも機能しませんでした。私にとっての修正は、Dockerデーモンの実行時にストレージドライバーを指定することでした。

sudo docker daemon --storage-driver=devicemapper

1

gitlab-ci / gitlab-runnersを使用する場合、アクセスする権限がないとエラーが発生します/var/run/docker.sock

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

問題を解決するため:

sudo usermod -aG docker gitlab-runner

確認:

sudo -u gitlab-runner -H docker info

お役に立てば幸いです。


0

TLS証明書の再生成が機能しない場合

docker-machine regenerate-certs default

Dockerマシンを再起動して、env変数を設定してみてください。

docker-machine restart default
eval $(docker-machine env default)

マシンが以下で実行されているかどうかを確認します。

docker-machine ls

または代わりに

docker run hello-world

これでうまくいきました。ただし、それでもデーモンが起動しない場合は、Dockerのトラブルシューティングページに、新しいマシンを停止、削除、作成するプロセスの詳細が記載されています。


0

また、「Dockerデーモンに接続できません。Dockerデーモンはこのホストで実行されていますか?」という問題も発生しました。

使うのを忘れていましたsudo。それが私たちの一部を助けることを願っています。

$:docker images
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

$:sudo docker images
REPOSITORY   TAG   IMAGE ID   CREATED   SIZE
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.