Dockerコンテナの本物のcentosイメージにZabbix-server-mysqlをインストールしようとしています。
[root@desktop]# docker run --rm -ti centos:latest /bin/bash
[root@0e4f336ff674]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
[root@0e4f336ff674]# rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
[root@0e4f336ff674]# yum install http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-server-mysql-3.2.3-1.el7.x86_64.rpm
このマニュアル: https://www.zabbix.com/documentation/3.2/manual/installation/install_from_packages/server_installation_with_mysqlMySQLサーバーにzabbix DBを作成する必要があるため、インストール中に「/usr/share/doc/zabbix-server-mysql-3.2.3/create.sql.gz」ファイルを作成する必要があります。しかし、このファイルが欠落しているようです。
[root@0e4f336ff674]# ls -ld /usr/share/doc/zabbix-server-mysql-3.2.3/create.sql.gz
ls: cannot access /usr/share/doc/zabbix-server-mysql-3.2.3/create.sql.gz: No such file or directory
興味深いのは、このファイルが実際に* .rpmファイルに存在することです。
[root@0e4f336ff674]# rpm2cpio http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-server-mysql-3.2.3-1.el7.x86_64.rpm | cpio -t | grep create
./usr/share/doc/zabbix-server-mysql-3.2.3/create.sql.gz
/usr/share/doc/zabbix-server-mysql-3.2.3/
また、パッケージには、ディレクトリを削除できるインストール前またはインストール後のスクリプトがないようです。
[root@0e4f336ff674]# rpm -qp --scripts http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-server-mysql-3.2.3-1.el7.x86_64.rpm
preinstall scriptlet (using /bin/sh):
getent group zabbix > /dev/null || groupadd -r zabbix
getent passwd zabbix > /dev/null || \
useradd -r -g zabbix -d /var/lib/zabbix -s /sbin/nologin \
-c "Zabbix Monitoring System" zabbix
:
postinstall scriptlet (using /bin/sh):
if [ $1 -eq 1 ] ; then
# Initial installation
/usr/bin/systemctl preset zabbix-server.service >/dev/null 2>&1 || :
fi
/usr/sbin/update-alternatives --install /usr/sbin/zabbix_server \
zabbix-server /usr/sbin/zabbix_server_mysql 10
:
<...>
それでは、何が問題なのでしょうか?
PS:既存の公式zabbix-on-dockerイメージを知っています:github.com/zabbix/zabbix-docker
ベストアンサー1
おそらく、システムで制御されているオペレーティングシステムでコマンドを実行するためにシステムデーモンと対話しようとしているので、「systemctlプリセット」をブロックします。ただし、Dockerコンテナにはsystemdデーモンはありません。
この潜在的な問題を回避するために、次の方法を試してみてください。https://github.com/gdraheim/docker-systemctl-replacement「systemctlプリセット」を実行します。