morito

個人的に勉強したことのメモを投稿していく技術ブログ。最近はWebアプリ開発と量子コンピュータの勉強をしてます。

LinuC勉強用のCentOS環境をDockerで作った

最近,会社の先輩におすすめされてLinuCの勉強を始めました

とりあえず公式公認の教科書を買って
載っているコマンドを実際に使って覚えていくことにしました

ただ、普段使いしているのはMacOSなので試験範囲で使えないコマンドもあるし、
環境をいじるのも嫌だったのでDockerコンテナで勉強用の環境を作ることにしました

手順

Dockerfile

FROM centos:latest

ARG USER 
ARG PASSWD

# ユーザーを追加してパスワードを設定
RUN yum -y update && yum clean all && \ 
    yum -y install sudo && \
    yum -y install which && \
    useradd -m $USER && \
    echo "$USER:$PASSWD" | chpasswd && \
    echo "$USER ALL=(ALL) ALL" >> /etc/sudoers

# 日本語化設定
RUN yum -y reinstall glibc-common 
RUN yum -y install glibc-langpack-en glibc-locale-source
RUN localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
RUN echo 'LANG="ja_JP.UTF-8"' >  /etc/locale.conf
ENV LANG="ja_JP.UTF-8"  \
    LANGUAGE="ja_JP:ja" \
    LC_ALL="ja_JP.UTF-8"

上が使用したDockerfileです

rootユーザーだけだと不便なのでユーザーを追加してパスワードを設定しています

また、日本語化も行っています

使い方の手順

buildします。--build-argで変数をわたせるらしい

> docker build -t mycentos_ja:latest . --build-arg USER=[user name] --build-arg PASSWD=[password]

起動

> docker run -d mycentos_ja:latest /sbin/init

ユーザー指定でシェル実行。コンテナに入ります

> docker exec -it [container ID] su - [user name]

日本語化の確認をします

[morito@4483559028a3 ~]$ locale # locale確認
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=
[morito@4483559028a3 ~]$ date 
2021年  3月 30日 火曜日 03:35:06 UTC # 日本語になってる

sudoを確認します

[morito@4483559028a3 ~]$ sudo visudo

一番下にmorito ALL=(ALL) ALLという記述が確認できました

さいごに

locale周りは全然よくわかってないです

余計なlocaleを削除してDockerの容量を減らしたりできるらしいけど
よくわからん。今度暇な時に調べようと思います。

参考

Docker(CentOS)イメージから新規ユーザを追加し運用できるようにするまで

Docker 日本語環境構築まとめ 2

Dockerfileで日本語ロケールを設定する方法。およびロケールエラーの回避方法。