timtim.<tech/>

勉強会でDocker入門してみた

勉強会でDocker入門してみた

3/31/2024

## 参考 - スライド: [お手軽環境構築!はじめてのDocker講座 - Speaker Deck](https://speakerdeck.com/miyakei1225/oshou-qing-huan-jing-gou-zhu-hazimetenodockerjiang-zuo) - リポジトリ: [miyakei1225/Docker-Hands-on: Dockerハンズオン用のリポジトリです! (github.com)](https://github.com/miyakei1225/Docker-Hands-on) ## Dockerとは コンテナ型の仮想環境。 例: Node.jsのインストール Dockerを使わない場合 各個人でインストールする必要があるため、バージョンなどの微妙な差が出てきてしまう。OS間での差異もあったりするので厄介。 → バグの原因になったりする 使う場合 全員が同じ環境を作れる! 削除が簡単!あれこれ開発環境を入れてしまう自分みたいな人間におすすめ ## 構成 以下の3つを覚えておけば問題ナシ 1. イメージ 2. コンテナ 3. ボリューム ### イメージ Dockerの設計図。コンテナを作るための設定を行う。 イメージを元にコンテナを起動することで、それぞれの開発環境を作れる。 イメージの共有から他のメンバーが同様の環境を作れる。 [Docker Hub](https://hub.docker.com)を使っても良いが、GitHubのほうが一般的。 #### Recent Tagsについて イメージのバージョンのこと。 Dockerに対応しているバージョンが記載されている。 Docker Tagには何を使うのか?-> Alpine Linux多い 参考: [軽量Dockerイメージに安易にAlpineを使うのはやめたほうがいいという話 - inductor's blog](https://blog.inductor.me/entry/alpine-not-recommended) ### コンテナ アプリの実行環境。 コンテナは作成・起動・削除が可能。 Docker Desktopでこの作業が楽に行える。 ### ボリューム データの永続化を担当する場所。永続化: 外部HDDみたいなもの 基本的にコンテナを削除するとデータは消える。 外部にデータ保管場所が欲しい!!これが**ボリューム**。 コンテナの外にボリュームが乗っかっている。 Dockerの詳しい構成は後に調べる #task ## yamlについて 設定を`compose.yaml`に記載する。 構文はGitHub Actionsの際に触っているのでだいたいわかる。 ホスティングについて GCP, AWSやVercel, Cloudflareも使用できる。 参考: [Docker + React + TypeScript の 環境構築方法 #Docker - Qiita](https://qiita.com/91works-i-kato/items/9f9ad03fee32d42ed547) ## Docker Compose 複数コンテナの定義と実行を行う。 正体はyamlファイル。 以下のコマンドを使用する。 例: ```bash docker-compose build # イメージ構築 docker-compose up -d # コンテナ作成 -dでバックグラウンドで実行できる docker-compose stop # 停止 docker-compose down # 停止と削除 ``` 基本的には`docker-compose stop`を使うことが多いそう。 ### TTYについて `false`にするとどうなるか?→ 実行してすぐ終了してしまう。 TTY: 標準入出力先のデバイスのこと。 ttyは仮想端末を配置するコマンドである。 参考: [DockerのTTYって何? (zenn.dev)](https://zenn.dev/hohner/articles/43a0da20181d34#%E3%81%A7%E3%81%AFdocker%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8Btty%E3%81%A8%E3%81%AF%EF%BC%9F) ### DockerFile コンテナのビルド時や起動時の作業を1つにまとめたもの。 `compose.yaml`との違いは、yamlは起動やその諸設定を行える。DockerFileでは起動時やビルド時の作業を定義する。 ### docker, docker-composeコマンドの違い 1つのコンテナを起動するか、2つ以上のコンテナを起動するかの違い。 ### コマンドオプションについて - sh -c - コマンドを実行するときに使われる - shでシェル実行、-cで以降が文字列であると示す