Dockerをしっかり無理解状態でdocker-compose
やKubernetes
を学ぼうとしていて結果的にえらい回り道をしている気がしたので、まずはDockerについてざっくりでも理解するために書き残す。
※ちなみにdocker-compose
やKubernetes
、ECS
などは復数のDockerを扱うための技術とのことで、Docker
のメリットを享受できていない内に学ぼうとしても頭に何も残らなかった。。。
Dockerに関する記事はたくさんあるので、とりあえず、イメージとコンテナの二つを理解したら何となく使えるようになった。
※Dockerfileの書き方はそのうち追記します
イメージ
コンテナの元。コンテナを使うにはまずイメージがなければいけない。
イメージはダウンロードするか、人からもらうか、自分で作るかで手に入れたりできる。
シンプルなイメージなら公式からダウンロードで取得できるが、会社と同じ環境を自宅で再現したいとかであれば自分で作るか誰かが作ったのをもらうしかない。
コンテナ
イメージから作成した別の環境
シンプルに自分のPC環境に別のPC環境を作る技術と理解している。
このおかげでぶっ壊しても平気なのでとにかく色々試せるし、人と共有も簡単にできるんだな〜ってこと。
Dockerfile
Dockerfile
はイメージを作成するためのファイル。
公式イメージから自分で手を加えて、自分専用のイメージを作成したりできる。
コマンド
イメージ関連コマンド
docker search イメージ名
docker pull イメージ名
# イメージ作成基本コマンド。この場合イメージ名はランダムにつけられる
docker build (DockerFileのある)パス
# イメージ名を独自につける
docker build -t 名付けたいイメージ名 (DockerFileのある)パス
# イメージ名とタグを独自につける
docker build -t 名付けたいイメージ名:タグ (DockerFileのある)パス
# 例
docker build -t sample:1 .
・
・
・
# 省略
Successfully built 1234abcdefgh ←作成されたイメージID
Successfully tagged sample:1 ←イメージ名とタグがつく。オプションつけなければこの表記されない
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sample 1 1234abcdefgh 8 minutes ago 1.97GB
# REPOSITORYがイメージ名
docker history イメージ名
# 対象を指定する際はイメージ名、イメージ名:タグ、イメージIDのどれかで指定する
docker rmi イメージ名
docker rmi イメージ名:タグ
docker rmi イメージID
コンテナ関連コマンド
docker run -it イメージ名 bash
# 作成するコンテナに名前をつける場合
docker run --name 名付けたいコンテナ名 -it イメージ名 bash
※-i
はコンテナの標準入力を有効化
※-t
はttyを有効化
※ ちなみにイメージを未取得でdocker run イメージ名
とコマンドを叩くと自動的にpullしてからrun(起動)してくれる
# 起動コンテナのみ表示
docker ps
# 停止コンテナも含めて表示
docker ps -a
# 停止コンテナも含めてコンテナIDのみ表示
docker ps -aq
docker start コンテナ名
docker stop コンテナ名
docker attach コンテナ名
docker rm コンテナ名 or コンテナID
docker logs コンテナ名 or コンテナID
ネットワーク関連コマンド
docker network ls
docker network inspect ネットワーク名 or ネットワークID
docker network create --attachable -d ネットワーク名 --subnet=172.17.0.0/16 作成ネットワーク名
Docker for Mac
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty