トップ 一覧 Farm 検索 ヘルプ 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