web-dev-qa-db-ja.com

Dockerはdockerデーモンに接続できません

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

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

389
LiJung

Linux

Linux用のインストール後の手順 のドキュメントには、次の手順が記載されています。

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

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コマンドは、プロセスを導くためのコメントを出力します。

560
molavec

OS X上でDockerを実行している場合は、次のevalを実行しても問題ありません。

eval "$(docker-machine env default)"

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

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

変更を有効にするには、端末セッションを再起動するか、bash_profileでsourceを実行してください。

141
Dayel Ostraco

Linux

Linuxでdockerデーモンを実行するには( CLI から)、次を実行します:

$ 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

Linuxにdocker-machineをインストールする

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をネイティブに実行することはできません。 VMを作成してアタッチするには、docker-machineをインストールします。

MacOSにdocker-machineをインストールする

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
    

参照: Docker for Macを使い始める

MacOSでdocker-machineを構成する

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デーモンに接続できません

129
kenorb

詳細な調査の結果、この問題は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回目でうまくいくはずです。

100
K.A.D.

これは通常あなたがdockerグループにいないときに起こります。次のようにして自分自身をdockerグループに追加することができます。

Sudo usermod -aG docker yourusername

または 

Sudo usermod -aG docker $(whoami)

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

あるいは、DockerコマンドごとにSudoを実行することもできます。

39
nPcomp

上記の他の解決法がすべてうまくいかない場合は、/var/run/docker.sockの所有権を確認してみてください。

ls -l /var/run/docker.sock

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

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

それなら、Dockerコマンドを簡単に実行してみてください。D

28
kevthanewversi

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を削除するだけで、あとはすべてうまくいきました。

もちろん、これが機能すると盲目的に仮定するのではなく、サービスをバックアップする前にもう一度デーモンを手動で実行し、他のエラーについてログ出力を確認することをお勧めします。

16
Robert Elwell

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

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

CentOSでは、serviceを使ってDockerサーバーを起動または停止することができます。

$ Sudo service docker stop
$ Sudo service docker start

docker versionと入力すると、 Docker ClientとDocker Server の情報が表示され、Dockerデーモンが起動されます。

12
Shawn Wang

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

$ Sudo service docker stop
$ Sudo service docker start

そしてそれはうまくいきます。

10
Galley

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

9
Reza S

私はこの問題に直面しました、そして私はこれらのコマンドを使ってDockerを再起動しました:

$ Sudo service docker stop
$ Sudo service docker start

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

やってみる

$ Sudo docker info

これの代わりに:

$ docker info
8
Taha Emara

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

export DOCKER_Host=127.0.0.1:4243 >> ~/.bashrc
7
kayn

私は同じエラーがあり、docker-machine regenerate-certseval..を試してもうまくいきませんでした。

これはOS X 10.11.3(El Capitan)とDocker v1.10.1でのものです。再度docker-machineを削除して再作成するだけで修正できました。 出典

docker-machine lsを実行すると、以下のような出力が表示されます。

ドッカー

道の

エラー

Dockerのバージョンを照会できません:dockerエンジンのエンドポイントに接続できません。

でDockerマシンを取り外してみてください。

docker-machine rm -f default

defaultはあなたのDockerマシン名です。それでは。

docker-machine create -d virtualbox default

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

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

docker-machine ls

最後に、続行する前に"$(docker-machine env default)"を実行するか、それを実行するDocker Quickstart Terminalを実行することを忘れないでください。

7
Kerem

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

Sudo usermod -aG docker $USER

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

6
dormi330

私は同じ問題を抱えていた - "docker daemonに接続できません。" (サーバーを起動しようとしたときに「ファイルが見つかりません」というエラーが表示されなかったことを除く)

'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クライアントを接続させますDOES:

$ 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
5

私は Amazon AWS で実行して、同じ問題を抱えていました。

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

  • 既存のAWSインスタンスを使用してdocker-machineをローカルにセットアップする
  • 使用されている一般的な設定
  • 接続されているようですが、リモートポートが閉じられていたので失敗しました
  • その後、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
Deko

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

デーモンを再起動して環境を設定します。

docker-machine restart

その後

docker-machine env

最後に、

eval $(docker-machine env)

デーモンをテストするには:

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

4
Ermias K

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

Sudo systemctl start docker

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

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

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
3
blasrodri

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をダウンロードします そして指示に従います。

3
kenorb

私は同じ問題を抱えています。 CentOS 6.5の場合:

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

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

docker -d

それから Ctrl + D Dockerを停止します。 -dオプションを使用しているので、Dockerはデーモンとして動作します。今私達はすることができます:

service docker start

それで私はdocker pull centosを実行できます。それで全部です。

注:これらが機能しない場合は、yum updateを試してから、もう一度繰り返すことができます。これらの前にyum installがあるからです。

2
wuranbo

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

# 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 script をパラメータ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

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

Dockerサービス が実行されていない可能性があります。

RedHat/Fedora/CentOSをお使いの場合は、以下を試してください。

Sudo systemctl start docker

Ubuntu/Debianを使っているのなら:

Sudo service start docker

Dockerはあなたのホストとそれぞれのポートで動き始めます。

1
Aamir Meman

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

Sudo docker daemon --storage-driver=devicemapper
1
Yatit Thakker

Docker Machineを使用しているかどうかを確認してください:)

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

ドキュメントによると:

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

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
Bob
  1. 私も同じ問題を抱えていました。問題はdocker-daemonとdocker-clientに割り当てられたソケットにありました。
  2. まず、docker.sockでdocker-clientに権限が設定されていません。 "Sudo usermod -aG docker $ USER"を使用して設定できます。
  3. それから、docker-clientが実行されているあなたのbashファイルをチェックしてください、私にとっては、docker-daemonがunixソケットで実行されている間、それは0.0.0.0:2375でした(それはdockerdの設定ファイルで設定されました)。
  4. 単にbash-lineをコメントするだけでうまくいきます。
  5. しかし、UnixソケットではなくTCP portで動作させたい場合は、dockerdの設定ファイルを変更して0.0.0.0.2375に設定し、存在する場合または設定されている場合はそのまま行をbashにしてください。 0.0.0.0:2375まで。
1
Nilesh Kande

あなたはコマンドを使用することができます

Sudo service docker stop
Sudo service docker start

それを単に始めるために。

0
kvadityaaz

また、「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
0
Habeeb Perwad

さて、私は今日この問題を抱え始めました。それから私は多くの反応を見ました、しかし、どれも私のために働かなかったようです。最初の指示の大部分はLinux向けです。そしてMac版では、彼ら全員が 'docker-machine'の実行について話していました。 docker toolboxをインストールする場合は、docker-machineを使用すると思います。これは、dockerがwindowsおよびmacプラットフォーム用の仮想マシンで実行されるためです。しかし、その2017年の現在およびMac用のdockerは本当に安定しているため、ツールボックスを使用する必要はありません。

デーモンがどのように停止したのかわかりません。しかしそれを再開するために私がしなければならなかったすべては「アプリケーション」に行きそしてdockerアイコンをダブルクリックすることだけだった。私は更新するように頼まれ、私は受け入れた再起動しました。その後、すべてが魅力的になりました。

0
ivange94

docker-network内のdockerまたは/etc/sysconfigのDocker設定ファイルを変更してみます。

(...〜v1.17)

dockerファイル:

OPTIONS= -H fd://

または(v1.18):

docker-networkファイル:

DOCKER_NETWORK_OPTIONS= -H unix:///var/run/docker.sock
0
user4761977

TLS証明書の再生成がうまくいかない場合

docker-machine regenerate-certs default

Docker machineを再起動してenv変数を設定してみてください。

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

マシンが稼働しているかどうかを確認します。

docker-machine ls

または代わりに 

docker run hello-world

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

0
nikheel

私は同様の問題を抱えていました。 

私の場合、解決策は非推奨バージョンのdockerを削除することでした。これは私がいくつかの衝突を引き起こしていたと思います。

Ubuntuの場合:

Sudo apt remove docker

私のために問題を解決しました

0
Erich

次のコマンドでデーモンを実行できます。

Sudo Nohup docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock &

スクリプトはデーモンをバックグラウンドで実行したままにします。Dockerの準備が整ったら、コマンドを受け付けていることをテストできます。

Sudo docker info

詳細はこちらをご覧ください。 https://www.upcloud.com/support/how-to-configure-docker-swarm/ /

0

誰もこれに答えていません

Sudo docker network create persistence_backend

両方のdockerとdocker-composeを実行している場合

0
PauAI

電源を入れ直してみましたか。 :-)

私のMacでDocker 1.10.1にアップグレードした後も同じ問題がありました。

Dockerクイックスタートターミナル

$ exit

$ exit

それから

docker-machine killのデフォルト

その後Docker Quickstart Terminalを再起動しました

これで私の問題は解決した。

0
JackNova

Mac OS-Xでは、これは単にdockerのインストールが古くなっているか、実行されていないことを意味します。公式サイトから最新のdockerをダウンロードしてインストールするだけです。

私のために働きました。

0
SmallChess

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
Tobias Ernst