docker

こんにちは、命と書いてmikotoです。

今回のエントリーでは、Docker初心者やこれからまさにDockerを使おうと思っている方向けに、最初によく遭遇するエラー内容とその解決策についてまとめてみようと思います。
Dockerの公式サイトはこちらからどうぞ。メインロゴのクジラがかわいいですね。
Docker - Build, Ship, and Run Any App, Anywhere

ケース1:dockerコマンドが動かない

エラー

An error occurred trying to connect: Post https:///var/run/docker.sock/v1.17/containers/create: dial unix /var/run/docker.sock: no such file or directory

boot2dockerコマンドは通ったが、dockerコマンドを実行した際に上記エラーが(特に始めて使う場合に)発生することがあります。
上記エラーは、接続先のDockerホスト情報が設定できていない場合に発生します。

解決策

MacでDockerを利用するときの初期設定の「環境変数の設定」を参照し、環境変数によってDockerの環境情報を設定することで解決します。

ケース2:【Mac】Web/SSHサーバーを起動したけど、ホストOSから繋がらない

エラー

  • DockerfileEXPOSEを書いた
  • docker run-pオプション付きで実行した

WebサーバーやSSHサーバーなどをDockerコンテナ内で立ち上げ、ホストOS(この場合はMac)から、上記によってポートフォワーディングを行い、アクセスしようとした際に、うまく接続できない場合があります。

原因

boot2dockerを利用している場合、ポートフォワーディングは下記の設定ではうまくいかないです。

【Dockerコンテナ】→【ホストOS】

MacではLXC(Linux Container)が利用できないため、代替手段としてVirtual Box上に仮想環境を立てています。

そのため、ポートフォワーディングは以下のように設定しなければいけません。

【Dockerコンテナ】→【Virtual Box】→【ホストOS】

解決策

こちらもMacでDockerを利用するときの初期設定の「ポートフォワーディング設定」を参照し、Vitrual Boxのポートフォワーディング設定を変更する必要があります。

ケース3:さっき起動したコンテナが起動しない

エラー

  • さっき起動したコンテナが急に起動しなくなった
  • ポートフォワーディングをしている
    • DockerfileEXPOSEを書いた
    • docker run-pオプション付きで実行した

上記のケースの際に、下記のようなエラーが発生することがあります。

FATA[0000] Error response from daemon: Cannot start container XXX...X: Bind for 0.0.0.0:5022 failed: port is already allocated

原因

ポートフォワーディングする設定のコンテナが、まだ起動している時に、同じポートを利用するコンテナを新たに起動すると、ポートが既に埋まっているため起動することができません。

解決策

既に起動しているコンテナを停止するか、起動しようとしているコンテナがフォワーディングしようとしているポートを変更することで解決することができます。

起動済みのコンテナを停止する操作はDockerを利用していると往々にしてあることなので、エイリアスを作って設定しておくと良いです。エイリアスの設定方法はまた別途書きたいと思います。

ケース4:スペースがない

エラー

イメージを沢山作っているとその内遭遇するエラーです。エラー内容は下記。

write error: No space left on device

原因

イメージを作ったまま放置していたため、dockerの利用可能容量がいっぱいになってしまっていることが原因です。

boot2dockerの初期設定で利用していると、割とすぐにぶつかる問題なので、利用可能なスペースを拡張しておくと良いです。

解決策

  1. イメージを削除
    • とりあえずはdocker imagesで表示されたイメージの内、不要なものを全て削除すれば、動作するようになるはず
    • docker rmi [CONTAINER_ID]コマンドで、指定のイメージを削除することができます
  2. スペース拡張(Mac)
    • 上記にも書きましたが、boot2dockerのデフォルトスペースはかなり小さいので、まだの場合は拡張したほうが良いです。
    • MacでDockerを利用するときの初期設定の「ホストサイズの設定 (オプション)」を参考に、スペースを拡張してください。

最後に

以上、Dockerを使い始めるとよく起こるエラーをまとめてみました。参考になれば幸いです。