カテゴリー
初期設定

さくらのVPS 初めてでも分かる使い方 docker環境準備

はじめに

本記事では「さくらのVPS」について、分かりやすく説明していきます。

初めての方でも迷わないよう、以下のステップに沿ってVPS 「さくらのVPS」 の簡単なセットアップ手順を紹介したいと思います。

また、以下の手順を確認する際は、「さくらのVPS」で、サインアップだけでも実施しておくことをおすすめします。
サインアップだけなら料金は発生しないのでご安心ください。

実際の画面を見ながらの方が、断然理解が進むと思います。

  1. さくらのVPSの良いところ
  2. 契約(サインアップ)
  3. インスタンス作成
  4. ファイヤーウォール(パケットフィルター)作成
  5. Docker環境準備   ★今回
  6. Let’s EncryptでSSL化と自動更新

また、本家サイトにもスタートアップガイドはありますので、ご参考にして頂ければと思います。

参考:ネコでもわかる!さくらのVPS講座

前回のおさらい

前回、 ファイヤーウォール(パケットフィルター)作成で、サーバのパケットフィルター(ファイヤーウォール)を設定し、Cockpitがブラウザから見えることを確認しました。

今回は、Docker環境を準備していきます。

docker環境の確認

はじめにCockpitへログインし、左メニュー下の「端末」をクリックします。

Cockpitへのログインは、ファイヤーウォール(パケットフィルター)作成をご参照ください。

Cockpitの端末

$ docker ps

この時点で「bash: docker: command not found」が表示される場合は、docker環境の準備が必要になります。

docker-compose スクリプトを取得

コントロールパネルの左メニューから「スクリプト」を選びます。

検索キーワードに「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環境の確認を実施していきます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください