0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[初心者向け]Dockerチュートリアル

Posted at

はじめに

  • DockerではWindows仮想環境・Linux仮想環境どちらも利用することが可能です。

  • ただし、Windows仮想環境を利用するためには、Dockerを起動する(ホスト)OSがWindows 10 Professional/EnterpriseやWindows Serverなどでなければなりません。詳細は以下のURLを参照してください。
    https://docs.microsoft.com/ja-jp/virtualization/windowscontainers/deploy-containers/system-requirements

  • Linux仮想環境を利用する際にはホストOSに特別な制限は無いようで、Dockerが利用できる環境であれば大丈夫です。

1. Dockerのインストール

まずは使用するマシンにDockerをインストールします。こちらからインストーラーをダウンロードします。
https://www.docker.com/products/docker-desktop
ダウンロードした後は案内に従ってインストールするだけです。

インストールが完了したらPowerShellを開き、以下のコマンドを実行します。

> docker --version
Docker version 20.10.7, build f0df350

Dockerのバージョンが表示されればインストールは成功です。

2. Dockerを使う

2.1 イメージとコンテナ

Dockerを使う前に必要な概念を説明しておきます。

  • イメージ

”イメージ”というのは、Dockerで構築する環境の設計図のようなものです。例えば「CentOSのイメージ」、「Ubuntuのイメージ」などがあります。単にOSを指定するだけでなく、「CentOSにpython3.8をインストールしたイメージ」や「Ubuntuにgccをインストールしたイメージ」などを作成することも可能です。このように、Dockerでは必要な仮想環境を自分でカスタマイズし、利用することが可能です。

DockerHubというサイトでは多くのイメージが公開されています。

DockerHubで公開されているイメージを使用するためには、以下のコマンドを実行します。

> docker pull ubuntu

イメージを取得したら以下のコマンドを実行して、ローカルに保存されているイメージを確認できます。

> docker images
REPOSITORY       TAG       IMAGE ID       CREATED        SIZE
ubuntu           latest    7e0aa2d69a15   3 months ago   72.7MB

REPOSITORYというのがイメージの名前、TAGというのがタグです。タグは例えばバージョン違いを選択する際に使用するもので、ubuntuの場合には"18.04"や"20.04"などがあります。"latest"というのは最新バージョンを使用するという意味です。

  • コンテナ

実際に仮想環境を利用するためには、イメージからコンテナと呼ばれるものを作成する必要があります。例えば、ubuntuのイメージからubuntu-container1というコンテナを作成し、ubuntu-container1の中で様々な作業を行います。同じubuntuのイメージから別のubuntu-container2というコンテナを作成して、別の作業を行うこともできます。

2.2 コンテナの作成・起動

では実際にDockerを使ってみます。

> docker run -it ubuntu
root@31b9f780fe43:/#

上記のrunコマンドを実行すると、コンテナを作成し、起動してログインするところまでを一括して行なえます。
コンテナから抜けたい場合はexitと入力すれば良いです。

作成されたコンテナの状態を確認するにはpsコマンドを使用します。

> docker ps -a
CONTAINER ID   IMAGE          COMMAND        CREATED        STATUS                        PORTS   NAMES
f1e4bc9b1885   ubuntu:latest  "/bin/bash"    2 months ago   Exited (0) 2 minutes ago               ubuntu-container

"ubuntu-container"のところはコンテナの名前ですが、今回は特に指定していませんのでDockerが適当な名前を自動でつけていると思います。

一度作成したコンテナを再び起動する場合はstartコマンドを使用します。

> docker start ubuntu-container

起動しているコンテナの中に入って操作をする場合はexecコマンドを使用します。

> docker exec -it ubuntu-container /bin/bash

-itというオプションは起動したコンテナをインタラクティブに操作するというような意味合いです。コンテナ名の後には、そのコンテナで使用するシェルを指定しています。

起動しているコンテナを終了する場合はstopコマンドを使用します。

> docker stop ubuntu-container

コンテナを削除する場合はrmコマンドを使用します。

> docker rm ubuntu-container

3. Dockerfileを使う

ここまではDockerHubから取得したイメージをそのまま利用していました。ただ、実務ではpythonやgccをインストールして利用したいということがあると思います。そういったときに毎回コンテナを起動してから手動で設定するのは面倒です。そこで、そいういったカスタマイズを簡単に行うDockerfileを使ってみます。

適当なフォルダに"Dockerfile"というテキストファイルを作成し、以下のように記述します。

Dockerfile
FROM ubuntu
RUN yum install python3.8

一行目のFROMではコンテナのもとになるイメージを指定します。ここではubuntuを使用します。

二行目のRUNではコンテナを起動した後に自動で実行するコマンドを指定します。ここではyumでpython3.8をインストールしています。

次にこのDockerfileを使用してイメージを作成します。Dockerfileが存在するディレクトリで次のコマンドを実行します。

> docker build -t ubuntu-image .

作成されたイメージを使うと、設定通りpython3.8のインストールされたコンテナを作成することができます。

> docker run -it -d --name ubuntu-container-1 -p 8081:80 ubuntu-image

このようにDockerfileを使うとコンテナの設定をテキストファイルの形で作成・保存することができます。つまり、Dockerfileを共有すれば同じ仮想環境を簡単に複製することが可能です。

4. Docker-composeを使う

Dockerfileを使った例ではコンテナを作成する際にポートやコンテナ名を設定するために長ったらしいコマンドを入力する必要がありました。これを毎回行うのは大変です。そこでコンテナの設定もテキストファイルに保存し、手軽にコンテナを作成できるようになるのがdocker-composeです。

docker-composeを使用するためにはdocker-compose.ymlというファイルを作成します。

docker-compose.yml
version: '3' 
services: 
    ubuntu:
        build:
            context: ./django
        image: django-image
        container_name: django01
        stdin_open: true
        tty: true
        ports: 
            - "8081:8080"
        volumes: 
            - ./share:/share

準備が整ったら次のコマンドでイメージ・コンテナを作成・起動します。

> docker-compose up -d

作成されたコンテナを確認するにはpsオプションを使用します。

> docker-commpose ps

コンテナの中に入るにはexecコマンドを使用します。

> docker-compose exec django01 bash

使用し終わったコンテナとイメージをまとめて削除するには次のコマンドを使用します。

> docker-compose down --rmi all

参考記事

こちらの記事が分かりやすいです。
https://qiita.com/kooohei/items/0e788a2ce8c30f9dba53

補足

ご意見ご指摘や質問など、コメントお待ちしています。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?