アゴドリルの備忘録

まったり競技プログラミングとCTFなど

dockerについて

学内でGit,dockerなどの開発環境について勉強する(ゆるふわ)勉強会があったので物理学科ながら参加してみた。そこでdockerにふれたので忘れないように書きます。

dockerとは

Docker Inc.が開発した軽量なコンテナ型の仮想化ツール

仮想マシンとコンテナ型仮想化の違い

Virtualboxなどの仮想マシンはもともと動いているホストOSの上にVirtual boxなどの仮想マシンを立てて、そこでゲストOSを立ててそこでプロセスなどを実行する

dockerなどのコンテナ型の仮想環境ではコンテナという領域でプロセスを実行する

コンテナは仮想マシンに比べて余計なものが動かない→軽い!!!


dockerの公式ドキュメント
Docker Documentation | Docker Documentation


imageとcontainerについて

・image
コンテナの実行環境、ファイルシステム、操作方法みたいなのをまとめたもの
自分でOS,コマンドなども編集可能

・container
imageによって作成した仮想環境のこと


コンテナの起動まで

イメージの取得
$ docker pull [image名]

https://hub.docker.com/explore/
上のリンクからpullできるものは確認できる


version指定をしたいときは

$ docker pull ubuntu:14.04

上のように":"をつけてversionを指定


コンテナの起動
$ docker run [option] image [command]

imageがローカルにないか自動で確認してくれて、ないときは自動でpullをおこなってから起動をする


オプション

-i インタラクティブ
-t 擬似端末接続
-d バックグラウンドで実行

$ docker run -it ubuntu:16.04 /bin/bash

↑よく使う

上のコマンドを実行すると、起動したubuntuのコンテナのターミナルに接続ができる


コンテナ名を指定

$ docker run --name hoge ubuntu

コンテナ名:hogeのコンテナを作成
(通常、コンテナ名はランダムに作成される)


よく使いそうなコマンド一覧

起動中のコンテナにログイン
$ docker attach [コンテナ名 or ID]

起動中でないとアタッチはできない

コンテナの起動
$ docker start [コンテナ名 or ID]


-aオプションを加えて

$ docker start -a [コンテナ名 or ID]

で起動と同時にコンテナにアタッチ(ログイン)することもできる


imageの一覧を表示
$ docker images
実行中のコンテナの一覧を表示する
$ docker container ls
すべてのコンテナ(実行中でないものも含む)を表示する
$ docker container ls -a
コンテナ/イメージの削除
$ docker rm container名
$ docker rm image名
コンテナ/イメージの全削除(実行中のものは除く)
$ docker container prune
$ docker image prune

そういえば

dockerのインストールが成功しているのにも関わらず、dockerの起動の際にpermission deniedなどと表示されるときはユーザがdockerグループに所属していないためにsudoを毎回打つ必要があります。そのためユーザをdockerグループに所属させると、毎回sudoを打つ必要がなくなります。詳しくは

qiita.com

自分はこの方法で解決しました。


参考
http://qiita.com/voluntas/items/68c1fd04dd3d507d4083