Docker
アプリをコンテナとしてパッケージ・実行するツール。_moc-web-infra
基本
docker run <IMAGE>で起動、docker exec <CONTAINER>でコマンド実行。- Docker 1.11 以降は containerd + OCI(runc)上に構築されている。
ボリューム
- bind mount: ホストのディレクトリをコンテナにバインド(
-v $(pwd):/mnt)。 - volume mount: Docker 管理のボリュームを作って割り当て(
docker volume create,-v example-volume:/mnt)。
テスト・運用Tips
- Docker outside of Docker (DooD) で pytest から DBアクセステストを副作用なく実行する。
- 起動し続けたいコンテナは
CMD/ENTRYPOINTでsleep infinityを入れる、tty: trueにする(でないと即終了・再起動ループ)。 - docker-compose で固定IP・複数ノードのクラスタも組める(
networks.<net>.ipv4_address,extra_hostsで/etc/hosts追記)。
関連
- kubernetes(コンテナオーケストレーション) / software-architecture-characteristics
原典メモ(notes/Docker より統合)
Docker
install
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.iodocker run <IMAGE>docker exec <CONTAINER>-
bind mount: hostのディレクトリとcontainerのディレクトリをバインド
$ docker container run \
--rm \
-v $(pwd):/mnt \
-it ubuntu:18.04 \
bash- volume mount: マウント用のディレクトリを作る
$ docker volume create example-volume
$ docker volume ls
DRIVER VOLUME NAME
local example-volume
$ docker container run \
--rm \
-v example-volume:/mnt \
-it ubuntu:18.04 \
bash