Docker で Nginx サーバーを立てる


VPS の Arch Linux に Nginx のサーバーを立てる方法です。

1) Docker のインストール

sudo pacman -S docker

2) Docker の起動
ここからは、Ubuntu でも操作は同じです。

sudo systemctl start docker

3) Nginx のインストールと起動

sudo docker run --name some-nginx -d -p 8080:80 nginx

4) イメージの確認

$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              c82521676580        2 weeks ago         109MB

5) Nginx が動いていることを確認

$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
dac02b07c2e4        nginx               "nginx -g 'daemon of…"   33 minutes ago      Up 33 minutes       0.0.0.0:8080->80/tcp   some-nginx

6) ブラウザーで http://IPアドレス:8080 にアクセス

7) docker コマンドを通常ユーザーで実行できるようにする
ユーザー uchida で実行できるようにするには

sudo gpasswd -a uchida docker

8) ssh でログインする

$ docker exec -it some-nginx bash
root@dac02b07c2e4:/#

9) ログイン後 vim をインストールする

apt update
apt install vim

10) index.html を編集する
日付を加えてみます。

/usr/share/nginx/html/index.html
<p><em>Thank you for using nginx.</em></p>
Aug/13/2018<p />
</body>
</html>

11) ブラウザーでアクセス

次のバージョンで確認しました。

$ docker version
Client:
 Version:           20.10.10
 API version:       1.41
 Go version:        go1.17.2
 Git commit:        b485636f4b
 Built:             Tue Oct 26 03:44:01 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server:
 Engine:
  Version:          20.10.10
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.2
  Git commit:       e2f740de44
  Built:            Tue Oct 26 03:43:48 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.5.7
  GitCommit:        8686ededfc90076914c5238eb96c883ea093a8ba.m
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

コンテナーの停止と起動

$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                   NAMES
0b643730642f   nginx     "/docker-entrypoint.…"   8 minutes ago   Up 2 minutes   0.0.0.0:8080->80/tcp, :::8080->80/tcp   some-nginx

$ docker stop 0b643730642f
0b643730642f

$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

$ docker start 0b643730642f
0b643730642f

$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                   NAMES
0b643730642f   nginx     "/docker-entrypoint.…"   9 minutes ago   Up 2 seconds   0.0.0.0:8080->80/tcp, :::8080->80/tcp   some-nginx