docker
docker理解が難しい。いくつか総論っぽい本を読み、いろいろ軽くいじってはいるのだけど。
docker
Docker containers that run on Docker Engine:
- Standard: Docker created the industry standard for containers, so they could be portable anywhere
- Lightweight: Containers share the machine’s OS system kernel and therefore do not require an OS per application, driving higher server efficiencies and reducing server and licensing costs
- Secure: Applications are safer in containers and Docker provides the strongest default isolation capabilities in the industry
要はどの環境でも動く、軽い、安全なコンテナ化技術ということ。この辺のことはよく理解した。Infrastracture as Code(IaC)と呼ばれて、ソフトウェア開発で実施されてきた構成管理や自動化などを、サーバーの各種設定やミドルウェアのインストールなどにも適用したもの。
仮想マシンに似ているけど、もっとミニなもの。
docker compose
Compose is a tool for defining and running multi-container Docker applications.
複数のコンテナを定義できるもの。だから例えばMySQLのコンテナとweb serverのコンテナ、みたいな作り方が可能。 こんな感じで定義する。
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
わかるとはなにか
そもそもすべてを理解しているものなんて存在しないのに、どこで苦手意識ってきえるのだろうって考えたとき、ある程度、自分の型ができちゃうのが大切な気がする。
と、いうことで今使えるコマンドを洗い出す。
docker-compose up -d
コンテナを作成して、オプションで-dをつけることでバックグラウンドで実行
docker ps
実行中のプロセス一覧を確認する
docker-compose logs
サービスのログを出す。サービスを指定して区切ることも可能
docker exec -it container_name /bin/bash
Dockerのコンテナの中に入る
docker-compose down -v
停止&削除(コンテナ・ネットワーク・ボリューム)
docker-compose down --rmi all
停止&削除(コンテナ・ネットワーク・イメージ)
docker ps -aq | xargs docker rm
コンテナ全削除
docker images -aq | xargs docker rmi
イメージ全削除
コンテナ、ネットワーク、イメージ、ビルド、等々の整理が良くできていないので別途まとめよう。