Docker をつかってみよう
みなさんはDockerをつかっていますか?
今回はDockerについて紹介します。
Dockerとは
Dockerってなんですか?
Dockerは、コンテナ仮想化ツールだよ。
今つかっているパソコンの中にでパソコンを動かすイメージだよ。
ちょっと何言ってるかわからない
・・・
Dockerは、コンテナ仮想化ツールとよばれます。
一般的にコンテナとは、内部に物を納めるための容器です。
トラックのコンテナ、船のコンテナ、列車のコンテナ、飛行機のコンテナなどの物を運ぶ容器を思い浮かべると思います。
IT技術におけるコンテナは、私たちが使用しているパソコンの中に配置されたアプリケーションをまとめた容器です。
ここでのアプリケーションはLinux等のオぺーレーティングシステムや、RubyやPHP、Pythonなどの言語パッケージです。
私たちが使っているWindowsやMacOSといったオペレーティングシステム(以降OS)にコンテナを配置するだけでなく、そのアプリケーションを動作できます。
物理的なパソコン(ハードウェア)でWindowsやMacOSが動くことに対して、WindowsやMacOSなどのソフトウェア上でOSを動かすことが仮想化の技術です。
つまり、Dockerは、私たちが使用しているWindowsなどのOS上でコンテナと呼ばれる別のLinuxなどのOSやアプリケーションをまめた容器を仮想的に動作できるツールです。
Docker利用のメリットとデメリット
Docker利用のメリットとデメリットについて記載します。
メリット
- アプリ開発における環境構築の作業の効率化
- アプリ開発におけるバージョン管理の効率化
- チーム開発における環境展開のし易さ
- 環境を移動できて他の環境で容易に動作できる
アプリ開発における環境構築の作業の効率化
アプリ開発において最初に行うことは、プログラミングを実装し動作を確認する環境を構築することです。
Webアプリ開発の場合は、Webアプリを動かすWebアプリサーバーの環境構築や、データを登録するためのデーターベース環境構築が必要になります。
仕事で案件やプロジェクトにおいて、自分が利用するパソコンに環境を構築(以降ローカル環境構築)しますがその場合はいろんなサイトから必要なアプリケーションや、ライブラリをダウンロードします。
特に初めてのフレームワークをインストールする場合は関連するライブラリ等が分からずに環境構築にかなりの時間が必要なります。
DockerはDockerfileにインストールの手順等を記載することで簡単、かつ、自動で環境構築ができます。
アプリ開発におけるバージョン管理の効率化
アプリ開発において最初に行うことは、プログラミングを実装し動作を確認する環境を構築することです。
仕事で案件やプロジェクト毎に使用する言語や、フレームワーク、ライブラリのバージョンが異なります。過去の案件でバージョンを変えて動かすときもDockerを利用できます。
チーム開発における環境展開のし易さ
チーム開発において自分が使用しているマシンに同じ環境を適用する場合もDockerを使うメリットがあります。
メンバーの参画や退出が多いプロジェクトにおいても環境構築の手間の効率があがります。
環境を移動できて他の環境で容易に動作できる
コンテナ同様に移動することが可能なため、windows環境から、Linux環境への移動が容易に行うことができます。
デメリット
- Dockerの理解の難易度
- Dockerは遅い
- 音声デバイス等の外部デバイスの連携の難易度
Dockerの理解の難易度
Dockerの利用において最初のデメリットは、Dockerfileを記載する際の理解度が難しいことです。
DockerはUbuntuやCentOSなどのOS上で動作します。言語やフレームワークなどのインストールは各OSのパッケージソフトに依存します。
Linuxのコマンドの理解も必要であり初心者の方は特に難しく感じます。
Dockerは遅い
言語や、フレームワークをWindwosやMacOSにインストールして実行する場合と比べてDockerは遅いです。
音声デバイス等の外部デバイスの連携の難易度
音声やUSBなどのデバイスがDockerに対応できてない場合があります。
Dockerを使ってみる
実際にDockerをつかってみます。
Dockerダウンロードとインストール
最初にDockerをダウンロードします。ダウンロード元は以下の通りです。
ダウンロードが完了したらそのままインストールをしてください。
Dockerのインストールの手順は省略します。
Docker実行
インストールができたらDockerfileを作成しイメージのビルド、コンテナ起動、コンテナアクセスを行います。
AlpineOSのDockerfile作成
最初にAlpineOSのDckerfileを作成します。
Dockerfileはイメージをビルドするためのビルドの指示を書いたファイルです。
DockerにはDocker Hubに公式のイメージが置かれています。
今回はAlpineのDocker Hubを参考にDockerのイメージを作成します。
このページにAlpineのOSバージョンの記載があります。
Dockerfileを作成します。
FROM alpine:3.12
Dockerfileに記載する内容は以上です。
Dockerビルドでイメージ作成
Dockerfileを保存してコマンドプロンプトなどでDockerのイメージファイルをビルドします。
コマンドは以下の通りです。Dockerfileが配置された場所で実行します。
docker build -t img_alp .
img_alpはイメージファイルの名前です。「.」は現在のディレクトリです。
イメージファイルができたか確認をします。
docker images
img_alpという名前のイメージファイルが表示されますが、されていない場合はビルドでエラーになっている可能性があります。
エラーログや、つづりを確認してください。
Dockerコンテナの作成
イメージができたらrunコマンドでコンテナを作成します。
docker run -itd --name com_alp img_alp
-itdはオプションです。
iはinteractiveの略です。双方向でのやりとりができます。
tはttyの略です。標準入力、標準出力となっている端末デバイスを表示する
dはデタッチドの略です。コンテナをバックグラウンドで実行します。
com_alpはコンテナ名です。
img_alpはビルドで作成したイメージファイルです。
Dockerのプロセスが起動したか確認します。
docker ps
-aをつけると停止中のコンテナも表示されます。
docker ps -a
Dockerコンテナアクセス
以下のコマンドでDokcerのコンテナにアクセスすることができます。
docker exec -it com_alp sh
shはコマンドです。
Dockerコンテナ停止
コンテナを停止する場合は以下のコマンドを実行します。
docker stop com_alp
Dockerコンテナ起動
コンテナを起動する場合は以下のコマンドを実行します。
docker start com_alp
Dockerコンテナ削除
コンテナを削除する場合は以下のコマンドを実行します。
docker rm com_alp
Dockerイメージ削除
イメージを削除する場合は以下のコマンドを実行します。
docker rmi img_alp
まとめ
今回は簡単なDockerイメージビルドからコンテナへのアクセスまでを紹介しました。
今後は他のOSやパッケージを使った内容について紹介したいと思います。
0 件のコメント:
コメントを投稿
コメントをお待ちしています。