VPSにdocker環境構築


目的

vps上にdockerの環境を作りたいと思います。

前提

さくらのVPSを使っています。
OSはカスタムインストールで CentOS 7 にしています。

ほぼ自分用メモなので不親切なのはご了承下さい。

はじめにセキュリティ確保

ここでは詳しくやりませんが、セキュリティの確保のため、
最低限として、rootで作業しないように一般ユーザを作成します。

  • リモートの作業(root)
    1. 一般ユーザの作成
      1. useradd mimura
      2. passwd mimura
    2. 一般ユーザがsudoできるようにする
      • visudo で設定
    3. root のsshログインを止める
      • vi /etc/ssh/sshd_config
        • PermitRootLogin no を設定
      • systemctl restart sshd
  • ローカルの作業
    1. ローカル環境で鍵認証に使うキーを生成する
      • macの場合はssh-keygen
    2. 生成したキー(公開鍵のほう)をvpsへアップロード
      • scp .ssh/genereted_key myvps.vs.sakura.ne.jp:/home/mimura/.ssh/authorized_keys
      • chmod も忘れずに
        • $ chmod 700 ~/.ssh
        • $ chmod 600 ~/.ssh/authorized_keys
    3. ローカルに.ssh/configを作っておけば便利
  • リモートの作業(一般ユーザでしかログインできない)
    1. sshの鍵認証を設定する
      • sudo vi /etc/ssh/sshd_config で下記のように編集
        • RSAAuthentication yes
        • PubkeyAuthentication yes
        • AuthorizedKeysFile .ssh/authorized_keys
          • ↑アップロードしたファイルパスにする
    2. sshdを再起動
      • sudo systemctl restart sshd
    3. ローカルから鍵認証でログインできるのを確認
    4. sshのパスワード認証を止める
      • sudo vi /etc/ssh/sshd_config
        • PasswordAuthentication no
    5. sshdを再起動
      • sudo systemctl restart sshd

ここでsshd_configの設定に失敗すると、ssh接続できなくなってしまいどうしようもなくなってしまいますが、さくらのVPSではWebブラウザのコントロールパネルからコンソール機能が利用できるので、いざというときもリカバリー可能です。

セキュリティ確保には他にもいろいろやった方がよいことがありますが、
ここでは一般ユーザで作業するまでにして先に進みます。

dockerのインストール

  1. まずupdate
    • sudo yum update
  2. dockerのインストール
    • sudo yum install docker-io
  3. インストールされたのを確認
    • sudo systemctl start docker
    • sudo docker info
      • 状態が表示されればOK

一般ユーザでdockerが使えるようにする

  1. dockerグループを追加します。
    • sudo groupadd docker
  2. 一般ユーザをdockerグループへ追加
    • sudo gpasswd -a mimura docker
  3. dockerデーモンの再起動
    • sudo systemctl restart docker
  4. 一般ユーザの再ログイン
    • Ctrl+Dからのssh
  5. 一般ユーザで動くことを確認
    • docker info

ここまでで環境ができました。

Moby Dockを表示してみる

  • docker run docker/whalesay cowsay 'Congrats!!!'
    または

  • docker run -t -i docker/whalesay bash

    • # cowsay 'Congrats!!!'

環境構築としては以上になります。