🤏
[Docker] Dockerのコマンド逆引きとか
はじめに
これは自分用です。
わかりにくいかもしれませんがご了承ください。
基本コマンド
コンテナをビルドする
docker build [OPTIONS] <PATH(Dockerfileがあるディレクトリ)>
-
-t "<イメージ名>:<タグ>"
タグはなくてもいい\cdots -
--ssh default=$SSH_AUTH_SOCK
--mount=type=ssh のときに使う
動いているコンテナを取得
docker ps
docker container ls
docker container list
docker container ps
OPTIONS:
-
-a
,--all
動いてないやつも出す -
-q
,--quiet
IDだけズラッと
便利コマンド
コンテナを一掃する
止まってるやつだけ
docker container prune
-f
をつけるとプロンプトが出ない
全部吹き飛ばす
docker rm -f $(docker ps -aq)
ビルド(Dockerfileなど)
alpineのベストプラクティス
# Dockerfile
RUN apk update
RUN apk add --no-cache <...package name>
別のステージからファイルを持ってくる
# Dockerfile
COPY /run-example-app /bin/
ビルド時にsshを使いたい(プライベートリポジトリなど)
Dockerfileに
RUN \
mkdir -p -m 0600 ~/.ssh && \
ssh-keyscan github.com >> ~/.ssh/known_hosts && \
git config --global url."git@github.com:".insteadOf https://github.com/
RUN ssh git@github.com
これ試してないから動くかどうかわからんけど多分動くと信じて
docker build --ssh default
明示的にしたいときは
docker build --ssh default=$SSH_AUTH_SOCK
composeの場合
service:
container:
build:
context: .
ssh:
- default
参考
その他(名前案が思いつかない)
.envから環境変数を設定したい
docker run --env-file .env
とか
# compose.yaml
service:
container:
...
env_file: .env
#とか
env_file:
- .env
- .env.dev
単一ファイルをread-onlyでマウント
docker run --mount type=bind,source=./data.json,target=/app/data.json,readonly <image name>
# volumeのほうがいい場合
docker run -v ./data.json:/app/data.json:ro <image name>
composeで、あるコンテナが起動したあとに起動させたい
# compose.yaml
service:
db:
image: example-db-image:latest
db-required-backend:
image: example-backend-image:latest
depends_on: db
Discussion