こんにちは。よっしーです(^^)
今日は、Rancher Desktopについてご紹介します。
背景
Docker Desktopが有料化したので、オープンソースで利用できるRancher Desktopをインストールして使用してみましたので、その時の情報をご紹介したいと思います。
インストールする前に
Docker Desktopをインストールしていたので、アンインストールが必要かどうか調べたところ、公式サイトのQ&Aに共存できる旨の回答がありました。なので、自分の環境では、Dokcer Desktopをアンインストールせずに、Rancher Desktopをインストールしました。ただ、Docker Desktopと同時に起動することはできないようです。
(訳)
Q: Docker DesktopをRancher Desktopと同時にインストールできますか?
A: 可能ですが、Rancher DesktopとDocker Desktopは同じDockerソケット(/var/run/docker.sock)を使用するため、同時に実行することはできません。必ず一方を停止してから、もう一方を起動してください。
インストール
Rancher Desktopは下記の公式サイトからダウンロードできます。
ダウンロードしたら、下記のサイトを参考にインストールします。
基本的には、ダウンロードした実行ファイルを実行して、案内にしたがっていけばインストールできます。
動作確認
下記のファイル(compose.yml)を用意します。
version: '3.8'
services:
nginx:
image: nginx:latest
container_name: nginx
ports:
- "80:80"
下記のコマンドでnginxを起動します。
docker compose up -d
下記のコマンドでアクセス確認します。
curl http://localhost/
そうすると、下記のような出力になり、nginxの起動が確認できませんでした。
% curl http://localhost/
404 page not found
原因調査
docker compose ps では、動作してそうに見えます。
% docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
nginx nginx:latest "/docker-entrypoint.…" nginx 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp
80ポートを使用しているアプリを調べようと思い、下記のコマンドを実行しました。
% lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ssh 6215 xxx 41u IPv4 0x6026dae3dd18f199 0t0 TCP *:http (LISTEN)
上記で取得したPIDでプロセスをgrepしてみました。
% ps -axwwo user,pid,ppid,pgid,command | grep 6215
xxx 6215 1 6215 ssh: /Users/xxx/Library/Application Support/rancher-desktop/lima/0/ssh.sock [mux]
xxx 8796 3990 8795 grep 6215
どうやら、rancher-desktopがssh接続に使用しているようです。
ドキュメントを調べてみると、下記の文言をみつけました。
(訳)
Traefikを有効にする
このオプションでTraefikを有効または無効にできる。Traefikを無効にすることで、ポート80と443を代替イングレス設定用に解放することができます。デフォルトでは、Traefikは有効になっています。
Traefikを無効にしても、既存のリソースは削除されません。
どうもこの機能が80ポートを使用しているようなので、Traefikを無効にしました。
Traefikの設定は、RancherDesktopの設定からKubernetesをクリックしたところにあります。
Traefikを無効にして、nginxを再度起動して、curlコマンドでアクセスしてみました。
% curl http://localhost/
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
無事にnginxの応答が返ってきました。これでRancherDesktopのインストールと設定は良さそうです。
解説
lsof -i:80
lsof
は、”List Open Files”の略で、UnixおよびUnix系オペレーティングシステム(LinuxやmacOSなど)で使用されるコマンドラインユーティリティです。lsof -i:80
は、特定のポート(この場合はポート番号80)でリッスン(Listen)しているプロセスを表示するためのコマンドです。
具体的には、lsof -i:80
は以下のような情報を提供します:
- プロトコル(Protocol):ポート番号80でどのプロトコル(通常はTCPまたはUDP)が使用されているかを示します。
- プロセスID(PID):ポート80を使用しているプロセスの識別子です。
- プロセス名:ポート80を使用しているプロセスの名称です。一般的に、ウェブサーバー(例:Apache、Nginx)がポート80をリッスンして、HTTPリクエストを処理します。
- ユーザー:ポート80を使用しているプロセスの所有者(ユーザー名)を示します。
- ファイル記述子(File Descriptor):プロセスが使用しているファイル記述子(通常はファイルやソケット)の番号です。
このコマンドを実行すると、ポート80でリッスンしているプロセスの情報が表示されます。ウェブサーバーが正常に動作しているか、ポート80を占有している他のプロセスが存在しないかを確認する際に役立ちます。ただし、lsof
コマンドを実行するには管理者権限(root権限)が必要な場合があります。そのため、LinuxやmacOSで実行する際は、適切な権限を持つユーザーで実行してください。
ps -axwwo user,pid,ppid,pgid,command | grep 6215
このコマンドは、現在実行中のプロセスの情報を表示し、その中から特定のPID(プロセスID)が6215であるプロセスを検索するコマンドです。
ps -axwwo user,pid,ppid,pgid,command
は、以下の情報を表示します:
user
: プロセスの所有者(ユーザー名)pid
: プロセスIDppid
: 親プロセスのID(親プロセスID)pgid
: プロセスグループIDcommand
: 実行されているコマンド(プロセスの実行コマンド)
grep 6215
は、ps
コマンドの出力結果からプロセスIDが6215である行をフィルタリングして表示します。
つまり、このコマンドを実行すると、プロセスIDが6215のプロセスに関する情報が表示されるはずです。この情報には、プロセスの所有者、親プロセスID、プロセスグループID、および実行されているコマンドが含まれます。
Rancher Desktopについて
Rancher DesktopはDocker Desktopと同様に、コンテナアプリケーションの開発およびテストを支援するためのツールですが、いくつかの利点があります。
- オープンソースとコミュニティによるサポート:Rancher Desktopはオープンソースプロジェクトとしてコミュニティによるサポートがあります。Docker DesktopはDocker Inc.によって提供されていますが、サポートや機能開発の進捗に関して一部のユーザーから不満の声が挙がることがあります。
- Kubernetes対応:Rancher Desktopは、Docker Composeを使用するだけでなく、Kubernetesをローカル環境で簡単にセットアップできます。Kubernetesは、コンテナオーケストレーションの標準として広く採用されているため、Kubernetesの学習と開発が進んでいる場合には特に便利です。
- 環境の一貫性:Rancher Desktopは、開発者がローカル環境で動作するコンテナアプリケーションを簡単に共有できるように設計されています。他のチームメンバーや開発者が同じ環境でアプリケーションを実行し、問題を再現しやすくなります。
- 複数のKubernetesクラスタのサポート:Rancher Desktopでは、複数のKubernetesクラスタを管理することができます。開発中に複数のKubernetesクラスタをテストしたり、異なる環境でアプリケーションを実行する際に便利です。
- Rancher Integration:Rancher Desktopは、Rancherプロジェクトの一部であり、Rancherのエコシステムとシームレスに連携できます。Rancherは、プロダクション環境でのKubernetesクラスタの管理を支援するための人気のあるツールです。
ただし、移行する前に、自分のユースケースや環境に最適な選択肢かどうかをよく検討することが重要です。プロジェクトの要件やチームのニーズに合わせて適切なツールを選択することが成功の鍵となります。
おわりに
今日は、Rancher Desktopについてご紹介しました。
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント