逆引きマニュアル: Docker: CentOS 7イメージの使い方

投稿日: 更新日:

参考資料

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上では動きませんでした。

公式サイト

外部サイト

マニュアル

  • Docker
  • CentOS
  • centos7: まだありません。
  • systemd
  • man: まだありません。
  • locale: まだありません。