CentOS6のyumが死んでた件について
事の発端
ちょっとした案件で現役バリバリで動いているCentOS6向けにPGを組む必要が出てきたので
Docker上のCentOS6に上げて軽く動作確認するか〜って軽く考えてたらハマりました
手癖でコンテナ起動したらyum updateしてしまう癖が出たのですがエラーになって
あれー?
ってなりました
$ docker run -it --rm centos:6.6 bash
Unable to find image 'centos:6.6' locally
6.6: Pulling from library/centos
5dd797628260: Pull complete
Digest: sha256:32b80b90ba17ed16e9fa3430a49f53ff6de0d4c76ad8631717a1373d5921fa26
Status: Downloaded newer image for centos:6.6
[root@e0bfe0131583 /]# yum update
Loaded plugins: fastestmirror
Setting up Update Process
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/repo/arch combination/
removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt
Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again
原因調査
ググったらみんなハマってますね
CentOS6系はEOL迎えたんだから使うな
だってさ
うちみたいな貧乏レガシー現場ではバリバリ現役なのに使うなとか言われてもな。。。
5のシステムも見たことあるぞ。。。
対処方法
みんな同じ事書いてますね
sedで死んでるリポジトリのURLを違うリポジトリに書き換えればいいよ
とのこと
$ sed -i -e "s/^mirrorlist=http:\/\/mirrorlist.centos.org/#mirrorlist=http:\/\/mirrorlist.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo
$ sed -i -e "s/^#baseurl=http:\/\/mirror.centos.org/baseurl=http:\/\/vault.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo
うん、これで行けた
なんとなく気になったので置換先のvault.centos.orgも調べてみました
$ openssl s_client -connect vault.centos.org:443 -showcerts 2>/dev/null | grep issuer
issuer=C = US, O = Let's Encrypt, CN = R3
$ nslookup vault.centos.org
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: vault.centos.org
Address: 54.186.51.210
$ whois 54.186.51.210 | grep OrgName
OrgName: Amazon Technologies Inc.
OrgName: Amazon.com, Inc.
AWSで動いててLet's Encryptの証明書使ってる感じかな?
これだけじゃちょっと不安なのでサイト見てみよう
あーなんか大丈夫そうだね
というわけで無事yumは動いたので今後このコンテナ使う時毎回この作業しなくていいようにDockerイメージを今の状態で上書きしてしまいます。
Dockerイメージの更新
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e0bfe0131583 centos:6.6 "bash" 23 minutes ago Up 23 minutes hungry_bose
$ docker images centos
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 6.6 368c96d786ae 2 years ago 203MB
$ docker commit hungry_bose centos:6.6
sha256:902bb745164cd9e063e74eba7ece540ee5bd2c8460ef4c4dd509bcdfc9492df2
$ docker images centos:6.6
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 6.6 902bb745164c 37 minutes ago 490MB
これでcentos:6.6のイメージはリポジトリが変更された状態で以降使えるようになりました
$ docker run -ti --rm centos:6.6 bash
[root@4cc537e71a2a /]# yum update -y
Loaded plugins: fastestmirror
Setting up Update Process
Determining fastest mirrors
base | 3.7 kB 00:00
base/primary_db | 4.7 MB 00:03
extras | 3.4 kB 00:00
extras/primary_db | 29 kB 00:00
updates | 3.4 kB 00:00
updates/primary_db | 12 MB 00:07
No Packages marked for Update
リポジトリのメンテナンス自体もうされないみたいなのでupdateしても何も取得されることはないでしょうが個人的にコンテナは毎回--rmで使い捨てしてるのでローカルイメージは更新しといたほうが利便性高いです。
以上、自分たちがEOLを迎えそうなレガシー現場からお送りしました
P.S.
そのうちDockerHubからもイメージ消されそうで怖い
てかなんで未だに6現役なんだよ。。。
昔作り逃げされたPerlのメンテナンスやらされたときに
すでにCPAN上からは削除されてるライブラリを使いまくられてた時の二の舞になりそう
イメージエクスポートしといてどっかに残しとくか
それともいっそのこと自分のDockerHubの垢にこの状態のイメージを上げといたほうがいいんだろうか
でも無料垢だと定期的に使ってないイメージは消されるみたいだしなぁ。。。
Discussion