バグに対処するために、Ubuntu 14.10 で docker と docker-compose の開発ビルドを一緒に実行する方法を見つけようとしています。https://github.com/docker/compose/pull/1349
最新のDocker開発バージョン
docker -v
# Docker version 1.7.0-dev, build 6a7a757
# docker-compose -v
docker-compose version: 1.3.0rc3
CPython version: 2.7.8
OpenSSL version: OpenSSL 1.0.1f 6 Jan 2014
しかし、dockerはサーバーバージョンを好まない
# which docker
/usr/bin/docker
# sudo /usr/bin/docker -d &
WARN[0000] Your kernel does not support swap memory limit.
INFO[0000] Loading containers: start.
.......................................................................INFO[0000] No non-localhost DNS nameservers are left in resolv.conf. Using default external servers : [nameserver 8.8.8.8 nameserver 8.8.4.4]
INFO[0000] No non-localhost DNS nameservers are left in resolv.conf. Using default external servers : [nameserver 8.8.8.8 nameserver 8.8.4.4]
WARN[0000] Failed to allocate and map port 8080: Error starting userland proxy: listen tcp 0.0.0.0:8080: bind: address already in use
INFO[0000] Loading containers: done.
INFO[0000] Daemon has completed initialization
INFO[0000] Docker daemon commit=6a7a757 execdriver=native-0.2 graphdriver=aufs version=1.7.0-dev
# ps auxf | grep docker
root 24854 0.0 0.0 73360 3800 pts/14 S 09:59 0:00 | \_ sudo /usr/bin/docker -d
root 24866 0.0 0.1 439152 19556 pts/14 Sl 09:59 0:00 | | \_ /usr/bin/docker -d
root 24982 0.0 0.0 109264 14584 pts/14 Sl 09:59 0:00 | | \_ docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 32768 -container-ip 172.17.0.2 -container-port 29015
root 25102 0.0 0.1 109264 16552 pts/14 Sl 09:59 0:00 | | \_ docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 32769 -container-ip 172.17.0.2 -container-port 28015
root 25131 0.0 0.0 109264 14516 pts/14 Sl 09:59 0:00 | | \_ docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 32770 -container-ip 172.17.0.2 -container-port 8080
# docker ps
Error response from daemon: client and server don't have same version (client : 1.20, server: 1.15)
そして、現在の開発リリース候補docker-composeはサーバーバージョン1.18を想定しています。
# which docker-compose
/usr/local/bin/docker-compose
# docker-compose ps
client and server don't have same version (client : 1.18, server: 1.15)
デーモンを停止した後でも同じエラーメッセージが表示されます
# sudo killall docker
INFO[0288] Processing signal 'terminated'
# docker ps
Error response from daemon: client and server don't have same version (client : 1.20, server: 1.15)
docker クライアントを、docker-compose に必要なバージョン 1.18 にダウングレードできることはわかっていますが、同じバイナリ クライアントが 1.20 であるように見えるのに、サーバー バージョンが 1.15 として報告される理由がまだわかりません。
補足の質問: docker デーモンが停止しているのに、docker クライアントが依然として誤ったサーバー バージョン メッセージを受信するのはなぜですか?
答え1
Docker ( ) をアップグレードした後、docker サービスを再起動してみてくださいsudo service docker restart
。次の原因が考えられます:
古いバージョンの Docker がまだ実行されています。
私も非常によく似た問題を抱えており、Docker をアップグレードしましたが、サービスを再起動するまで同じエラー メッセージが表示され続けました。
答え2
この場合の問題は、環境変数が$DOCKER_HOST
異なるバージョンを使用している別のシステムを指していたため、プロセスが表示されずps
、API に互換性がなかったことです。
変数を削除するとunset DOCKER_HOST
問題は解決しました。