Build、Ship、Runの理解が重要!Dockerを理解してコンテナ環境を使いこなそう!

Dockerを使ったコンテナ環境構築、理解していますか?

目次

Dockerの仕組みを基礎から理解しよう!

本記事ではDockerを利用したコンテナ環境構築について、意外と後回しにしてしまう基本的な考え方(Build、Ship、Run)を含めて、コンテナ環境構築の基本について説明したいと思います。

便利だけど実は結構複雑なコンテナの仕組み、流れをきちんと理解しよう!

今や多くのITエンジニアが利用しているDockerですが、一度Dockerfileを作ってしまえばその後はコマンド一つで簡単にコンテナを利用したアプリケーション実行環境が作れてしまいます。そんな手軽さもあるせいか、Dockerについてあまり理解せずに利用している人も多いのではないでしょうか。(私もその一人ですが。。)

なお、本記事を書くにあたり、以下の書籍を参考にしています。

イラストでわかるDockerとKubernetes

Dockerコンテナ開発・環境構築の基本

2冊ともDockerの基本的な仕組みについて詳しく解説しているので、DockerやKubernetesについて理解を深めたい方はぜひ、目を通してみてください。

Dockerってなに?

Dockerとは、「コンテナ」という仮想化技術を利用することによってアプリケーションの開発や実行を行うためのサービス(OSS)です。またDockerは単一のマシン上におけるコンテナの管理やイメージの作成、イメージの共有などの、コンテナにおけるワークフローをサポートするサービスでもあります。

Dockerを理解する上での基本はBuild、Ship、Runの3つの処理

コンテナを理解する上では欠かせないのは、Docker社が提唱する3つの役割「Build、Ship、Run」によって構成されるワークフローです。

これら3つの役割は具体的には以下の通りです。

  1. Build:コンテナイメージの作成
  2. Ship:レジストリを利用したイメージの配布
  3. Run:コンテナの実行

では上記1~3について、具体的にどのようなことなのか、簡単に説明したいと思います。

Build:コンテナイメージの作成

まずはコンテナの実行に必要となる、コンテナイメージを作成します。コンテナイメージにはコンテナとして実行されるアプリケーションに必要とされる各種ライブラリなどや、コンテナ自体の環境情報などが保持されています。

コンテナイメージの作成においては、具体的にはdocker buildコマンドを実行します。docker buildコマンドを実行する際には以下の2つの部品が必要となります。

  • Dockerfile:コンテナを作成する上で必要となる手順のようなもの
  • コンテキスト:コンテナに格納されるファイル群

この2つを用意してdocker buildコマンドを実行すると、Dockerfileに記載されている手順に沿って、コンテナイメージが作成されます。

Run:コンテナの実行

上記のBuildで作成したコンテナイメージをdocker runコマンドで実行します。

Ship:レジストリによるコンテナイメージの配布

Docker Buildで作成したコンテナイメージを他のホストに配布する機能のことを指します。コンテナイメージは具体的にはdocker pushコマンドを利用してDocker Hubのようなレジストリサービスにイメージをpushして、他のホストからdocker pullコマンドによってイメージをpullするような形になります。

Dockerでコンテナを実行してみよう!

では実際にDockerを使ってコンテナを実行してみましょう!Dockerのインストールが完了していない方は、以下の過去記事を参考にDockerのインストールを行ってください。

簡単にできる!WSL2を利用したLinux開発環境構築手順-Dockerセットアップ編

1.作業用のディレクトリを作成


2.ディレクトリ内にファイル(ここではtest.sh)を作成

test.shのファイルの中身は以下の内容を入力


3.test.shのパーミッションを755に変更


4.Dockerfileを以下の通り作成


5.docker buildコマンドを実行


6.docker imageコマンドでイメージの確認


7.docker runコマンドでコンテナを実行


8.別のターミナルを開き、docker exceでコンテナ内に入り、lsコマンドとpsコマンドを実行


9.docker stopコマンドでコンテナを停止


10.docker rmコマンドでコンテナを削除

Dockerについては既存のOSやアプリケーションをコンテナ環境で運用することはもちろん、最近ではサーバレスなコンテナ実行環境のようなものがAWSやGCPなどのクラウドサービスとして存在し、より手軽にコンテナ環境を利用したアプリケーションの開発が可能となりました。

これらの技術を活用していくためにも、ぜひ本記事でご説明したような基本的な内容を押さえたうえで、積極的にDockerやk8sなどのサービスを利用してみるのが良いかと思います。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

JTCでデータエンジニアっぽいことをしています。仕事ではGoogle Cloud、GTM、Google AnalyticsやKARTE、Datahubあたりを触っています。
本ブログではGoogle Cloudやデータエンジニアリング、たまに趣味などの記事をアップします。

コメント

コメントする

CAPTCHA


目次