Docker基礎

Docker自体使っているものの、完璧に使いこなせるわけではないので今一度勉強。
基本的にインフラエンジニアとして業務に従事することがなく、すぐ忘れるのでアウトプット

Dockerとは?

コンテナ型仮想技術。自分のPC、つまり物理マシン上に仮想マシン作るためのツールのこと。
コンテナ型仮想技術以外にもVMWareeなどのハイパーバイザー型の完全仮想化技術がある。
ハイパーバイザー型の場合は仮想マシンごとにOSを準備しなければいけない、対してコンテナ型は同じOSです上で分離されたコンテナ空間を準備して仮想化させる。
よってコンテナ型の方はオーバーヘッドを少なくすることが出来る。

インストール

公式パッケージからインストールが可能。システムコントロールをONにして再起動する。

$ sudo pacman -Sy docker
$ sudo systemctl enable docker
$ sudo systemctl start docker
$ sudo reboot

docker起動時にERROR: Couldn't connect to Docker daemonのエラーが出た場合
sudoでdockerを実行する必要がある、そのためユーザーに権限を与えることでこのエラーを解決できる。

$ sudo usermod -a -G docker $USER

上記のコマンドを実行したら、一度ログアウトしてください。

How to fix ERROR: Couldn’t connect to Docker daemon at http+docker://localhost – is it running?

Dockerのメリット

  • コマンドとどのファイルをサーバーに配置するかなどを自動化できる
  • 二回目以降の環境作成はキャッシュによって高速で起動、環境構築が速い
  • 開発環境の共有化、開発メンバー全員が同じ開発環境で作業を進められる
  • 性能劣化がほぼない
  • ハードディスクの使用量が他の仮想技術と比較して少ない

Dockerを使用する上で抑えておくべき用語

Dockerfile

コンテナで実行することや設定を書くファイルのこと。

Dockerイメージ

Dockerfileを元に作られた仮想環境のファイル
このdockerイメージは、docker imageが保存されているDockerhubからインストールしてくる

Dockerコンテナ

Dockerイメージを「コンテナ」として動かす。Dockerイメージを入れる箱のような存在。

docker-compose.yml

基本的にDockerfile同様にDockerの起動に使用する。ただし、Dockerfileと若干動きが異なる。
docker-compose.ymlでコマンドを書くと、docker-compose up実行時に、docker-compose.ymlに書かれた内容が実行される。しかし、このときDockerfileで指定しているCMDは実行されない。
したがってdocker runで特定のコマンドを実行したいときはDockerfileのCMDに書く必要がある。

また、docker-compose.ymlは複数のコンテナの定義をする際にも有効で、コンテナ毎にDockerfileを定義したい場合など、指定できる。

よく使うコマンド

# docker-compose.ymlの内容を実行
$ docker-compose up -d

# プロセス状況確認
$ docker-compose ps

# コンテナ停止
$ docker-compose down

# 実行中のコンテナ表示
$ docker container ls 

# 全てのコンテナ表示
$ docker container ls -a

GUIを使用して視覚的にDockerを操作したい場合DockerStationがオススメ
UIも洗練されているので使いやすい

https://dockstation.io/

ArchLinuxはAURからダウンロード可能

$ yaourt -S dockstation

関連記事