Docker勉強備忘録1
節目を迎えたので、今週平日はUQをもらっている。
興味が出てきたのでDockerを勉強してみている。
相変わらずお世話になっているドットインストール
http://dotinstall.com/lessons/basic_docker
Dockerっちゅうのは...
Dockerってのは、アプリケーションを環境とまとめてパッケージ化する(環境をコンテナ、パッケージされたものをイメージという)ものらしい。
環境もまとめてパッケージ化するから、Dockerさえ立ち上がれば、他のマシンでも同じ動作を保証できるというもの(マシン性能等再現できないものもあるけど)
仮想環境との違いは、仮想環境はホストOS上に仮想マシンを作るが、Dockerコンテナでは、この仮想マシンがない(代わりにDockerEngine)。マシンリソースは全コンテナで共有。仮想マシンがないから軽量で手軽。
Dockerの構成
面倒なので図にした。引用元を記述すれば自由に転載していいです。
Dockerの操作
Dockerのインストール
この辺に乗っている。 今回はSandbox的に用意している仮想Ubuntu 14.04上にインストールした。
https://www.docker.com/products/docker
Ubuntuはこっち
https://docs.docker.com/engine/installation/linux/ubuntulinux/
Dockerの一連の流れ
docker search {検索ワード} | more
DockerHubのIndexからイメージを探すdocker pull {イメージ名}
Docker Hub から イメージを持ってくるdocker run {イメージ名}
イメージの実行- Docker
イメージの操作
docker search {検索ワード} | more
イメージの検索docker pull {イメージ名}
イメージをDocker Hubからホストへ持ってくるdocker images
ホストにあるイメージ一覧を表示- イメージの指定は
{イメージ名}:{バージョン}
or{イメージのIDの先頭n文字(識別できるまで)}
docker inspect {イメージ指定]
イメージの詳細を表示docker rmi {イメージ指定}
イメージを削除
イメージの実行 / 終了 / 削除・コンテナの管理
docker run {イメージ指定}
イメージの実行docker ps
実行中のコンテナの一覧docker ps -a
停止しているコンテナも表示
- コンテナの指定は、IDか名前で指定できる
docker logs {コンテナ指定}
コンテナのログを取れるdocker kill {コンテナ指定}
コンテナの終了docker start {コンテナ指定}
コンテナの再開docker rm {コンテナ指定}
コンテナの削除
コンテナに変更を加えてイメージを作る(例)
コンテナに直接変更を加える(docker commit)
- Ubuntuの実行などでコンテナに変更を加える
docker run -i -t ubuntu /bin/bash
docker commit {コンテナID} {イメージ名(username/imagename)}
でイメージを作成
DockerFileで自動化(docker build)
Dockerfile
という名前のファイルを作る- https://docs.docker.com/engine/reference/builder/ を参照して作る
FROM {イメージ名}
継承するファイルMAINTAINER 名前 <email>
で作成者を記入RUN {コマンド}
ビルドされるときに実行CMD ["コマンド", "コマンド", ... ]
runするときに実行
- `docker build -t {イメージ名(username/imagename)} {Dockerfileがあるディレクトリのpath}
- イメージができる!(
docker images
で確認しよう)
作成したイメージをDocker Hubにpush
docker login
docker push {イメージ名(username/imagename)}