Dockerをinstallする際にPackage docker-ce is not available, but is referred to by another packageと表示されてインストールできない。

dockerのアイキャッチ画像

・apt-get installでdockerをインストールできない。
・Package docker-ce is not available, but is referred to by another packageが発生。
・apt-get installを深掘りしたい。

apt-get installでdockerをインストールしようとした際に、下記のようなエラーが発生しました。

Package docker-ce is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source

この原因と対処法を紹介します。

原因 apt-getのコマンドが間違っており、サードパーティのリポジトリ情報に正しく記入されなかった。

apt-getはサードパーティのリポジトリからパッケージをインストールする際は「/etc/apt/sources.list.d/」のディレクトリ以下の~~.listファイルにリポジトリのURLが記載されている必要があります。

/etc/apt/sources.list.d/:サードパーティのリポジトリ情報

/etc/apt/sources.list:ubuntu公式のリポジトリ情報

今回の場合、Dockerダウンロードサイトをaptリポジトリに追加する下記コマンドでミスがあったため、

~~.listファイルに誤ったリポジトリのURLが記載されてしまったため、エラーが発生してしまったようですね。

そもそもリポジトリがなぜ必要?

aptを使ってgitやら色々なものをインストールしていると思いますが、なぜできるのかというと

ダウンロード先のURLが記載してあるため、aptはどこからインストールしてくればわかる訳です。

gitの場合はubuntuが用意した/etc/apt/sources.listに記載してあったのでインストールできましたが、

dockerはどうすれば良いでしょうか。

dockerはetc/apt/sources.listに記載していないため、/etc/apt/sources.list.d/直下に〇〇.listというファイルを置いて、dockerのリポジトリを教えてあげないといけない訳です。

※etc/apt/sources.listに記載していないのをサードパーティと呼ぶのですが、dockerはサードパーティです。

対処法 /etc/apt/sources.list.d/以下のリストファイルに正しいリポジトリ情報を記入する。

まず、EC2にssh接続して、サードパーティのリポジトリ情報が格納されている/etc/apt/sources.list.d/直下のdocker.listを見てみます。

内容を見てみると、arch=amb64の記載誤り(正しくはamd64)であることがわかりました。

vimで開いて、該当箇所を直接修正すれば解消しました。

dockerに限らずサードパーティのインストールで詰まったら

上記2つのファイルをぜひ確認してみてください。