できればVPSでもDockerを使って環境を作りたいですよね。開発環境もDockerなら本番環境もDockerでやりたいです。
そこで今回はエックスサーバーVPSでDockerを使う方法を書いていきます。
- エックスサーバーVPSでDockerを使う2つの方法
- Dockerでアプリケーションを動かす
DockerをVPSで使いたいという場合はどのように使うことができるのか参考にしてみてください。
エックスサーバーVPSでDockerを使う2つの方法
エックスサーバーVPSでDockerを使うとするなら以下の2つの方法が挙げられます。
- 立てたサーバーにコマンドでDockerをインストールする
- Dockerテンプレートを使ってサーバーを立てる
テンプレートはサーバーを作成する時に選ぶことができて、選んだものをすぐに使えるサーバーを作成してくれます。
最初からDockerを使える環境が欲しいとか、コマンドを使ってインストールするのが面倒だっていう場合はDockerを選択してサーバーを作成するといいですよ。
ここからはDockerテンプレートを使った方法とコマンドでDockerをインストールする2つの方法を実際にやっていきます。
Dockerテンプレート使ってサーバーを立てる
まずはXserver VPSでDockerテンプレートを使ってサーバーを立ててみます。サーバーを作成する際にアプリケーションからDockerを選択。
サーバーを立てたらSSH接続してDockerのバージョンを確かめてみます。
$ docker -v
Docker version 20.10.21, build baeda1f
$ docker-compose -v
docker-compose version 1.25.0, build unknown
確認してみるとDockerのversionが20.10.21で、Docker Engine release notesと照らし合わせるとこの記事を書いている段階で新しめのものが使われています。
バージョンの更新が追従されていくのか分からないけど、こういうのってちょっと古いバージョン使われているイメージあるからとてもありがたい。
ただdocker-composeのバージョンが1.25.0ですね。docker-composeのリポジトリを見てみると2.14.0が最新だからちょっと古い気がする。
OSも確認する
インストールされているOSも確認してみるとこれはUbuntuでした。
$ cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.5 LTS"
もしCentOSが良い!とかっていう場合にはDockerテンプレートを使わずに、CentOSを指定してサーバーを作成した後コマンドでDockerをインストールするといいです。
Hello Worldする
hello-worldのimage落として実行してみるとちゃんと動きます。
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:c77be1d3a47d0caf71a82dd893ee61ce01f32fc758031a6ec4cf1389248bb833
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
もちろんdockerコマンド使えるのでちゃんと実行できます。
サーバー作成した瞬間からDocker使えるのが楽
Dockerテンプレートはサーバーを作成する画面で選択するだけで、すぐにDockerを使える状態にしてくれるのでとても楽です。
ただ自分でOSを選ぶことができなかったり、諸々のバージョンが気になったりします。もしそういったことに悩むのならDockerをコマンドでインストールして構築するといいです。
Dockerをコマンドでインストールする
テンプレートを使わずにDockerをコマンドでインストールするようにすれば、OSも自分で選ぶことができます。
テンプレートではUbuntuだったのでここではCentOSを選んでやってみますね。
OSを再インストールする
さっきはDockerテンプレートを使ってサーバーを作成しましたが、一度そのサーバーは壊したいのでOS再インストールを行います。(サーバーを新規で作成する場合には素直にOSを選択すればいいです)
今度はDockerを選択しないでOSからCentOS Stream9を選択です。
これでOSがCentOSのサーバーが作成されます。Dockerは入っていないので、コマンドでインストールしていきますよ。
Docker CE の入手(CentOS 向け)を参考にしつつ進めます。
docker-ceリポをインストール
まずはリポジトリのセットアップ。
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
docker-ceのインストール
Docker CEの最新版をインストールします。
$ sudo yum install docker-ce
インストールが終わったらバージョンを確認してみます。
$ docker -v
Docker version 20.10.22, build 3a2c30b
最新版がインストールされましたね。
以下コマンドでインストール可能なバージョンを表示できるので、出てきたものの中からバージョンを指定してインストールするといいでしょう。
$ yum list docker-ce.x86_64 --showduplicates | sort -r
docker-ce.x86_64 17.06.ce-1.el7.centos docker-ce-stable
Dockerを起動する
Dockerのインストールは完了したので起動して確かめてみます。
$ sudo systemctl start docker
hello-worldのimageを落として実行してみます。
$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:c77be1d3a47d0caf71a82dd893ee61ce01f32fc758031a6ec4cf1389248bb833
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
ちゃんと実行できていますね。これで自由にdockerを使うことができます。
Docker Composeをインストールする
Docker Composeのリリースページから最新版をインストールしたいと思います。最新版がこの記事を書いている今だと2.14.2です。
ダウンロードリンクのアドレスをコピーしてコマンドでインストールするようにします。
$ sudo dnf install wget
$ sudo wget -O /usr/local/bin/docker-compose https://github.com/docker/compose/releases/download/v2.14.2/docker-compose-linux-x86_64
権限を付与しておきます。
$ sudo chmod +x /usr/local/bin/docker-compose
これでバージョンを確認してみましょう。
$ docker-compose -v
Docker Compose version v2.14.2
指定したバージョンがインストールされましたね。これでdocker-composeコマンドを使うことができるようになりました。
docker-composeでアプリケーションを動かす
本当はここで終わろうかと思ったけど、docker-compose入ったなら何かアプリケーション動かしたいですよね。
wordpressでも動かしてみましょう。まずは適当なディレクトリを作成してその中でdocker-compose.ymlを作成します。
$ mkdir app
$ cd app
$ vi docker-compose.yml
docker-compose.ymlには以下を記述。
version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "80:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
これで起動させます。
$ docker-compose up
80番ポートはデフォルトだと制限されているのでエックスサーバーVPSの管理画面からONにします。
これでサーバーのIPアドレスにアクセスするとワードプレスのインストール画面が表示されましたね。
docker-composeでワードプレスを動かすことができました。VPSでもちゃんとdocker使えます。
まとめ
エックスサーバーVPSでDockerを使う方法について書きましたが、大きくDockerを使う方法としては2つでした。
- Dockerテンプレートを使ってDockerを使う
- コマンドでサーバーにDockerをインストールする
面倒だったらDockerテンプレートを使って、自分で色々気にしたいならOSは自分で選んでコマンドでインストールするといいです。
アプリケーションをDockerで動かして公開したかったらエックスサーバーVPSの選択肢も大いにあり。