DevOps-DockerはてなブックマークTwitterスポンサーリンクはじめにDockerを始めとしたコンテナ型仮想化を技術として捉えた際に出てくる用語に「Namespace」と「CGROUP」があります。Dockerとは?本記事ではNamespaceとはなんぞや?といった層を対象に、分かりやすく説明してみました。このあたりを抑えてなくてもDockerを利用することは可能ですが、バックグラウンドの知識として知っておくと役立つこともあると思います。Namespaceとは?日本語ではそのまま「名前空間」と訳されますが、こちらは特にDockerやUNIX系OS独特の用語ではなくて広く使われる概念です。名前空間とは、要素名が重複しても識別できるように名前の集合へ与えられる識別名を指します。要は、Dockerのようなコンテナ技術においては一つのカーネルの上で隔離環境を用意する必要があるのでプロセスIDはもちろんのこと、ファイルシステムやユーザID諸々の名前空間を分離することが求められるわけです。よってDockerの文脈で「Namespace」と言えば「プロセス毎に名前空間を分離する機能」を指します。Namespaceで分離するものにmountutsipcuserpidnetなどがありますが、今回は「プロセス毎にホスト名を分離する」utsを参考に詳しく解説していきます。*1unshareコマンドで名前空間を変更するNamespaceの機能を実現するためにunshareコマンドを利用します。unshare/usr/bin/unshareマニュアルの抜粋は以下です。clone(2).要は他のプロセスに影響なくホスト名の変更が可能です。名前空間を分離する前の情報を確認します。hostnameinstance-1名前空間を確認する「lsns」を使うと以下のようにutsは一つしかありません。--utsプロセスIDが変更されています。ホスト名は引き継いでいます。-bash先ほど確認したプロセスIDを持つ新たな名前空間が作成されていることが分かります。試しにホスト名を変更すると変更されます。hostnameinstance-1元のホスト名は変更されていません。Namespaceによる名前空間の分離が成功しています。終わりに今回はホスト名に絞って説明をしましたが、同じ理屈でファイルシステムやユーザー名も分離することができます。この分離によって、Dockerではあたかも全く別の環境のように環境を編集することができます。本記事にてDockerの肝の一つである「Namespace」のイメージが掴んでいただければ幸いです。Page引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。