Docker
Usefull commands
run remove container after stop, intaractive mode, terminal
code:shell
docker run -it --rm
コンテナ内でのコマンド実行
docker exec
docker exec sh -c "command | commnad"
コンテナ内に入る
docker exec -it ContaierName /bin/bash
Docker へのリソースの割当を制御したい
By default, a container has no resource constraints and can use as much of a given resource as the host’s kernel scheduler allows.
これはコンテナごとの割当というより、Docker プロセスに対する割当だと思っていたのだけど、それは cli ではどのように確認できるのか?
Docker base image
base imageを起動
sudo docker run -it --rm --name projact_name ubuntu:xenial
必要なものをインストール
dockerファイルを作成するためには、なにをインストールしたかをメモ
うまくいったらdockerfile化する
コンテナからimageをつくる
docker commit
base imageコンテナで作業する
docker commit <作業コンテンのIDか名前> <image名>
繰り返す場合はimage名を同じにすると上書きされる.
立ち上がらない
サービスの設定っぽい。設定ファイルはstatusで確認できる2
Articles
image,containerをdockerfileとして定義することでportableに
ポートやコンテナにコピーするディレクトリを定義
1. imageを書くかダウンロード
code: Dokerfile
FROM base-image
WORKDIR /application_path
ENV コンテナ内で通したいホストのパス?
ENTRYPOINT docker run で起動するコマンド
CMD
entrypointは簡単には上書きされないが、CMDは引数で即座に上書きされる
バックグラウンドで起動するには -d オプション
バックグラウンドで作動しているimageの一覧は docker container ls
2. docker build で dockerfileからimageをビルド
code:build
-t ,--tag
-rm コンテナ終了時に削除
-p 8080:80 dockerないの80を8080にマップ
code:options
-it デーモンではなくコンソールに出力
-t インターフェースを作成
-i アウトプットを表示
--rm プロセスが終了したらコンテナを削除
-d デタッチ
コンテナを動かし続けるには
-t で擬似的につなぐ
デフォルトユーザのidは1000のことが多い?のでディレクトリ/ファイルの所有者を1000にしてあげれば、ホスト、コンテナ双方からアクセスできる。
docker image prune
容量食う