はじめに
-
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"というテキストファイルを作成し、以下のように記述します。
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というファイルを作成します。
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
補足
ご意見ご指摘や質問など、コメントお待ちしています。