1. 程式人生 > >docker安裝mysql5.7 並執行、保證容器及外部的通訊

docker安裝mysql5.7 並執行、保證容器及外部的通訊

docker 初學者的一些隨筆:

1、下載映象:sudo docker pull mysql:5.7*********************************************************************************************************************這一步,就是 先虛擬建一個 mysql ,將其中的 mysql 原生 配置檔案拷貝出來,進行自定義修改1、 拷貝容器中的 資料庫資訊、my.cnf 到宿主機中,方便維護docker run --rm --name mysqlTemp -it -v /data/mysql3307/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456  mysql:5.7 /bin/bash
-- rm 退出後就刪除該容器-it 互動模式/bin/bash 進入 bash 命令模式2、拷貝配置檔案(注意這裡的拷貝命令,是docker 中的拷貝,而不是宿主機的拷貝)cp /etc/mysql/my.cnf /var/lib/mysql將 etc/myql/my.cnf 檔案拷貝到 /var/lib/msyql3、 改變 宿主機下 data 目錄的許可權chmod -R 777 /data防止不同步3、 在宿主機自定義 my.cnf 的mysql配置檔案, 參考附件*********************************************************************************************************************2、執行容器: docker run --name mysql3307
--network host -v /data/mysql3306/my.cnf:/etc/my.cnf -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --character-set-server=utf8 --collation-server=utf8_general_ci --name 容器名稱-p 埠對映-v 配置檔案對映:將 宿主機上修改的自定義配置檔案,對映到 容器中 掛載的檔案修改後,在重啟容器後生效-e MYSQL_ROOT_PASSWORD   設定root密碼-d 守護程序模式執行-character-set-server --collation-server 字符集設定
--network=host 將主機的IP與容器的IP分享: 這一條是將 容器 和 宿主機的 IP 共享,這樣 修改 mysql 埠,就能保證 各個容器、宿主機之間的網路通訊。 還有一種辦法, 建立網路橋接, 這種方法沒有研究透*********************************************************************************************************************關閉防火牆:如果沒有安裝 iptables:yum install iptables-services安裝後:service iptables status 檢視狀態service iptables stop 停止service iptables start 開始*********************************************************************************************************************1、 宿主機訪問 各個容器的mysql: mysql -h127.0.0.1 -P3307 -uroot -p2、進入容器,訪問 msyql[[email protected] ~]# docker exec -it 356c999b5cd0 bash [email protected]356c999b5cd0:/# show databases;bash: show: command not found[email protected]356c999b5cd0:/# mysql -uroot -pEnter password: Welcome tothe MySQL monitor. Commands endwith ; or \g.Your MySQL connection idis8Server version: 8.0.11 MySQL Community Server - GPLCopyright (c) 2000, 2018, Oracle and/orits affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/oritsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;.