Dockerを学ぶのに役立つまとめ。【初学者向け】
🚛

Dockerを学ぶのに役立つまとめ。【初学者向け】

Tags
Docker
Last Edited
Jul 9, 2021 4:08 PM
Description
会社で突然プロジェクトのローカル開発環境をDockerで構築してと言われたので、死ぬ気で学びました。その時の知見のまとめです。日々アップデートしていく予定
Date
ジャンル
ステータス
広告
評価

Dockerとは何なのか学ぶ

全体像を掴む

入門Dockerでまずはコードに触れずに、全体像を大まかに把握することが大切です。この概念を身につけるプロセスを省くと、結局のところ全体像が掴めずにエラー潰しで泣きを見ます。

実際に構築する

Docker compose

Docker compose とは、複数のコンテナから成るサービスを構築・実行する手順を自動的にし、管理を容易にする機能です。 Docker compose では、compose ファイルを用意してコマンドを1 回実行することで、そのファイルから設定を読み込んですべてのコンテナサービスを起動することができます。

docker-compose.yamlはコンテナ全体を総括して設定を行えます。ポートを指定したり、ファイルシステムのマウントを行なったり、コンテナの詳細ではない部分の設定を行います。例えるなら指揮者です。

例) docker-compose.yml

version: "3.9" # docker-compose.ymlのバージョン。現時点の最新は3.9
services:
  db: # サービス名になります
    build:
      context: . # 指定したいDockerfileのディレクトリを指定
      dockerfile: Dockerfile # dockerfileの名前が独特の時に注意
    tty: true # バックグラウンドプロセスを起動したまま
    volumes: # ホストマシンのフォルダをマウント
      - ./db/config:/work/tmp
    entrypoint: ./entrypoint.sh
    command: /bin/bash
    working_dir: /work/ # コマンド等を行うディレクトリを指定
    environment: # 環境変数
      SSH_AUTH_SOCK: "/tmp/ssh-agent.sock"
      USER_NAME: ${USER}

docker-compose.yamlでbuildに指定した方法でビルドする

docker-compose build

docker-compose.yamlで指定した内容でコンテナを立ち上げる

docker-compose up -d

docker-compose.yamlで建てたコンテナに入る

docker-compose exec db bash

Dockerfile

ベースイメージに細かな手を加えたい時(yum updateやyum install)など、docker-composeで書けるっちゃ書けるけど面倒だし行数増えるな〜と思ったらこっちに書く

FROM --platform=linux/x86_64 amazonlinux:2.0.20191217.0

RUN yum -y update && \
  yum -y install openssh-clients

RUN yum install -y https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
RUN yum install -y mysql-community-client

困ったら

公式ドキュメントを読む

エンジニアなら普通ですね。

ネットのリソースを漁りまくる

Dockerはネットのリソースがたくさんあります。

インフラ構成は集合知。たくさん調べましょう。

本を適当に買って読む

自分はこいつを買いましたが、他にも良さそうな書籍はありそうですね。

本当にインフラ触ったことがない人はこちらでも良いと思います。優しくてわかりやすいです。

ドメイン知識を学ぶ

nginx, apache, mysql, redis, linuxなどは別リソースで学んだほうがわかりやすいです。Dockerの勉強よりもこっちのが費やす時間が増えるかも?

まとめ

🐶

Docker自体の設定はあるっちゃあるが、基本的にはLinuxコマンドだったり、CLIでの操作だったり、nginxの設定だったり、apacheの設定だったり、インフラの総合格闘技みたいなもん。 結局はLinuxの知識やmysql, nginxとかの自分がやりたいことのドメイン知識が必要になってくるので、「Docker学んだから、俺はインフラ最強だよ」とはならない。真面目に少しずつ勉強を積んでいくのが一番。

ベストプラクティスを学ぶ

じゃあ、Dockerを学ぶってどういうことかって言うと、Dockerfileやdocker-composeの書き方のベストプラクティスを学んで、保守しやすいDockerを構築するっていうこと。

効率的に安全なDockerfileを作る

まず何から始めればいいかわからないよ><って場合はこれ見て進める

保守性の高いdocker-composeを書く

デザインパターンを学ぶ

Dockerくんにもデザインパターンがあります。より保守性の高いDockerを目指して日々精進してください。

コンテナを軽く、原理原則を考える

icon

Twitter よかったらフォローしてね!

© 2021 | Tech Dog Run