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

イメージ全削除

コンテナ、ネットワーク、イメージ、ビルド、等々の整理が良くできていないので別途まとめよう。