背景
- 必要な環境がdockerhubにない場合、自力でカスタマイズしたdockerfileを作成したい。
- その実験環境として、osのみが入ったコンテナ環境が欲しい。
目標
- 最低限のosのみが入ったコンテナを作れるようになる。
osの選定
- dockerで構築できるos imageは色々ある。
- 今回は、imageの軽量さを重視し、Alpine Linuxを採用した。 ※Alpine:Linuxディストリビューションの一つ
前提環境
- macOS 11.4 (20F71)
- arm64(M1)
フォルダ構成
.
├─ Dockerfile
└─ docker-compase.yml
ファイルの中身
FROM alpine:3.16.2@sha256:1304f174557314a7ed9eddb4eab12fed12cb0cd9809e4c28f29af86979a3c870
WORKDIR /app
version: '3'
services:
alpine:
restart: always
build:
context: .
dockerfile: Dockerfile
stdin_open: true
tty: true
volumes:
- .:/app
コンテナの起動からコンテナの中に入る
(1)ymlからコンテナ起動 $docker-compose up -d --build
(2)コンテナの中に入る(alpineの箇所はservice名に応じて変更する) $docker-compose exec alpine /bin/sh
ファイルの中身解説あり
#dockerhubのalpineのimageを指定
FROM alpine:3.16.2@sha256:1304f174557314a7ed9eddb4eab12fed12cb0cd9809e4c28f29af86979a3c870
#docker内部のコマンド実行場所の指定
#今回はappディレクトリがないので、appディレクトリの作成も同時に行われる
WORKDIR /app
#docker-composeのファイルバージョンを指定
#ここでは「3」でバージョン3を指定している
version: '3'
services:
#service名を指定
#ここでは「alpine」と指定している
alpine:
#実行時に常に再起動するように指定
#ここでは「always」で常に再起動を指定している
restart: always
#立ち上げの設定を指定
build:
#dockerfileの参照先を指定
#ここでは「.」でカレントディレクトリを指定している
context: .
#使用するdockerfile名を指定
#ここでは「Dockerfile」と指定している
dockerfile: Dockerfile
#標準入出力(ターミナル?)をコンテナと結びつける設定
#ここでは「true」で結びつけている?
stdin_open: true
#キーボード入力をコンテナが受け付けるようにする設定
#ここでは「true」で結びつけている?
tty: true
#dockerfileがあるカレントディレクトリとコンテナ内部のディレクトリをマウントする設定
#ホスト側:コンテナ側 の順番で記載する
#ここでは、ホスト側「.」でカレント:コンテナ側「/app」でappディレクトリとマウントしている
volumes:
- .:/app
参考資料
Docker image(イメージ)の違い:alpine,bullseye, buster, slim, stretch, jessie, slim-buster, windowsservercore, latestどれを選ぶべきか?
DockerでPythonやRubyなど各言語のイメージを選ぶときに、alpine, buster, slim, stretch, jessie, slim-buster, windowsservercore, latestなど選択肢がたく
403 Forbidden
Qiita記事
【環境構築】dockerでAlpine Linux(os)だけのコンテナを立ち上げる方法 - Qiita
背景必要な環境がdockerhubにない場合、自力でカスタマイズしたdockerfileを作成したい。その実験環境として、osのみが入ったコンテナ環境が欲しい。目標最低限のosのみが入ったコ…