【第四回】はじめてのDocker - 番外編

こんにちは。ドイです。
前回はイメージを作成するためのCompose fileについて学びました。

↓前回の記事

tech.arms-soft.co.jp

この業界に入って実は二年目の私です。
コツコツ基本情報技術者試験(FE)の勉強をしております。
仕事の中で、自然と技術に関する知識は身についていきますが、
人に説明するとなると少し難しいですよね。
今回は、前回詳しく説明しなかった、ポート番号や環境変数について触れていきたいと思います。

ポート番号

みなさん、勉強のためにちょっとした機能を作ろうとした時、どうしますか?
私は勉強を始めた時、自分で読んだ本を登録する機能を作りました。
と言っても、サーバを借りたりといった手間なことはしていません。
ローカルの環境にMySQLやApacheをインストールして、簡単なINSERT文を書いたのを覚えています。

当時は意識していませんでしたが、
一つのPCの中にMySQLだったり、Apacheだったりと混在しているのですよね。
本の登録をする訳ですから、データのやり取り = 通信を行うことになります。
当時は「一つのPCで、通信をする」ということが理解できませんでした。
まるで、一つの家の中で郵便物が飛び交っているような印象を持ったのを覚えています。

実は、MySQLもApacheも一つのPCの中に混在していますが、
それぞれ自分の郵便ポストのような接続口を持っています。
これが「ポート」と呼ばれるものです。
ポート番号は16ビットの整数で、2の16乗で0〜65535番まであります。

MySQLならば3306番、HTTPならば80番といった風に、
主だったサービスには、あらかじめポート番号が決められています。
それが「ウェルノウンポート」と呼ばれるものです。

Docekrではどのように利用されているのか、前回のおさらいを兼ねて紹介したいと思います。

mysql:
    container_name: 'mysql'
    build: ./docker/mysql
    ports:
      - '3307:3306'

「port」と書いてある部分が、まさにポート番号について記述している部分です。
ホストの3307番ポートと通信すると、コンテナ内の3306番と通信できるよう紐付けがされています。

例えばターミナルを立ち上げて

sudo lsof -i:3307

と叩くと、ポート番号から使用しているプログラムを確認することができます。
(※使用しているOSによって異なります )
実際に視覚で確認できると、嬉しいですよね。

環境変数

私がプログラミングの勉強を始めた時、フォルダを作ったり、確認するために、
ターミナルを立ち上げて、コマンドを叩いて作業を行なっていました;;
(その方法しか知らなかったのです)

ターミナル内で現在の位置を確認するためのコマンドがあります。
ターミナルを開いて、「pwd」と叩いてみたください。
(※使用しているOSによって異なります )
現在自分がいるディレクトリを取得できたかと思います。

実は、pwdコマンドで現在の位置が取得できるのは、
環境変数のおかげなのです。

ターミナルを開いて「env」と叩いてみてください。
現在設定されている環境変数が確認できたかと思います。

では、Docekrではどのように利用されているのか、みていきたいと思います。

environment:
      MYSQL_ROOT_PASSWORD: xxxxx
      MYSQL_DATABASE: app

environmentと記述した箇所が、環境変数の設定を行っています。
こちらでは、MySQLのパスワードと、使用するデータベースの設定を行なっているようです。

まとめ

いかがでしたか。
私は今回勉強していく中で、さらにわからないことがたくさん出てきました。
普段仕事では、コードを書くことばかりしているので、
PCがどう動いているのかという勉強をしてこなかったように思います。
これから少しずつ勉強していきたいと思います!!