さくらVPSをCentOS7 + Dockerの構成にしてみた

さくらVPSにDockerを導入しました。

はじめに

先日Dockerを使い始めて早くも便利さを痛感しました。
さくらVPSでも使用したくなりましたので、その手順を紹介します。

環境

項目
ローカルマシンのOS Windows8.1
ローカルマシンのCygwinバージョン Cygwin (1.7.32)
さくらVPSのOS CentOS 7

VPSの契約変更

今使用しているさくらVPSは2core メモリ1GBです。
Dockerで複数コンテナを立てる場合にスペック不足なので、3core メモリ2GBのプランに変更してみました。

さくらVPSでプラン変更はできないため、新規でプランを申し込む必要があります。
詳しくは下記をご覧下さい。

「さくらのVPS」でプランの変更はできますか|さくらインターネット公式サポートサイト

さくらのVPSの公式ページから申し込みします。

CentOS7インストール

標準OSはCentOS6.6であるため、カスタムOSをインストールする必要があります。
カスタムインストールからCentOS 7 x86_64 を選択しました。

カスタムOSインストールガイド – CentOS 7|さくらインターネット公式サポートサイト

LANGUAGE SUPPORTに日本語を追加しておきましょう。

インストール後はrootでログインして情報を確認します。

[root@tk2-234-26610 ~]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)

[root@tk2-234-26610 ~]# df -h
Filesystem                               Size  Used Avail Use% Mounted on
/dev/mapper/centos_tk2--234--26610-root   48G  1.1G   47G   3% /
devtmpfs                                 991M     0  991M   0% /dev
tmpfs                                   1001M     0 1001M   0% /dev/shm
tmpfs                                   1001M  8.4M  993M   1% /run
tmpfs                                   1001M     0 1001M   0% /sys/fs/cgroup
/dev/vda1                                497M  121M  377M  25% /boot

[root@tk2-234-26610 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           2001          90        1666           8         243        1756
Swap:          2063           0        2063

初期設定

初期設定をします。

基本的な流れは以下の記事と同じです。

さくらVPSのOS再インストールとWordPressの復元

ユーザの作成

sshログイン

$ ssh root@${ip_address}

ユーザ追加

[root@tk2-234-26610 ~]# useradd tadashi-aikawa
[root@tk2-234-26610 ~]# passwd tadashi-aikawa
Changing password for user tadashi-aikawa.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@tk2-234-26610 ~]# usermod -G wheel tadashi-aikawa

rootになれることを確認

$ ssh tadashi-aikawa@${ip_address}
tadashi-aikawa@${ip_address}'s password:
Last login: Mon Jul 20 10:36:29 2015
[tadashi-aikawa@tk2-234-26610 ~]$ sudo su root
[sudo] password for tadashi-aikawa:
[root@tk2-234-26610 tadashi-aikawa]#

sshの設定

※ 実際は2222ポートにしていません

configの設定変更

[root@tk2-234-26610 tadashi-aikawa]# vi /etc/ssh/sshd_config

rootのログイン禁止

-     49 #PermitRootLogin yes
+     49 PermitRootLogin no

パスワードによるログイン禁止

-     77 #PasswordAuthentication yes
+     77 PasswordAuthentication no

PAM認証は物騒なコメントがあったので有効のまま

108 # WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several
109 # problems.

sshポート番号の変更

-     17 #Port 22
+     17 Port 2222

sshdを再起動します。

[root@tk2-234-26610 tadashi-aikawa]# systemctl restart sshd.service

このままだと鍵が無いためログインできません。

鍵の作成

鍵の作成はローカルPCで行います。

$ ssh-keygen -t rsa

確認

$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDONIc84zP5g1kWExYnX3v1SXRB8qd7btafOtldx3j34KuwEvXEDrVO9iWWVPFTqqqC6KGY+XF7orAvQye9iCt+z5GHEAoycvL/oVY9KImzrDdJmsFgFlwwgrWma4YL/IzMfRbsyriTNEMUM44D4e/s2YMyanmrzuXx7GizjhN/c4APRVgSqEHGgcK2RumWcZx+TP/1Tx+20iJmuYJQ2wAW9AkXO/nIdgdbuiO0PGdu+LdIUyIyr0O+Bz9dfwMCdxnFUGkYWO//sM1zubJh0C3A+HF8FbEMfoi4LPgfJ171qH+ZHmNFCJdK4s2I16mDrrjLeJmcr05Dq95S0/Auwz0T 正@MAMAN

パーミッション変更

$ cd .ssh
$ chgrp users id_rsa
$ chmod 600 id_rsa

鍵の登録

公開鍵をサーバに登録します。

[tadashi-aikawa@tk2-234-26610 ~]$ mkdir .ssh
[tadashi-aikawa@tk2-234-26610 ~]$ cat > .ssh/authoroized_keys << EOF
> ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDONIc84zP5g1kWExYnX3v1SXRB8qd7btafOtldx3j34KuwEvXEDrVO9iWWVPFTqqqC6KGY+XF7orAvQye9iCt+z5GHEAoycvL/oVY9KImzrDdJmsFgFlwwgrWma4YL/IzMfRbsyriTNEMUM44D4e/s2YMyanmrzuXx7GizjhN/c4APRVgSqEHGgcK2RumWcZx+TP/1Tx+20iJmuYJQ2wAW9AkXO/nIdgdbuiO0PGdu+LdIUyIyr0O+Bz9dfwMCdxnFUGkYWO//sM1zubJh0C3A+HF8FbEMfoi4LPgfJ171qH+ZHmNFCJdK4s2I16mDrrjLeJmcr05Dq95S0/Auwz0T 正@MAMAN
> EOF
[tadashi-aikawa@tk2-234-26610 ~]$ chmod 600 .ssh/authoroized_keys
[tadashi-aikawa@tk2-234-26610 ~]$ chmod 600 .ssh

ファイアウォールの設定変更

ファイアウォールで2222ポートを許可します。
作業はrootユーザで行います。

CentOS6とはやり方が異なるため詳しく記載します。

CentOS7のfirewalldでsshのポート番号を変更する方法 – Qiita

マスターの設定確認

[root@tk2-234-26610 tadashi-aikawa]# cat /usr/lib/firewalld/services/ssh.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH</short>
  <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
  <port protocol="tcp" port="22"/>
</service>

マスターをコピー

[root@tk2-234-26610 tadashi-aikawa]# cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh.xml

ポート番号変更

[root@tk2-234-26610 tadashi-aikawa]# vi /etc/firewalld/services/ssh.xml
- 5   <port protocol="tcp" port="22"/>
+ 5   <port protocol="tcp" port="2222"/>

ファイアウォールのリロード

[root@tk2-234-26610 tadashi-aikawa]# firewall-cmd --reload

sshdの再起動

[root@tk2-234-26610 tadashi-aikawa]# systemctl restart sshd.service
[root@tk2-234-26610 tadashi-aikawa]# systemctl status sshd.service
sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
   Active: activating (auto-restart) (Result: exit-code) since Mon 2015-07-20 11:28:33 JST; 1s ago
  Process: 12900 ExecStart=/usr/sbin/sshd -D $OPTIONS (code=exited, status=255)
 Main PID: 12900 (code=exited, status=255)

Jul 20 11:28:33 tk2-234-26610.vs.sakura.ne.jp systemd[1]: sshd.service: main process exited, code=exited, status=255/n/a
Jul 20 11:28:33 tk2-234-26610.vs.sakura.ne.jp systemd[1]: Unit sshd.service entered failed state.

起動に失敗してしまいましたね。

SELinuxの無効化

ちょっと調べてみたところ、SELinuxの設定が問題のようです。

CentOS • View topic – SSHd Problems only on nonstandard port

SELinuxを無効化する | Smart

まずは有効になっているかを確認。

[root@tk2-234-26610 tadashi-aikawa]# getenforce
Enforcing

無効にしても良いのか気になったので調べてみましたが、個人のサーバとしては無効にした方が良さそうです。

SELinuxをCentOS 7で有効化・無効化(disabled, enforcing, permissive) | urashita.com

SELinuxを無効にします。

[root@tk2-234-26610 tadashi-aikawa]# vi /etc/selinux/config
-      7 SELINUX=enforcing
+      7 SELINUX=disabled

再起動しないと設定変わらないようなので再起動しました。

[root@tk2-234-26610 tadashi-aikawa]# reboot

再度ログインして確認したところ、無効になっています。

[root@tk2-234-26610 tadashi-aikawa]# getenforce
Disabled

鍵認証の確認

ローカルからssh鍵認証してログインできることを確認します。

$ ssh tadashi-aikawa@${ip_address} -p 2222

いちいちユーザ名とポート番号、IPアドレスを指定するのは面倒なので
.ssh/configに設定しておきましょう。

$ vi .ssh/config
+ Host mamansoft
+     HostName        ${ip_address}
+     Port            2222
+     IdentityFile    ${private key's location}
+     User            tadashi-aikawa

Cygwinでの秘密鍵は以下の点に気をつけましょう。

  • グループ所有者がなしになっていないこと
  • パーミッションが600になっていること

Vim/wgetのインストール

あった方が便利なのでVimとwgetもインストールします。

[root@tk2-234-26610 tadashi-aikawa]# yum install -y vim wget

Dockerのインストール

ようやく初期設定が完了したのでDockerをインストールします。
以前作成した下記の記事を参考にしています。

WindowsでDockerを使ってみた

[root@tk2-234-26610 tadashi-aikawa]# yum -y install docker

[root@tk2-234-26610 tadashi-aikawa]# docker --version
Docker version 1.6.2, build ba1f6c3/1.6.2

[root@tk2-234-26610 tadashi-aikawa]# systemctl is-enabled docker
disabled
[root@tk2-234-26610 tadashi-aikawa]# systemctl enable docker
ln -s '/usr/lib/systemd/system/docker.service' '/etc/systemd/system/multi-user.target.wants/docker.service'
[root@tk2-234-26610 tadashi-aikawa]# systemctl is-enabled docker
enabled

[root@tk2-234-26610 tadashi-aikawa]# systemctl start docker
[root@tk2-234-26610 tadashi-aikawa]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

これでDockerのインストールが完了しました。

Dockerコンテナの起動

Dockerfileを作り、適当なイメージを起動させてみましょう。

[root@tk2-234-26610 tadashi-aikawa]# mkdir python
[root@tk2-234-26610 tadashi-aikawa]# cat > python/Dockerfile << EOF
FROM python:3.4.3
CMD [ "python", "--version" ]
EOF
[root@tk2-234-26610 tadashi-aikawa]# docker build -t python3.4.3 python
[root@tk2-234-26610 tadashi-aikawa]# docker run python3.4.3
Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.
Python 3.4.3

Python3.4.3のコンテナを起動し、バージョンを表示させることができました。

総括

さくらVPSでCentOS7にDockerをインストールさせてみました。

次回は本ブログを今回作成した環境に引っ越すため、Docker上でWordpressを動かすことにチャレンジしてみます。

コメントを残す