概要
環境構築をするためのものです。
OSやアプリケーション、パッケージなどがセットになったイメージを共有することで、
同じ環境を簡単に作れます。作れるらしい。
コンテナはホストへの負荷が少なく、簡単に作ったり消したり出来ます。
イメージ
Dockerコンテナの動作環境となるテンプレートファイルです。
OS、アプリケーション、ファイル、コマンドなどがセットになっています。
変更するにはイメージを作り直します。
Dockerfile
イメージを作成するための手順を記述したバッチファイル
docker build で実行できます。
コンテナ
イメージから起動します。
docker run で実行できます。
コンテナを消すとコンテナ内のデータは消える
永続化するものはホスト側に保存する必要がある。
データベース、ファイルなど。
docker volumeを使います。
コマンド
docker version
docker images
取得済みイメージのリスト
docker image ls (docker imagesと同じ)
docker pull
docker hubからダウンロード
run / create時、存在しなければ自動でダウンロードされる
docker ps
起動中コンテナのリスト
docker conainer ls (docker psと同じ)
docker ps -a 起動してないのもぜんぶ表示
docker inspect xxx 詳細表示
docker build
Dockerfile からイメージを作成します。
docker build -t [image_name] .
作り直したりして不要なものは
docker images でID確認して
docker rmi xxx で削除
PowerShellは色が見にくいので --progress=plain をつける
コンテナ作成
docker run -d -it -name xxx [image_name] (イメージからコンテナ作成して起動
d: デーモンとしてデタッチして別プロセスで動かす
it: bin/bashを使うコンテナなら直接アタッチして使える
name: コンテナ名
docker run -dp 3000:3000 [image_name] (コンテナのポートをホストのポートに割り当て
docker create -d (コンテナ作成するだけ、起動はしない
ローカルに指定したイメージがない場合は、自動でDockerHubに探しに行ってpullする。
同じイメージでも実行するたびに複数出来ますので、不要なものは
docker ps -a でID確認して
docker rm xxx で削除
docker push
docker hubにアップロードして共有
タグをつける必要がある
docker tag xxx YOUR-USER-NAME/xxx
Play with Dockerを使えばアップロードしたコンテナを試せる
docker exec
コンテナ内で新たなプロセスを実行
execを使うにはコンテナが起動中であること
docker exec xxx /bin/ls -l
docker exec -it xxx /bin/bash (対話コマンド)
docker exec -it [image_name] bash
docker exec -it [image_name] ls
docker exec -it [image_name] python xxx.py
感想
PowerShellに苦戦した。