Contents
Overview
どちらも Linux ディストリビューションではありますが、それぞれの一定のポリシーがあります。このポリシーはディストリビューションとして含めるソフトウェアやその設定値、ディレクトリ構成などの違いに現れます。ですが、一定のエンジニアであれば CentOS を扱えて Ubuntu が扱えないということはなく、もちろんその逆も然りです。いずれにしても Linux という基本は変わらないからです。使いながら慣れていきましょう。
CentOS が難しく Ubuntu が簡単?
たまに CentOS が難しく Ubuntu は簡単という人を見かけますが、それは非常に単純化され、一面しか見ていない理解の仕方だと思います。本当にそう思っている人はおそらく非エンジニアであり、そのように公言しているとかなりアホに見られるので改めましょう。
パッケージ
パッケージフォーマット
CentOS のパッケージフォーマットは rpm (RPM Package Manager)、Ubuntu は deb (Debian Package) を使用しています。
パッケージ管理ツール
CentOS のパッケージ管理ツールは CentOS 8 以降では DNF (Dandified Yum) が使用されています。一方、Ubuntu のパッケージ管理ツールは APT (Advanced Package Tool) ですが、APT のフロントエンドとして apt-get と apt があります。apt コマンドは apt-get よりも使いやすく、より新しい形式です。そのため、特定の要件がない場合は apt コマンドを使用することが推奨されます。
ネットワーク
ネットワーク管理ツール
CentOS ではネットワーク管理ツールとして NetworkManager が使用されます。一方、Ubuntu ではNetplan がデフォルトで採用されていますが、Desktop 版のデフォルトでは NetworkManager が使用されます。個人的にはファイルで管理できる Netplan が Ansible との相性が良いので使いやすいです。Ubuntu Server でも、デフォルトでは Netplan が使用されますが、必要に応じて NetworkManager を明示的にインストールして使用することができます。
ファイアウォール管理ツール
CentOS のファイアウォール管理ツールは firewalld であり、Ubuntu ではデフォルトで ufw が使用されますが、必要に応じて firewalld をインストールして利用することもできます。どちらのツールも、実際のファイアウォール処理は iptables (nftables) によって行われます。
Linux のファイアウォールは強力ですが、一般のエンジニアにとってはファイアウォールの設定や管理は難しい場合があります。そのため、firewalld や ufw のような抽象化されたフロントエンドツールが登場したのだと思います。
個人的には、iptables を直接使用してファイアウォールの設定を行うことをお勧めします。直接 iptables を使用することで、パケットの流れをより詳細に理解しやすくなります。
強制アクセス制御 (MAC)
CentOS では強制アクセス制御として SELinux が使用されますが、Ubuntu では AppArmor が採用されています。AppArmor は「アップアーマー」と発音されます。一般的には SELinux がより強力であるとされていますが、AppArmor も一定の効果が期待できます。Ubuntu で SELinux を有効にするには、明示的にインストールする必要があります。
sudo
Ubuntu と言えば sudo のイメージがありますが、CentOS でも明示的にインストールすることで sudo で管理することが可能です。Ubuntu 関連のドキュメントは一般的に sudo を前提としていますが、CentOS でも環境によっては同様の管理方法が採用されています。もちろん、root にパスワードを設定しないことはセキュリティ上望ましいですが、必要に応じて root にパスワードを設定して root アカウントで管理することも可能です。
仮想マシン実行環境
CentOS の仮想マシン実行環境(ハイパーバイザー)は、QEMU プロジェクトの一部として提供されている KVM が標準です。Ubuntu でも同様に KVM を利用することができますが、デフォルトの構成や設定方法は異なる場合があります。
コンテナ環境
コンテナ実行環境(開発環境)
コンテナ実行環境(開発環境)では、CentOS 8 以降では Podman が標準ですが、Ubuntu では標準的に Docker が利用されています。Podman は Docker と同様の機能を提供しつつも、ルートレスで動作するなどの特徴があります。CentOS 8 では以前は Docker を公式のリポジトリを追加することで利用可能でしたが、nftables 関連の問題により Docker が利用できなくなりました。代替手段として Podman が推奨されています。
コンテナオーケストレーション環境
コンテナオーケストレーション環境では、Ubuntu では Snap を利用して標準的に MicroK8s を使用することが可能です。MicroK8s はシングルノードの Kubernetes クラスターを提供するため、開発やテストに適しています。Kubernetes は CentOS, Ubuntuともに、Kubernetes 公式のリポジトリからインストールされるため、どちらも大差ありませんが、Kubernetes の利用では Ubuntu がよく採用されていると思います。