とある日、Docker上で走らせていたナレッジベースシステムが落ちていた。
「どうせだれか間違ってdockerのプロセスkillしたんだろwww」とか思ってdocker ps
してみたところ以下のエラーが。
$ docker ps
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
どうやっても治らなかったので再インストールします。
再インストール手順
下準備
公式ドキュメントにアンインストールの方法も書いてあったのでこちらを参考にします。
[https://docs.docker.com/engine/installation/linux/ubuntu:embed:cite]
どうやらdocker
とかdocker-engine
とか呼んでた時代はとうの昔のようで、古いパッケージを捨ててアップデートしてくれと書いてありました。(もしかしてコレが原因…?)
$ sudo apt-get remove docker docker-engine
ちなみに、dockerやdocker-engineを削除しても、作成したコンテナやイメージは消えないのでご心配なく。
(各ファイルは/var/lib/docker/
に入ってるので、もし仮に全データを吹き飛ばしたいのであればこちらのディレクトリをrm
してください。)
特段の理由がない限りは
linux-image-extra-*
ってパッケージ入れてね。これないとdockerがaufs
っていうストレージドライバを使えないからさ。
って公式が言ってるので入れます。
$ sudo apt-get update
$ sudo apt-get install \
linux-image-extra-$(uname -r) \
linux-image-extra-virtual
さて、サクサク再インストールしていきましょう。
まずはapt
コマンドがHTTPS経由でやり取りできるようにするパッケージを入れます。
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
次に、dockerの公式GPGキーを登録します。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
念のため、キーのfingerprintが以下のものであるか確認してください。(公式サイトで確認することをおすすめします。)
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
$ sudo apt-key fingerprint 0EBFCD88
次に、dockerのリポジトリをapt
に追加します。
基本はamd64
だと思いますが、Raspbian等を使っている方はarmhf
の方を実行してください。
amd64:
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
armhf:
$ sudo add-apt-repository \
"deb [arch=armhf] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
dockerのインストール
さて、ここからは安定版のdockerをインストールしていきます。
まず、パッケージのindexを更新しましょう。
$ sudo apt-get update
次に、dockerをインストールします。今回は、Community Editionをインストールするので、実際はdocker-ce
というパッケージをインストールすることになります。
$ sudo apt-get install docker-ce
インストールが完了したら、以下のコマンドを実行してhello-world
イメージが正常に起動するか確認してください。
$ sudo docker run hello-world
これにて完了です。
dockerの更新手順
sudo apt-get update
を実行後、上記インストール手順を頭から繰り返せばいいらしいです。
詳しくは公式ドキュメントをご参照ください
[https://docs.docker.com/engine/installation/linux/ubuntu/#install-docker:embed:cite]