事情によりクローズドな環境などで古いバージョンのDockerを運用で使い続けている中で、その調査・検証用に同じバージョンのシステムを構築したくなった、とか。
基本的には、古いパッケージファイルを探してきて手動(rpm
やdpkg
)でインストールすれば良い。
Dockerのパッケージファイル
Dockerのサイトにアーカイブがある。
OS・ディストリビューション毎のパッケージファイルがダウンロードサイトにある。
各ディストリビューションのバージョン毎に、その時期のDockerバージョンがアーカイブされている。
時間差があるような(新しいFedoraに古いDockerを入れる、みたいな)場合は、プラットフォームバージョン側のバージョンを落として探してみると良い。
以下はディレクトリ例。他のバージョンはディレクトリを上下して探す。
例えばFedora 40にDocker 20.10.17をインストールする場合であれば、必要なパッケージは以下 (Fedora 40向けにDocker 20.xは無いので36用のパッケージを使う)
- docker-ce-20.10.17-3.fc36.x86_64.rpm
- docker-ce-cli-20.10.17-3.fc36.x86_64.rpm
- docker-ce-rootless-extras-20.10.17-3.fc36.x86_64.rpm
- containerd.io-1.6.4-3.1.fc36.x86_64.rpm
Ubuntu 24.04にDocker 20.10.24をインストールするには以下のパッケージ (Ubuntu 24.04向けにDocker 20.xは無いのでry)
- docker-ce-cli_20.10.24~3-0~ubuntu-focal_amd64.deb
- docker-ce-rootless-extras_20.10.24~3-0~ubuntu-focal_amd64.deb
- docker-ce_20.10.24~3-0~ubuntu-focal_amd64.deb
- containerd.io_1.6.21-1_amd64.deb
※ バージョン番号がそろってないcontainerd.ioは適当。再現したい環境のバージョンやダウンロードサイトのタイムスタンプなどから判断する。
足りないパッケージがある場合は以下のようにエラーが出力されるので、それに従ってdnf
やapt
で追加すればよい。
[zaki@fedora40-dev docker-20]$ ls containerd.io-1.6.4-3.1.fc36.x86_64.rpm docker-ce-cli-20.10.17-3.fc36.x86_64.rpm docker-ce-20.10.17-3.fc36.x86_64.rpm docker-ce-rootless-extras-20.10.17-3.fc36.x86_64.rpm [zaki@fedora40-dev docker-20]$ sudo rpm -ivh * warning: containerd.io-1.6.4-3.1.fc36.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY error: Failed dependencies: libcgroup is needed by docker-ce-3:20.10.17-3.fc36.x86_64 slirp4netns >= 0.4 is needed by docker-ce-rootless-extras-0:20.10.17-3.fc36.x86_64
Docker Composeのインストール
現在はdocker
のプラグイン(サブコマンド)として使えるDocker Composeは以前は専用コマンドだったので別途入れる必要があった。
GitHubに過去バージョン含めて残っているので、そこから取得すればOK
例えば1.29.2であれば以下から直接バイナリをダウンロードし、/usr/local/bin/docker-compose
あたりに配置し実行権限を付与する。
https://github.com/docker/compose/releases/tag/1.29.2
sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose sudo chmod 755 /usr/local/bin/docker-compose
Fedoraで発生したけど、libcryptのエラーが出る場合
$ docker-compose version [21740] Error loading Python lib '/tmp/_MEIy05DAM/libpython3.7m.so.1.0': dlopen: libcrypt.so.1: cannot open shared object file: No such file or directory
Fedoraであれば
$ sudo dnf search libxcrypt
これで動く
[zaki@fedora40-dev docker-20]$ docker-compose version docker-compose version 1.29.2, build 5becea4c docker-py version: 5.0.0 CPython version: 3.7.10 OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
毎回言ってはいるんだけどね。「運用にバージョンアップを組み込め」と。。