pwd | pbcopy
のように呼ぶと、実行結果をクリップボードにコピーできる。
pwd | pbcopy
のように呼ぶと、実行結果をクリップボードにコピーできる。
$ time pwd /tmp real 0m0.001s user 0m0.000s sys 0m0.000s
このように、かかった時間が表示される。3つの行はそれぞれ、次の通りの意味を持つ。
real
: 起動から終了までに経過した実時間 (real time) (iii) システム CPU 時間
user
: ユーザー CPU 時間
sys
: システム CPU 時間
https://linuxjm.osdn.jp/html/LDP_man-pages/man1/time.1.html (C) JM Projectより。
Dockerfile
には、FROM
より前の段階でARG
を置くことができるFROM
より後の段階でそのビルド引数を使用したければ、再度宣言が必要下記記事より。
# Dockerfile # 使用するDebianのバージョンを固定 ARG DEBIAN_CODENAME=bullseye # 使用するRubyのバージョンを固定 ARG RUBY_VERSION=3.1.2 FROM ruby:${RUBY_VERSION?}-${DEBIAN_CODENAME?} (中略) ARG DEBIAN_CODENAME ARG RUBY_VERSION
一般的に、Dockerfile
はFROM
で始めることが多い。ただし、ARG
を先に置くこともできる。
今回の用法がまさにそれで、使用するイメージのタグをビルド引数として与えるようなときに使用できる。
1点注意が必要で、 FROM
より前に宣言したARG
は、ビルドステージの外にあるため、FROM
より後で再利用したい場合は、再度宣言しない限り使えない1。上記の例だと、ARG DEBIAN_CODENAME
ARG RUBY_VERSION
が該当する。
An
ARG
declared before aFROM
is outside of a build stage, so it can’t be used in any instruction after aFROM
. To use the default value of anARG
declared before the firstFROM
use anARG
instruction without a value inside of a build stage:https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact
推奨されるのは、compose.yaml
である。
ただし、後方互換のために docker-compose.ya?ml
もサポートされる実装であるべき(SHOULD)と公式ドキュメントに記載がある。
なお、 compose.yml
も使用できる。
まず、下記は Docker 公式による説明である。
The default path for a Compose file is
compose.yaml
(preferred) orcompose.yml
in working directory. Compose implementations SHOULD also supportdocker-compose.yaml
anddocker-compose.yml
for backward compatibility. https://docs.docker.com/compose/compose-file/#compose-file
続いて、下記は上記の日本語訳である。訳は筆者による。
Composeファイルのデフォルトパスはワーキングディレクトリの
compose.yaml
(好ましい)、 またはcompose.yml
である。 Composeの実装はdocker-compose.yaml
とdocker-compose.yml
も後方互換のためサポートすべき(SHOULD)である。
つまり compose.yaml
を使っておけば、間違いなさそうである。
Docker Composeの run と exec は、どちらも同じような効果が得られる。つまり、コンテナの中に入ったり、コンテナ上でプログラムを実行したりできる。
しかし、もう少し異なった視点で見ると、それぞれ異なる機能を持っているのがわかる。
docker compose runは、新たにイメージからコンテナを作って実行する。この時、--service-ports というオプションをつけておけば、予めdocker-compose.yml や compose.yml で指定したポートをバインドした状態で実行してくれる。
一方、docker compose execは、既に docker compose up で動いているコンテナを使ってコマンドを実行できる。
使い分けとしては、既に docker compose up しているこんてながあれば、exec がおすすめである。run はコンテナ作成のオーバーヘッドがあるので、やや時間がかかる。
runは、他のターミナルと独立して何か実行したいときに便利である。ボリュームをマウントしていない限り、他のコンテナでファイルに加えた変更が連動する事はない。
ls -1
でカレントディレクトリ内のファイルとディレクトリの一覧を、1エントリ1行で出力する。
wc -l
は、標準入力に与えられたテキストの行数をカウントしてくれる。
これらを組み合わせると、カレントディレクトリにファイルがいくつあるかを知ることができる。
下記はその実行例。
$ ls -1 | wc -l 6