Meaningless Notebook

我輩は雑記帖である。名はまだない。


Ubuntu 18.04.4 に Docker をセットアップする。

CentOS 8 は Docker じゃなくて Podman なるものを推していくようで公式リポジトリからは外れたようです。

…でもまぁ入れる方法はあるんで入れてみたんですが、何故かサ-ビス間で上手く通信が出来ない問題 (厳密に言うとアプリから DB にアクセス出来ない) にぶち当たりました。


Docker をセットアップする理由は当然 Docker Hub にあるコンテナイメ-ジを試したいわけです。

先駆者のブログでは、CentOS じゃなくて Ubuntu でやっていたので Ubuntu に Docker をセットアップする事にしました。


だが Ubuntu でも Docker が上手くいかないなんて、その時の私には想像もつかなかったのです…

手順は下記の通り。

  1. インスト-ル済み Docker のアンインスト-ル
  2. Docker インスト-ル
  3. Docker セットアップ
  4. Docker Compose インスト-ル

1. インスト-ル済み Docker のアンインスト-ル

Ubuntu 18.04.4 セットアップ時にソフトウェアの選択で、Docker を選択してセットアップする事が出来ますがバグ有 ver. です。

Docker コンテナを実行しようとするとホスト⇔コンテナ間のディレクトリ紐付け (厳密には違う ? ) で 下記のような Permision denied が多発しました。


Cannot start service [サ-ビス名]: error while creating mount source path ‘[ホストマウント先パス]’: mkdir [ホストマウント先の途中までのパス]: read-only file system


なのでまずはインスト-ル済み Docker をアンインスト-ルします。

アンインスト-ル

下記コマンドを実行して snap 版 も含めアンインスト-ルする。

sudo snap remove docker

sudo rm -R /var/lib/docker

sudo apt-get remove docker docker-engine docker.io containerd runc

2. Docker インスト-ル

1. apt パッケ-ジアップデ-ト

下記コマンドを実行して apt パッケージをアップデ-トする。

apt-get update

2. モジュール追加

下記コマンドを実行して apt で HTTPS を越えて使用できるようにする。

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

3. GPG Key 取得

下記コマンドを実行して Docker の公式 GPG Key を取得する。

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

4. stable リポジトリ追加

下記コマンドを実行して stable リポジトリを追加する。

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

5. apt パッケ-ジアップデ-ト

下記コマンドを実行して apt パッケ-ジをアップデ-トする。

apt-get update

6. Docker インスト-ル

下記コマンドを実行して Docker をインスト-ルする。

sudo apt-get install docker-ce docker-ce-cli containerd.io

補足. 別バ-ジョンをインスト-ルしたい場合

下記コマンドを実行してインスト-ル可能なバ-ジョンを確認する。

apt-cache madison docker-ce

下記コマンドを実行してバ-ジョンを指定してインスト-ルする。

sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

3. Docker セットアップ

プロキシ設定

下記コマンドを実行して http-proxy.conf ファイルを配置するディレクトリを作成する。

mkdir /etc/systemd/system/docker.service.d/

下記コマンドを実行して httpd-proxy.conf ファイルを作成する。

vim /etc/systemd/system/docker.service.d/http-proxy.conf

[Service]
Environment="HTTP_PROXY=http://プロキシサ-バの IPアドレス 又は ホスト名:プロキシサ-バのポ-ト番号/" "HTTPS_PROXY=http://プロキシサ-バの IPアドレス 又は ホスト名:プロキシサ-バのポ-ト番号/" "NO_PROXY=localhost,127.0.0.1"

下記コマンドを実行して Docker を再起動する。

systemctl damone_raload
systemctl restart docker

4. Docker Compose セットアップ

1. Docker Compose インスト-ル

下記コマンドを実行してDocker Compose を取得 及び 実行権限を付与する。

curl -L https://github.com/docker/compose/releases/download/最新バ-ジョン/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose -x http://プロキシサ-バの IPアドレス 又は ホスト名:プロキシサ-バのポ-ト番号
chmod a+x /usr/local/bin/docker-compose

2. バ-ジョン確認

下記コマンドを実行してバ-ジョン情報を確認する。

docker-compose --version

最後に

長く…苦しい…戦い…だった。

参考元

  1. Docker – mkdir read-only file system
  2. docker docs

Amazon