はじめに
本記事では「さくらのVPS」について、分かりやすく説明していきます。
初めての方でも迷わないよう、以下のステップに沿ってVPS 「さくらのVPS」 の簡単なセットアップ手順を紹介したいと思います。
また、以下の手順を確認する際は、「さくらのVPS」で、サインアップだけでも実施しておくことをおすすめします。
サインアップだけなら料金は発生しないのでご安心ください。
実際の画面を見ながらの方が、断然理解が進むと思います。
また、本家サイトにもスタートアップガイドはありますので、ご参考にして頂ければと思います。
前回のおさらい
前回、 ファイヤーウォール(パケットフィルター)作成で、サーバのパケットフィルター(ファイヤーウォール)を設定し、Cockpitがブラウザから見えることを確認しました。
今回は、Docker環境を準備していきます。
docker環境の確認
はじめにCockpitへログインし、左メニュー下の「端末」をクリックします。
Cockpitへのログインは、ファイヤーウォール(パケットフィルター)作成をご参照ください。
$ docker ps
この時点で「bash: docker: command not found」が表示される場合は、docker環境の準備が必要になります。
docker-compose スクリプトを取得
コントロールパネルの左メニューから「スクリプト」を選びます。
検索キーワードに「docker compose」を入力すると、
さくらインターネットの公式「docker compose」スクリプトが表示されます。
画面中央あたりに、スクリプト内容が表示されます。
※以下は古いかもしれないため、最新を確認することをおすすめします。
スクリプト詳細(内容説明は割愛)
#!/bin/bash
set -x
. /etc/os-release
if [ "$NAME" == "Ubuntu" ]; then
# enable alias
shopt -s expand_aliases
alias apt-get="apt-get -o 'Acquire::Retries=3' -o 'Acquire::https::Timeout=60' -o 'Acquire::http::Timeout=60' -o 'Acquire::ftp::Timeout=60'"
# package update
apt-get -y update || exit 1
# set up the repository
apt-get -y install apt-transport-https ca-certificates curl software-properties-common || exit 1
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - || exit 1
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" || exit 1
# disable install packages autostart
cat <<EOF >/usr/sbin/policy-rc.d
#!/bin/sh
exit 101
EOF
chmod 755 /usr/sbin/policy-rc.d
# install docker ce
apt-get clean
apt-get -y update || exit 1
apt-get -y install docker-ce docker-ce-cli containerd.io || dpkg --configure -a
usermod -a -G docker ubuntu || exit 1
# install latest Docker Compose
mkdir -p /home/ubuntu/.docker/cli-plugins
curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m) >/home/ubuntu/.docker/cli-plugins/docker-compose || exit 1
chmod +x /home/ubuntu/.docker/cli-plugins/docker-compose
chown -R ubuntu:ubuntu /home/ubuntu/.docker
rm /usr/sbin/policy-rc.d
reboot
fi
function el7() {
check_first
echo_start
yum update -y || echo_finish "1"
# set up the repository
yum install -y yum-utils device-mapper-persistent-data lvm2 jq || echo_finish "1"
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo || V
# install docker ce
yum install -y docker-ce || echo_finish "1"
service_check "docker"
# install latest Docker Compose
mkdir -p /root/.docker/cli-plugins
curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m) >/root/.docker/cli-plugins/docker-compose || exit 1
chmod +x /root/.docker/cli-plugins/docker-compose
echo_finish
reboot
}
function check_first() {
LOGFILE="/root/.sakuravps/startup.log"
CRONFILE="/etc/cron.d/dockercompose-install"
if [ ! -f ${CRONFILE} ]; then
CRON_PATH='/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin'
echo -e "PATH=${CRON_PATH}\n* * * * * root rm -f ${LOGFILE}; /bin/bash $0 2>&1 | tee -a ${LOGFILE}" >${CRONFILE}
exit 0
else
rm -f ${CRONFILE}
fi
}
function echo_start() {
set +x
echo "======================================================================"
echo " STARTUP SCRIPTS START "
echo "======================================================================"
set -x
}
function echo_finish() {
EXITCODE=$1
set +x
echo "======================================================================"
echo " STARTUP SCRIPTS END "
echo "======================================================================"
set -x
if [ "${EXITCODE}" = "" ]; then
return
else
exit ${EXITCODE}
fi
}
function retry_command() {
COMMAND=$1
sleep 3
FAIL_COUNT=0
while [ ${FAIL_COUNT} -lt 5 ]; do
dnf clean all
rm -rf /var/cache/dnf/*
${COMMAND}
if [ "$?" = "0" ]; then
break
else
FAIL_COUNT=$((FAIL_COUNT + 1))
sleep 3
fi
done
if [ ${FAIL_COUNT} -eq 5 ]; then
echo "Command failed five times. So exit."
echo_finish "1"
fi
}
function service_check() {
SERVICE=$1
systemctl status ${SERVICE}.service | grep -q running >/dev/null 2>&1 || systemctl start ${SERVICE}
for i in {1..5}; do
sleep 1
systemctl status ${SERVICE}.service | grep -q running && break
[ "$i" -lt 5 ] || exit 1
done
systemctl enable ${SERVICE}.service || echo_finish "1"
}
### main ###
. /etc/os-release
if [[ "$ID_LIKE" =~ "rhel" ]]; then
test ${VERSION_ID%.*} -eq 7 && el7
test ${VERSION_ID%.*} -eq 8 && el7
test ${VERSION_ID%.*} -eq 9 && el7
fi
スクリプトファイルの作成
以下のコマンドを実行し「install_docker.sh」ファイルを作成し、スクリプトの内容をコピーします。
viはテキスト編集のコマンドです。
vi ~/install_docker.sh
ファイルに「chmod +x」で実行権限を追加します。
chmod +x ~/install_docker.sh
スクリプトファイルの実行
では、実行します。
cd ~
./install_docker.sh
エラー内容
./install_docker.sh: line 143: /etc/cron.d/dockercompose-install: Permission denied
「Permission denied」が出る場合は、先頭にsudoを付けて実行します。
sudo ./install_docker.sh
docker-composeのインストール確認
私の環境では、docker-composeのインストールがうまくできなかったので、
以下のコマンドを実行して、インストールを実施しました。
[rocky@ ~]$ sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
実行中の表示内容
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 12.1M 100 12.1M 0 0 5572k 0 0:00:02 0:00:02 --:--:-- 8469k
docker-composeの権限を変更した上で、バージョン確認を行います。
[rocky@ ~]$ sudo chmod 755 /usr/local/bin/docker-compose
[rocky@ ~]$ docker-compose --version
docker-compose version 1.29.2, build 5becea4c
dokcer-composeの設定完了
以上で、docer-composeの設定完了となります。
次回、Docker環境準備では、初期スクリプトで作成したDocker環境の確認を実施していきます。