🐏
Xserver VPSにDockerを導入する
目的
簡単なWebアプリを公開したくて、XserverのVPSを取得した。
ローカル環境でDockerを使って開発しているため、公開するVPSにもDockerを導入してコンテナ技術の恩恵を受けたい。
ということで、Docker導入のために行ったことを(自分用に)残しておく。
セットアップ環境
- ローカル環境
- Windows 10 Home
- WSL2 Ubuntu 22.04
- Xserver VPS
- Ubuntu 22.04
- SSH Key設定済(自動生成)
Xserver申込内容
VPSにssh接続する
【前提】クライアント側での作業
-
公開鍵を取得する
VPS申し込み時点で.pemをダウンロードできる(一度きり)
公開鍵の取得
-
Windows環境からUbuntu環境へ公開鍵を配置する
Windowsエクスプローラから\wsl$\Ubuntu
でUbuntuディレクトリにアクセス可能
公開鍵の配置先は、~/.ssh/
配下が一般的
公開鍵の配置
補足.~:Zone.Identifierファイル
Windowsからファイルを配置すると、謎のファイルが併せて作成される。
Zone.Identifier...?
これはWindowsのファイルシステム「NTFS」にある 代替データストリーム という機能で自動的に作成されている。
Ubuntuのファイルシステム「EXT4」ではフォローしていない機能のため、Ubuntu環境にコピーすると代替データストリームもモロ見えになる。
ファイルシステムに依存するメタデータであるため、Ubuntu環境で利用する限りは削除して問題ない。 -
configファイルを作成する
頻繁に実行するssh
コマンドを楽にするために、ssh接続用のconfigファイルを作成する
ファイル名はconfig
として~/.ssh/
配下に配置するのが一般的cat << EOS >> ~/.ssh/config Host xvps-root # 任意の文字列 HostName ***.***.***.*** # VPSのIPv4アドレス User root IdentityFile ~/.ssh/exsample-ssh-key.pem EOS
-
VPSにssh接続する
以降は以下のコマンドのみで接続可能。ssh xvps-root # configファイルのHost名
ssh接続できた
Docker Engine、Docker Composeのインストール
【前提】VPS側での作業、rootユーザ想定
-
リポジトリ情報ファイル(~.sources)を配置する
Dockerが公開しているaptリポジトリに接続するためのファイルを/etc/apt/sources.list.d/
配下に作成する。
※aptリポジトリや接続ファイルなど基礎的なことについては コチラの記事 にまとめている。cat << EOS | sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null Types: deb URIs: https://download.docker.com/linux/ubuntu Suites: $(lsb_release -cs) Components: stable Architectures: $(dpkg --print-architecture) Signed-By: $(while read line; do echo " $line"; done < <(curl -fsSL https://download.docker.com/linux/ubuntu/gpg)) EOS
-
Docker Engine、Docker Composeのインストール
Docker公式docより。sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
管理ユーザの作成&設定
【前提】VPS側での作業、rootユーザ想定
rootユーザは常用するべきではないため、管理ユーザを作成する。
-
新規ユーザの作成フルネーム以降は未入力(エンターキー連打)。
sudo adduser ユーザ名 # 任意のユーザ名
ユーザ作成 -
sudo、dockerのサブグループを追加
sudo usermod -aG sudo,docker ユーザ名 #新規作成したユーザ名
-
ssh用の公開鍵登録
rootユーザの公開鍵を流用することにします。sudo install -m 700 -o ユーザ名 -g ユーザ名 -d /home/ユーザ名/.ssh # 新規作成したユーザ名 sudo install -m 600 -o ユーザ名 -g ユーザ名 ~/.ssh/authorized_keys /home/ユーザ名/.ssh/authorized_keys # 新規作成したユーザ名
-
【クライアント側作業】configファイルを作成する
クライアント側(WSL2 Ubuntu)のconfigファイルに新規ユーザの設定を追加cat << EOS >> ~/.ssh/config Host xvps # 任意の文字列 HostName ***.***.***.*** # VPSのIPv4アドレス User ユーザ名 # 新規作成したユーザ名 IdentityFile ~/.ssh/exsample-ssh-key.pem EOS
参考
代替データストリーム
ssh公開鍵のパーミッション Linux installコマンド
Discussion