トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

Diary/2024-12-11

Docker

ぱっと使えるようになっておきたいなあ,と,普段使いにしてみようかな.
コンテナは
https://docs.docker.jp/develop/develop-images/dockerfile_best-practices.html

Dockerfile で定義したイメージによって生成するコンテナは、
可能な限り一時的( エフェメラルephemeral )であるべきです。
一時的が意味するのは、コンテナとは停止および破棄可能であり、
その後も極めて最小限のセットアップと設定により、
再構築や置き換えが可能だからです。

だそうなので,普段使いにするにしてもぶくぶく太らせるのも,なにか違うようだけど.


ディレクトリ構成

├── docker-compose.yml
├── container/
│  ├── Dockerfile
│  └── install.sh
└── work/

とか用意して

UID=$(id -u) GID=$(id -g) docker compose build
docker compose up -d

で起動.

docker compose exec container bash

でログインして,あれこれ.

docker compose donw

で片付け.

Dokerfileとdocker-compose.yml,install.shを以下のように.

Dockerfile

FROM ubuntu:22.04

RUN apt update && apt install -y sudo
RUN ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
RUN chmod 755 /root/install.sh
RUN /root/install.sh

ARG UID
ARG GID

ENV USER=user \
    GROUP=user \
    HOME=/home/user

RUN groupadd $GROUP -g ${GID:-1000} && \
    useradd -g $GROUP -G sudo -u ${UID:-1000} -m -s /bin/bash $USER && \
    echo 'user:password' | chpasswd && \
    echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

USER $USER
WORKDIR $HOME

docker-compose.yml

services:
  container:
    hostname: container
    build:
      context: ./container
      dockerfile: Dockerfile
      args:
        - UID=${UID- }
        - GID=${GID- }
    volumes:
      - ./work:/home/user
    stdin_open: true
    tty: true
    networks:
      network: {}

networks:
  network:
    driver: bridge

install.sh

apt update