Docker メモ
投稿日: | |
---|---|
タグ: |
Dockerとは
Linux用のオープンソースのソフトウェアコンテナ(コンテナ)のこと。類似したソフトにはLXCやFreeBSDのjailなどがある。
インストール(Debianの場合)
- APTのデータ取得元の設定リストにURLを追加
(以下jessieの場合)。
- /etc/apt/sources.list
deb https://apt.dockerproject.org/repo debian-jessie main
deb https://apt.dockerproject.org/repo debian-wheezy main
- パッケージを更新する。
sudo apt-get update
- Dockerをインストールする。
sudo apt-get install docker-engine
- デーモンが実行していない場合、dockerデーモンを起動する。
sudo service docker start
apt-getでhttpsを利用する
apt-getはデフォルトではhttpsを利用できない(はず)。
E: メソッドドライバ /usr/lib/apt/methods/https が見つかりません。apt-getで利用可能なプロトコルは、以下のようにして確認できる。
ls /usr/lib/apt/methods
対応してない場合、httpsのプロトコルと証明書を追加する。
sudo apt-get install apt-transport-https ca-certificates
APTキー管理ユーティリティで、公開鍵の設定を行う。
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
失敗談
はじめ、Dockerをインストールしようとして、
sudo apt-get install docker
とやって実行を試みた。
sudo docker run hello-world
すると結果は、
Segmentation Fault or Critical Error encountered. Dumping core and aborting.
このDockerはドッキングアプリケーションのことである。詳しくは"aptitude show docker"とかで確認できる。
とりあえず実行する
現在管理しているイメージはimagesで確認できる。
user% sudo docker images
デフォルトでは、Welcomメッセージを表示するhello-worldイメージが用意されている(はず)。
イメージは、runコマンドで指定したコンテナを実行できる。
user% sudo docker run hello-world
コンテナ名を指定しない場合、デフォルトで"nostalgic_almedia"というコンテナが使用される。
実行中のコンテナは、psで確認できる。
user% sudo docker ps -a
シェルのような対話的なコマンドをコンテナで実行するには、-itオプションを使用する。
user% sudo docker run -it ubuntu:14.04 /bin/bash
ubuntuのイメージがない場合、イメージをダウンロードしてから実行する。
また、--nameでコンテナに名前をつけることができる。
user% sudo docker run --name="test" ubuntu /bin/bash
user% sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
86f74cf40355 ubuntu "/bin/bash" 18 seconds ago Exited (0) 16 seconds ago test
Bashからexitで抜けて、ホストに戻った後、imagesをもう一度実行すれば、イメージが増えているのが分かるだろう。
user% sudo docker images
停止中のコンテナを再開する
- コンテナを確認する。
user% sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9fec70d35bde ubuntu "/bin/bash" About a minute ago Exited (0) 14 seconds ago sleepy_williams
- (停止中の)コンテナを実行する。
startは以下のように使用する。user% sudo docker start 9fec70d35bde
user% sudo docker start [オプション] コンテナ名|コンテナID ...
- 実行中のコンテナでコマンドを実行する。
user% sudo docker exec 9fec70d35bde ls
user% sudo docker exec オプション コンテナ名|コンテナID コマンド
- 実行中のコンテナをアタッチする。
user% sudo docker attach 9fec70d35bde
コンテナからイメージを作成
- コンテナを確認する。
user% sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9fec70d35bde ubuntu "/bin/bash" About a minute ago Exited (0) 14 seconds ago sleepy_williams
- コンテナからイメージを作成する。
user% sudo docker commit 9fec70d35bde hoge
- イメージを確認する。
user% sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE hoge latest 8a2222fb559e 5 seconds ago 188 MB ubuntu 14.04 07c86167cdc4 4 days ago 188 MB
- 作成したイメージからコンテナを作成し、実行する。
user% sudo docker run hoge
- コンテナを確認する。
user% sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 937b91f51708 hoge "/bin/bash" 9 seconds ago Exited (0) 7 seconds ago elegant_northcutt 9fec70d35bde ubuntu "/bin/bash" 31 minutes ago Up 13 minutes sleepy_williams
基本コマンド
docker コマンド オプション
- ps
- 実行中のコンテナの一覧を表示。
- run
- 新しくコンテナを実行。
- rm
- コンテナを削除。
- images
- 取得したイメージの一覧を表示。
- rmi
- 取得したイメージを削除。
- search
- Docker Hubからイメージを検索する。
- stop
- 実行中のコンテナを停止させる。
- commit
- コンテナからイメージを作成する。
docker run イメージ名
- 新しくコンテナを実行する。
docker images
- ダウンロード済みのイメージの一覧を表示する。
docker ps -a
- 実行されたコンテナの情報を表示する。
docker save イメージ > tarファイル
docker save -o tarファイル
docker save --output tarファイル
- イメージをtarファイルに保存する。saveとloadはセットで覚えた方が良い。xzやgzipと組み合わせれば、tar.gzやtar.xzなども作成可能。
docker load イメージ < tarファイル
docker load -i tarファイル
docker load --input tarファイル
- 保存したtarファイルからイメージを読み込む。
忘れた時は...
- サブコマンドの確認..
sudo docker
- サブコマンドの使い方の確認..
sudo docker サブコマンド --help
その他
- 管理者権限なしでdockerを使用する
sudo groupadd docker sudo gpasswd -a ユーザ docker
メモ
- 3.14以前のLinuxカーネルではPAMを利用できない。