pyhaya’s diary

機械学習系の記事をメインで書きます

Dockerを動かしてみる

Dockerを勉強し始めたので、学習記録としてまとめておきます。内容は基本的に
knowledge.sakura.ad.jp
のDocker入門で勉強したものを基礎としており、自分が引っかかったとことを付け足して書いています。

環境

Dockerのインストール

この記事を参考にしてインストールした。

qiita.com

Dockerイメージをダウンロードしてみる

まず最初に、軽量なWebサーバとして有名なNginxのDockerイメージを入れてみました。
hub.docker.com
まず、DockerHubのアカウントを作成しました。作成できたら、ここのIDとパスワードを使ってdockerでログインします。ログインをすることで、Docker Hubからイメージをpullすることができるようになります。(ログインしていない状態でpullしようとすると権限がありません、と怒られます。)

$ docker login
Authenticating with existing credentials...
Stored credentials invalid or expired
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username:      
Password: 

では、次にNginxのリポジトリをpullしてきます。

$ docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
27833a3ba0a5: Pull complete 
ea005e36e544: Pull complete 
d172c7f0578d: Pull complete 
Digest: sha256:e71b1bf4281f25533cf15e6e5f9be4dac74d2328152edf7ecde23abc54e16c1c
Status: Downloaded newer image for nginx:latest
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              27a188018e18        12 days ago         109MB

Nginxを動かしてみる

$ docker run -d --name nginx-container -p 8181:80 nginx

このようにすることで、Dockerイメージを動かすことができます。プロセスを確認すると、

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
21f11ea7bc28        nginx               "nginx -g 'daemon of…"   2 minutes ago       Up 2 minutes        0.0.0.0:8181->80/tcp   nginx-container

STATUSがUP、つまり現在動いていることがわかります。このとき、このプロセスが使っているのが、0.0.0.0:8181ポートであることがわかります。このポートにアクセスすれば「Welcome to nginx」のページが現れます。しかし、ファイアーウォールの設定でこのポートが閉じてしまっているときには接続がうまく行きませんので、開く必要があります。

$ sudo ufw status
状態:非アクティブ
$ sudo ufw enable    # ファイアウォールが有効になっていなかったので、有効にする
$ sudo ufw allow 8181
$ sudo ufw reload
$ sudo ufw status
状態: アクティブ

To                         Action      From
--                         ------      ----
8181                       ALLOW       Anywhere                           
8181 (v6)                  ALLOW       Anywhere (v6)  

これでアクセスすれば「Welcome to nginx」のページが現れます。

Dockerを停止する

$ docker stop nginx-container

Docker/Kubernetes 実践コンテナ開発入門

Docker/Kubernetes 実践コンテナ開発入門