実行中のコンテナを確認
docker ps -a
docker imageの作成(dockerfileを作成して)
# IMAGE名は小文字で記述する
docker build -f ./Dockerfile -t IMAGE:TAG .
docker build -f ./Dockerfile -t opencti:bash .
#もしくわ
docker build -f ./Dockerfile -t opencti:latest .
コンテナの起動
docker run -it IMAGE
すべてのコンテナを停止
docker stop $(docker ps -aq)
コンテナの一括削除(コンテナを停止してから)
docker rm $(docker ps -aq)
1行で実行
docker stop $(docker ps -aq) && docker rm $(docker ps -aq)
Processを切ってコンテナから出る
exit
exitしたらコンテナを削除する
docker run -it -rm containerID TAG
Processを残したままコンテナから出る
docker detach
コンテナの再起動
docker restart
実行中のコンテナ内でコマンドを実行する
docker exec containerID command
commitして更新する
docker commit containerID IMAGE:update
Imageを別名で保存する
docker tag IMAGE:update userName/repoName
Docker Hubにpushする
docker push userName/repoName
docker インストラクション
FROM -> OSを指定する
RUN -> RUN毎にレイヤーが追加される
最小限のレイヤーにするためにコマンドは&&で繋ぎ、\で改行する
インタラクティブなインストールにはオプションの-yを指定する。
USING CACHE
docker fileはCACHEを使って作成し、
コマンドが通るのを確認してからRUNにまとめて書く。
COPY -> ファイルのコピー
COPY文は&&繋げない
COPY fileName PATH
ADD
tarファイルをコピーして解凍する
CMD -> ファイルの最後に記述する
# CMDと[]の間にはスペースが必要
CMD ["COMMAND","PARAM1","PARAM2"]
WORKDIR
実行ディレクトリを変更する
WORKDIR 絶対PATH
ENV -> 環境変数の設定
ENV key value
ホストとコンテナの関係
ホストのファイルシステムをコンテナにマウントする
# DIR=任意の名前、newDir/にホストにあるファイルが見える(コンテナにファイルがあるわけではない)
# ホストのファイルを更新するとプロンプトにupdatedと表示される
# dirの作成はdockerが行ってくれる(:/newDir)
docker run -v ~Desktop/DIR:/newDir IMAGE TAG
ユーザIDとグループIDを指定してコンテナをRUNする
docker run -it -u $(id -u):$(id -g) -v ~Desktop/DIR:/newDir IMAGE TAG
# コンテナではユーザIDを認識しない(I have no name)
ホストとコンテナをポートを指定して繋げる
docker run -p 8888:8888 IMAGE TAG
Memo
コンテナは実行環境として使用し、ホストのファイルシステムをコンテナにマウントする
DockerHubで命名するリポジトリ名は - で繋ぐ
my-repo123
docker build -t でimage名を指定しないとダンクリングイメージが生成される
# ダングリングイメージは<none>と表示される
<none>
# そのため、docker build -t でimage名を指定してimageを作成する
ファイルサイズを考慮して作成する
build context(docker_dir)について
-
buildに使わないファイルはbuild contextに格納しない。
-
大きいファイルはtarで圧縮してADDで解凍する
-
オプション -f(dockerfileが複数ある場合)
docker build -f PATH/fileName .
パーミッション(アクセス権限)
# Iから始まるのはシムリンク、dから始まるのはディレクトリ、-から始まるのはファイル
# r:読み取り、w:書き込み、x:実行
# 所有者、所有グループ、その他の順に表示される
コンテナがアクセスできる上限のCPUを設定
# 重要度の高いコンテナ: 2-4コア
# 中程度の重要度のコンテナ: 1-2コア
# 軽量なコンテナ: 0.5-1コア
docker run --cpus=2 your-image
コンテナがアクセスできる上限のメモリを設定
# 大規模なアプリケーション: 32-64GB
# 中規模のアプリケーション: 8-16GB
# 軽量なアプリケーション: 1-4GB
docker run --memory=16g your-image