centos容器,安裝mariadb伺服器
我正在嘗試在 docker 映像(CentOS Linux 版本 7.3.1611(核心))上執行 mariadb 伺服器。
我使用命令 yum install mysql 安裝 mariadb。安裝完成後,我嘗試執行命令 mysql 但出現此錯誤:
ERROR 2002 (HY000): 無法通過套接字 ‘/var/lib/mysql/mysql.sock’ 連接到本地 MySQL 伺服器 (2)
/var/lib/mysql 中的目錄為空
/etc 中的 my.conf 文件包含:
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mariadb according to the # instructions in http://fedoraproject.org/wiki/Systemd [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid # # include all files from the config directory # !includedir /etc/my.cnf.d
使用執行命令
systemctl start mariadb
我收到此錯誤:獲取 D-Bus 連接失敗:不允許操作
我犯了什麼錯誤嗎?
聽起來你是 Docker 新手。您可能需要花一些時間閱讀文件和範例,以更好地了解事物的工作原理。
首先,簡單地安裝軟體並不一定能讓它執行,CentOS 和其他 Red Hat 變體當然就是這種情況。在裸機主機上,您只需執行
systemctl start mariadb
以啟動它,但這僅適用於正常系統,/sbin/init
systemd 的組件是作為引導過程的一部分啟動的。在 docker 容器內,預設情況下*沒有執行任何內容。*例如,如果您要
ps -fe
在主機上執行,您可能會看到數百個正在執行的程序。如果您要執行:
docker run centos ps -fe
你會看到:
UID PID PPID C STIME TTY TIME CMD root 1 0 0 11:12 ? 00:00:00 ps -fe
因此,您無法使用正常機制啟動服務。相反,您需要 (a) 手動啟動服務並 (b) 確保您已啟動它以使其保持在前台(因為 Docker 容器在前台程序退出或將其自身置於後台時退出)。
如果你看一下官方的 mariadb 鏡像,你會發現它最終只是呼叫
mysqld
來啟動服務。聽起來您想在容器內啟動 mariadb,然後嘗試在同一個容器內進行互動。雖然這不是使用 docker 的正常方式,但您可以…
$ docker run -it centos bash [root@c1d6adf5c8bb /]# yum -y install mariadb-server [root@c1d6adf5c8bb /]# /usr/libexec/mariadb-prepare-db-dir mariadb.service [root@c1d6adf5c8bb /]# /usr/bin/mysqld_safe --basedir=/usr & [root@c1d6adf5c8bb /]# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 1 Server version: 5.5.52-MariaDB MariaDB Server Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
更典型的是,您將使用 a
Dockerfile
建構一個 mariadb 映像(或僅使用官方映像),啟動它,然後mysql
在您的主機或另一個容器中使用以與該 mariadb 實例互動。