0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Docker】強虫べロス 〜不死身のプロセスをkillせよ〜【環境構築】

Posted at

既にあるDockerの開発環境を起動させようとしたら、
ポート周りのエラーがが出て、なぜか起動できず困った。

よく調べたら、Dockerのweb側で使用している「88番ポート」と
自分のMacのとあるプロセスが使用している「88番ポート」が衝突していたようだ。

最初の状態)起動に失敗

$ docker-compose up -d
Creating network "sample_default" with the default driver
Creating sample-db ... done
Creating sample-web ... error
ERROR: for sample-web  Cannot start service sample-web: Ports are not available: listen tcp 0.0.0.0:88: bind: address already in use

 available: listen tcp 0.0.0.0:88: bind: address already in use

既に「88番ポート」が使われているので、
Dockerを起動できない、とのエラーが。

そこで、自分のMac側の88番ポートを使用している犯人を調査。

$ sudo lsof -i -P | grep "LISTEN"
kdc        151           root    5u  IPv6 0xxxxxxxxxxxxxxxxx      0t0    TCP *:88 (LISTEN)
kdc        151           root    7u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP *:88 (LISTEN)

どうやら、「kdc」というプロセスが88番ポートを埋めてしまっているようだ。
となると、Dockerのためにも、このプロセスの息の根を止める必要がある。

本来であれば、Docker側のポートを変えたいところだが、
既に開発が進んでいる案件ということもあり、
なかなかDocker側のポート番号は変えられない、という事情もあった。

となれば、選択肢はただ1つ。Mac側のこいつ「kdc」をkillするしかない。

kill しても良いプロセスなのか?

そこで、1つ疑問が生まれる。
「kdc」とはなんなのか?
killしても良いプロセスなのか、という点だ。

そこで、「kdc」について調査してみた。Macの公式サイトによると、88番ポートを使用している「kdc」とは「ケルベロス」という認証用のプロセスのようだ。

参考:Macで使用されているデフォルトポート番号

ケルベロスを kill したい

Macのデフォルトのポートとなると、しかも、認証用に使われるポートとなると、
正直 kill するのはどうか、と気が引けてきた。

しかも、Dockerの為だけに、このプロセスをkillしたことで、
Mac 本体の認証に影響があっては、正直こわすぎる。


(kill するのか、しないのか!!!!)
(しないと、開発を前に進められない!!!)
(でも、kill してしまえば 今度は Mac の方が が 殺られる可能性も!!)


まあ、自分の Mac のためにも今回は、
kill しないのが正だろうな。
よし、

kill しよう!!!!!

開発のために!!みんなのために!!

私は、決めた。
今回は 自分の Mac に犠牲になってもらう道を選んだ。


(ケルベロスを killl する!!)

(コマンドはなんだっけ...)
(sudo ... kill ...)


$ sudo kill -9 151
$ sudo lsof -i -P | grep "LISTEN"
postgres   122       postgres    7u  IPv6 0xxxxxxxxxxxxxxxxx      0t0    TCP *:5433 (LISTEN)
postgres   122       postgres    8u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP *:5433 (LISTEN)
Google     787           user  132u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:49567 (LISTEN)
Adobe\x20  846           user   16u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:15292 (LISTEN)
Adobe\x20  846           user   26u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:15393 (LISTEN)
Adobe\x20  846           user   28u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:16494 (LISTEN)

(ん…消え…た…?)


画面の下の方に行くと…

postgres   122       postgres    7u  IPv6 0xxxxxxxxxxxxxxxxx      0t0    TCP *:5433 (LISTEN)
postgres   122       postgres    8u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP *:5433 (LISTEN)
Google     787           user  132u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:49567 (LISTEN)
Adobe\x20  846           user   16u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:15292 (LISTEN)
Adobe\x20  846           user   26u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:15393 (LISTEN)
Adobe\x20  846           user   28u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:16494 (LISTEN)
・
・
・
kdc       3218           root    5u  IPv6 0xxxxxxxxxxxxxxxxx      0t0    TCP *:88 (LISTEN)
kdc       3218           root    7u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP *:88 (LISTEN)

(あれ? kdc 生きてる…)

(kill する番号間違えたかな…?)


再度!!!!

$ sudo kill -9 3218
$ sudo lsof -i -P | grep "LISTEN"
postgres   122       postgres    7u  IPv6 0xxxxxxxxxxxxxxxxx      0t0    TCP *:5433 (LISTEN)
postgres   122       postgres    8u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP *:5433 (LISTEN)
Google     787           user  132u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:49567 (LISTEN)
Adobe\x20  846           user   16u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:15292 (LISTEN)
Adobe\x20  846           user   26u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:15393 (LISTEN)
Adobe\x20  846           user   28u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:16494 (LISTEN)

(消えたかな…?)


画面の下の方に行くと…

postgres   122       postgres    7u  IPv6 0xxxxxxxxxxxxxxxxx      0t0    TCP *:5433 (LISTEN)
postgres   122       postgres    8u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP *:5433 (LISTEN)
Google     787           user  132u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:49567 (LISTEN)
Adobe\x20  846           user   16u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:15292 (LISTEN)
Adobe\x20  846           user   26u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:15393 (LISTEN)
Adobe\x20  846           user   28u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:16494 (LISTEN)
・
・
・
kdc       3346           root    5u  IPv6 0xxxxxxxxxxxxxxxxx      0t0    TCP *:88 (LISTEN)
kdc       3346           root    7u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP *:88 (LISTEN)

(ん????まだ、生きてる?)


再度!!!!

$ sudo kill -9 3346
$ sudo lsof -i -P | grep "LISTEN"
postgres   122       postgres    7u  IPv6 0xxxxxxxxxxxxxxxxx      0t0    TCP *:5433 (LISTEN)
postgres   122       postgres    8u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP *:5433 (LISTEN)
Google     787           user  132u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:49567 (LISTEN)
Adobe\x20  846           user   16u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:15292 (LISTEN)
Adobe\x20  846           user   26u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:15393 (LISTEN)
Adobe\x20  846           user   28u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:16494 (LISTEN)

(これで消えたよね)


画面の下の方に行くと…

postgres   122       postgres    7u  IPv6 0xxxxxxxxxxxxxxxxx      0t0    TCP *:5433 (LISTEN)
postgres   122       postgres    8u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP *:5433 (LISTEN)
Google     787           user  132u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:49567 (LISTEN)
Adobe\x20  846           user   16u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:15292 (LISTEN)
Adobe\x20  846           user   26u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:15393 (LISTEN)
Adobe\x20  846           user   28u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP localhost:16494 (LISTEN)
・
・
・
kdc       3467           root    5u  IPv6 0xxxxxxxxxxxxxxxxx      0t0    TCP *:88 (LISTEN)
kdc       3467           root    7u  IPv4 0xxxxxxxxxxxxxxxxx      0t0    TCP *:88 (LISTEN)

(おい!!!生きてんじゃねぇよ!!)


ケルベロス「オレ…
生きてる!!」

結論)ケルベロスは死なない

私は、何度も何度も ケルベロスを kill しようと試みました。

確実に kill は実行していたのですが、ケルベロスは、また別プロセスとして復活してしまうのです。

「88」番ポートを使用しているケルベロスを kill しても kill しても立ち上がってしまう…。なんだこいつ強すぎだろ。これでは、ケルベロスと私のイタチごっこになってしまう。


こんな不毛な闘いに、

この忙しい私が付き合ってる暇はない!!!!

※ 私:クリスマスの予定0


結論として私は

自分のローカル環境だけDockerのポート番号を別のものに変更して起動

することにしました。

ポート番号を変更で解決!

以下の箇所「88」を「8888」にして再度「docker-compose up -d」すると…

docker-compose.yml
ports:
  - "88:3000"

# こう↓
ports:
  - "8888:3000"

立ち上げられました。

$ docker-compose up -d
sample-db is up-to-date
Recreating sample-web ... done

ケルベロス「おま、
散々時間とって、結論これだけかよ」

って話なのです Yo... :woman_tone1:

ケルベロス「なんて尻すぼみの記事なんだ Yo...」


参考

【Docker】ポートエラーが出て自分だけコンテナを起動できない…涙
弱虫ペダル:2022年10月からNHK総合にて放送予定!!

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?