我が家では自宅サーバ(ubuntu 22.04 LTS)を立てて運用しています。
自宅サーバーを運用していると、日々のメンテナンスが欠かせません。また、長期間運用していると、
「なぜか正常に動かない」
とか、
「インストールからやり直したいけど一からやり直す気合は無いなぁ。」
など、運用上の悩みが出てきます。
こんな経験がある方やこれから自宅サーバを構築してみたい方は、Dockerを使ってシステム構築することをオススメします。
自分の場合は以前Raspberry piでDockerを構築・運用していたので、
手順は同じDebian系のubuntuでセットアップしていますが、centosでも手順は同じです。
本記事では 、Dockerとdocker-composeのインストール方法について紹介します。Dockerについての解説はここでは割愛します。
Contents
パッケージ管理ツール/パッケージ管理システム
Dockerをインストールする方法はいくつかありますが、本記事では最も簡単(であろう)パッケージ管理コマンドapt
を使ったインストールをご紹介します。Centosの場合はyum
ですのでコマンドは適宜読み替えて実施してみてください。
パッケージ管理ツールによるインストールはサーバ構築初心者の方には個人的に強くお勧めしています。なぜなら、自分のサーバ運用の経験上、最も陥り易い&煩わしい問題がパッケージの依存性管理とバージョン管理だからです。こうした問題は日々サーバのメンテナンスをしていたり、Linux知識に自信がある方なら起こりませんが、そうでない方は無難にパッケージ管理ツールを活用しましょう。私も使っています(むしろ、なるべく自分でパッケージをインストールしないようにしています)。
Dockerインストール
では、さっそくDockerをインストールしてみましょう。
実行コマンドは以下の通りです。
1 2 3 4 5 |
# リポジトリをアップデート sudo apt update # Dockerインストール sudo apt -y install docker.io |
rootユーザの場合は、sudoは不要です。
以下のコマンドを打って応答が返ってくれば、Dockerのインストールは完了です。
1 |
docker --version |
docker-composeインストール
docker-composeは、複数のDockerコンテナで構成されるサービスにおいて、各Dockerイメージのビルドや各コンテナの起動・停止などをシステム単位で一括して行うことができるツールです。
docker-compose をインストールしなくてもDockerでコンテナを作成することはできますが、コンテナを連携させたサービス(例えば、DBとAPをそれぞれコンテナ化し、2つのコンテナを連携してサービスを提供するシステム) を構築する場合はインストールしておきましょう。これだけで構築の再現性が確保され、サーバの運用構築の効率性が格段にアップします。
docker-composeのインストールコマンドは以下の通りです。
1 |
sudo apt -y install docker-compose |
こちらも、同様にrootユーザの場合は、sudoは不要です。
以下のコマンドを打って応答が返ってくれば、docker-composeのインストールは完了です。
1 |
docker-compose -v |
dockerユーザの作成
Dockerのプロセスは、dockerグループまたはroot権限を持ったユーザ のみ制御することができます。つまりsudoコマンドでroot権限でのコマンド実行をすればDockerを制御できることになります。
しかし、Dockerを制御する度にsudoコマンドを打つのは煩わしく、サーバ運用の負担が大きいです。また、複数人の管理者によってDockerを制御するような環境なら、 必要なユーザをdockerグループに追加することをオススメします。
私は、自宅サーバのconsoleは自分しか触らないので、普段使っているユーザをdockerグループに追加することで、楽にDockerを制御できるようにできました。しかし、dockerグループの権限が必要な作業をしてしまった際に認識できるよう、あえてユーザを分けて運用しています。dockerグループ の権限で作業をしたのかが曖昧になって困ることはあんまりないですがセキュリティの面でも権限を分散させて運用しています。
また、普段からroot権限で作業しているとdockerグループ権限を無意識に行使してしまう可能性があります。そういったミスをなくすためにも、root権限を持っていないユーザでDockerを制御したほうが良いでしょう。これも、サーバ運用スキルによるのでユーザ作成は必須ではありません。
本記事では、Dockerを制御できるユーザ(docker)を作成して運用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# dockerユーザ作成 sudo useradd -mg docker docker # dockerをdockerグループに追加 sudo usermod -aG docker docker # docker.sockの権限をdockerグループに与える sudo chgrp docker /var/run/docker.sock # dockerユーザのパスワード設定 sudo passwd docker # Dockerを起動 sudo systemctl start docker # サーバ起動時にDockerを自動起動 sudo systemctl enable docker |
ログインシェルの変更
これはお好みです。やらなくてもOK。
新規ユーザ作成時のデフォルトシェルが適用されています。
私はbashが使いやすいので、ログインシェルをbash
に変更します。
1 |
su - docker chsh -s /bin/bash exit |
これでDockerのインストール作業はおしまいです。
Dockerを使う際はdockerユーザで作業します。
ついでにgitもインストール
Dockerではありませんが、docker imageを作成する際に必要なgitもついでにインストールします。Docker hubではなく、Githubにアップロードされているコンテンツをダウンロードする際に便利です。
1 2 |
#gitをインストール apt install -y git |
Dockerのサンプルをいくつか紹介していますので、ぜひ参考にしてみてください。
おまけ
私と同じ環境で構築される場合、構築で躓いた際にサポートできると思います。メモリ8GB以上を選択すればエンコード等しても性能的に問題はないと思います。Windows10マシンですが、私はUbuntuを上書きインストールして自宅サーバを構築しています。
コメント
su – docker chsh -s /bin/bash exit
ここ、
/usr/bin/chsh: /usr/bin/chsh: cannot execute binary file
って出ますね。