도커 컨테이너의 정품 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
:
<...>
그렇다면 무엇이 문제일까요?
추신: 기존 공식 zabbix-on-docker 이미지를 알고 있습니다: github.com/zabbix/zabbix-docker
답변1
아마도 시스템으로 제어되는 운영 체제에서 명령을 실행하기 위해 시스템 데몬과 대화하려고 하기 때문에 "systemctl 프리셋"을 차단할 것입니다. 그러나 도커 컨테이너에는 systemd 데몬이 없습니다.
이 잠재적인 문제를 피하기 위해 다음 방법을 시도해 볼 수 있습니다.https://github.com/gdraheim/docker-systemctl-replacement"systemctl 프리셋"을 실행합니다.
답변2
~에 따르면https://github.com/tianon/docker-brew-ubuntu-core/issues/122, 다음 위에 추가해야 합니다 Dockerfile
.
# Do not exclude man pages & other documentation
RUN rm /etc/dpkg/dpkg.cfg.d/excludes
답변3
Docker CentOS 7 컨테이너 내에서 실행되는 동안 파일을 설치하는 방법을 찾을 수 없었지만 create.sql.gz
(정상적으로 실행되는 systemd로 시작할 수 있음에도 불구하고) 다음 해결 방법을 수행했습니다.
wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/4.2.6/zabbix-4.2.6.tar.gz/download
mv download download.tar.gz
tar -xzvf download.tar.gz
cd zabbix-4.2.6/database/mysql
mysql -uzabbix -p[password] zabbix < schema.sql
mysql -uzabbix -p[password] zabbix < images.sql
mysql -uzabbix -p[password] zabbix < data.sql
그런 다음 Zabbix 프런트엔드 설치를 완료할 수 있습니다.
create.sql.gz
짜증나지만 이 방법은 작동하며 다른 곳에서 파일을 가져오지 않고도 이 작업을 수행할 수 있는 유일한 방법입니다.
답변4
/etc/yum.conf
CentOS Docker 이미지의 Yum 구성 파일에는 tsflags=nodocs
문서 설치를 방해하는 콘텐츠가 포함되어 있습니다.
Zabbix create.sql.gz
파일은 설명서의 일부로 설치되므로 누락되었습니다.
이 파일을 설치하려면 Zabbix를 설치하기 전에 create.sql.gz
파일의 행을 주석 처리 하거나 수정하여 no를 제거하십시오 .tsflags
/etc/yum.conf
nodocs