1.はじめに
最近、山浦清透さんが運営されているプログラミング学習サービス「独学エンジニア」にてDockerについて学び始めましたので、備忘録も兼ねて自分なりにまとめていきたいと思います。
2.Dockerとは
アプリケーションとその依存関係にあるOS・ライブラリを軽量で移植性のあるコンテナと呼ばれる箱に入れて、あたかも違うコンピュータのように扱えるものです。
3.Dockerのメリット
メリットについては多数あるのですが、いくつか紹介します。
-
環境の一貫性
開発、テスト、本番環境で同じDockerイメージを使用することで、環境の違いによる問題を軽減できます。 -
セットアップの容易さ
Dockerイメージを使用することで、開発者はOSやインストール方法の違いを気にせず、簡単にアプリケーションの環境を構築できます。 -
移植性
Dockerコンテナは異なるマシンやクラウドプラットフォームで簡単に実行できるため、デプロイメントの柔軟性が向上します。 -
チームの協調性
Dockerを使用することで、開発者間で環境設定の共有が容易になり、チーム全体の生産性が向上します。 -
インフラストラクチャ効率
Dockerコンテナは軽量であり、同じホスト上で複数のコンテナを実行できるため、リソース使用効率が向上し、インフラストラクチャのコストが削減されます。
4.Dockerの基本操作
(1) イメージを取得・ビルドする
コンテナの設計書となるイメージには2通りの作成方法があります。
- Dockerレジストリより取得する
# DockerHubから任意のDockerイメージ(imagename)を取得する場合
$ docker image pull imagename
- Dockerfileをビルドする
# Dockerfileがカレントディレクトリにある場合
$ docker image build .
# タグを付ける場合(-tオプション)
# タグの書式: 名前空間/イメージ名:タグ名
$ docker image build -t test/apache:latest .
# ファイル名を指定する場合(-fオプション)
$ docker image build -f Dockerfile-test .
(2)イメージの一覧を確認する
# 現在のイメージの一覧を確認する
$ docker image ls
(3) コンテナを生成・起動する
コンテナの生成・起動には「run」コマンドを、
生成だけには「create」コマンドを、起動だけには「start」コマンドを用います。
# 書式:docker container run [オプション] イメージ [コマンド]
$ docker container run test/apache:latest
# コンテナをバックグランドで実行する(-dオプション)
$ docker container run -d test/apache:latest
# コンテナに名前を付ける(--nameオプション)
$ docker container run --name apache_test test/apache:latest
# 標準出力とターミナルをアタッチする(-itオプション)
$ docker container run -it test/apache:latest
「-it」オプションはinteractiveの-iオプションとttyの-tオプションの2つを繋げたもので、
コンテナ上で最初に実行されるプロセスがシェルの場合、「-it」オプションを付けることによりコンテナを終了させずに使用できるようになります。
(4) コンテナの一覧を確認する
# 起動中のコンテナ一覧を確認する
$ docker image ls
# 全コンテナの一覧を確認する(-aオプション)
$ docker image ls -a
5.終わりに
Dockerの超基本的なことまとめただけなのですが、やはり自分でアウトプットするとモヤモヤしていた部分がスッキリしたので、積極的にQiita等にアウトプットしていきたいと思います!
Part2では、ポートを公開したり、コンテナ内でコマンドの実行等の基本操作についてまとめて行きたいと思います。
Dockerは使いこなせると環境構築等で本当に便利そうなので早くマスターしたいですね。
また、ポートフォリオにもDockerを使用して作成したいので引き続き学んでいきたいと思います(^^)
6.参考資料
-
独学エンジニア(Lesson33・34参照)
独学エンジニアとても分かりやすく、記事の内容は講義内容を参考に作成しております。
月額約1,000円で非常にオススメです!