Dockerの自己流イメージ作成方法

こんにちは。前回の記事で Dockerイメージを作ることに成功したので、手順を少しだけ踏み込んだ形でご紹介できたらなと思い、寄稿いたしました。

ゴールを決める

私は自分のMACに直接Jekyll環境を入れたくなかったので、Jekyllを動かすことをゴールにしました。

 Docker ディスクトップをインストールする

コマンドのみでの導入も良いのですが、私は視覚的に分かりやすい Dockerディスクトップを入れました。ここから先はDockerディスクトップを立ち上げた状態です。

 Dockerで使うOSを探す

Docker対応のOS(Linux系)を探します。本当はOSではないらしいのですが、あんまり気にせずここではOSと言います。記事は古いですが、Docker公式OS一覧に一覧がありました。

とりあえず空のイメージを作る

空のイメージを作って、runコマンドを打ちます。コマンドはメモしてゆきます。ここで使った Dockerコマンドは下記です。

docker run -it --name=”コンテナ名" OS名:バージョン シェルのパス

これでOSの初期状態のコンテナができますので、コマンドを打ち込んでゆきます。ただし、visudoなど、ファイルを編集する命令はコマンドで済ませるようにします。再編集する際は下記の Dockerコマンドを使います。

docker start コンテナ名
docker exec -it コンテナ名 シェルのパス

目的が達成できたら Dockerfileを作る

OS起動からDockerのイメージを作るためのコマンド群をDockerfile(拡張子なし)記述してゆきます。私の場合、下記のようなファイル内容にしました。


FROM	alpine
RUN	apk add  --no-cache bash sudo curl git
RUN	addgroup -S user
RUN	adduser -S user -G user -s /bin/bash
RUN	echo 'user ALL=(ALL:ALL) NOPASSWD:ALL' | sudo EDITOR='tee -a' visudo
RUN	visudo -c
RUN	su -s /bin/bash - user
COPY --chown=user:user ./Jekyll /home/user/Jekyll/
RUN	sudo apk add --no-cache python3 py3-pillow
RUN	curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
RUN	echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.profile
RUN	echo 'eval "$(rbenv init - bash)"' >> ~/.profile
ENV	source ~/.profile
RUN	sudo apk add  --no-cache alpine-sdk openssl-dev zlib-dev
ENV	rbenv install -v 3.1.2
ENV	rbenv global 3.1.2
RUN	sudo apk add  --no-cache  build-base ruby-dev linux-headers
RUN	gem install jekyll bundler
RUN	gem install minima
RUN	gem install jekyll-feed
RUN	gem install jekyll-sitemap
RUN	gem install jekyll-paginate-v2
ENV	bundle install
ENV	bundle add webrick
CMD ["/bin/bash"]

イメージを作る

MACの場合の話になりますが、cd  Dockerfileのある階層に移動し、「Jekyll」フォルダを作った後(マウント先)、イメージを作るコマンドを打ちます。

docker build -t イメージ名:適当なタグ名 .

うまくいけば止まることなく、イメージが完成します。失敗した場合はコードを見直します。またキャッシュが溜まるので随時消してゆきます。キャッシュ削除は下記コマンド。

docker builder prune -f

イメージができたら、run、exec どちらでも好きな方で走らせます。runの場合は、コンテナを抜けると初期化されます。その代わりrunでないと実行できないオプション(-pなど)もあるので、私はイメージに必要なものを全て書き込みました。


こんな感じでした。あくまで一例なので、細かいことは省いています。こんな風に作る人も居るんだなー程度に捉えていただけたら幸いです。

お粗末さまでした🙇

タイトルとURLをコピーしました
ブログ更新しました✨ / 2024年10月09日 ブログはこちら