参考資料
- centos:7: sig-cloud-instance-build/centos-7.ks at master · CentOS/sig-cloud-instance-build
- CentOS/CentOS-Dockerfiles: Dockerfiles for various common implementations
yum
RUNの最後には、yum clean all
を流すことで、ファイルサイズが縮小される。
RUN yum install -y git && yum clean all
ロケールの追加
以下のようにする必要がある。 yum updateしないと、現在入っているバージョンのglibc-commonが見つからず、 エラーになることがある。
RUN yum update -y && yum clean all
RUN rm -f /etc/rpm/macros.image-language-conf && \
sed -i '/^override_install_langs=/d' /etc/yum.conf && \
yum -y reinstall glibc-common
manを見たい場合
何かを動かすだけならmanを見ることはないのですが、 ちょっとLinuxのmanを見たい場合。
/etc/yum.conf
に以下の設定が入っているのが原因です。
tsflags=nodocs
yum.confを編集するか、以下のようにしてください。
yum --setopt=tsflags='' reinstall man-pages
systemdを起動
以下を参考にしました。
FROM centos:7
RUN yum update -y && yum clean all
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done) \
&& rm -f /lib/systemd/system/multi-user.target.wants/* \
&& rm -f /etc/systemd/system/*.wants/* \
&& rm -f /lib/systemd/system/local-fs.target.wants/* \
&& rm -f /lib/systemd/system/sockets.target.wants/*udev* \
&& rm -f /lib/systemd/system/sockets.target.wants/*initctl* \
&& rm -f /lib/systemd/system/basic.target.wants/* \
&& rm -f /lib/systemd/system/anaconda.target.wants/*
RUN yum -y install \
epel-release \
openssh-clients \
openssh-server \
&& yum clean all
RUN systemctl enable sshd.service
EXPOSE 22
VOLUME ["/sys/fs/cgroup", "/run"]
CMD ["/usr/sbin/init"]
起動方法は以下のようにしています。
停止する時は、docker stop
を使ってください。
docker run -it -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
-p 2222:22 \
--rm \
--name centos7-systemd \
centos7-systemd
ちょっとだけ変えてます。
- &&でつなぐようにした
- エラーが起きたときに終了するのでこっちの方がいいかなと。
- yum updateだけレイヤを分けてる
- テストする際はレイヤが分かれていたほうが便利なので、分けています。
- nginxは入れていない
- VOLUMEに/runを追加
- これがないと、macOS上では動きませんでした。
公式サイト
外部サイト
- Bug 1392855 – build-locale-archive: build-locale-archive.c:301: fill_archive: Assertion `used < head->namehash_used' failed.
- CentOS Dockerコンテナの日本語ロケール設定方法 - gsol-dev's blog