安裝mysql鏡像
準備
# 下載mysql鏡像
docker pull mysql:5.6
# 在宿主機創(chuàng)建目錄
mkdir /opt/docker-software/mysql
mysql配置文件設置
在/opt/docker-software/mysql目錄創(chuàng)建my.cnf,主要填寫mysql的關鍵配置,填寫以下內(nèi)容:
[mysqld]
user=mysql
default-storage-engine=INNODB
character_set_server = utf8
init_connect='SET NAMES utf8'
max_connections = 1000
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
max_allowed_packet=64M
[mysqld_safe]
log-error=/var/log/mysql/mysqld.log
pid-file=/var/lib/mysql/mysqld.pid
鏡像啟動一個容器
#啟動第一個mysql,映射端口為3306
docker run -p 3306:3306 --name mysql-3306 --restart=always \
-v /opt/docker-software/mysql/my.cnf:/etc/mysql/my.cnf \
-v /opt/docker-software/mysql/3306/data/:/var/lib/mysql \
-v /opt/docker-software/mysql/3306/log/:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.6
#啟動第二個mysql,映射端口為3307
docker run -p 3307:3306 --name mysql-3307 --restart=always \
-v /opt/docker-software/mysql/my.cnf:/etc/mysql/my.cnf \
-v /opt/docker-software/mysql/3307/data/:/var/lib/mysql \
-v /opt/docker-software/mysql/3307/log/:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.6
命令解釋:
- -p是將容器的3306端口映射到宿主機的3306|3307端口上
- -v是將容器的目錄或者文件映射到宿主機器上
- mysql鏡像啟動時默認加載的是/etc/mysql/my.cnf,所以我們將/etc/mysql/my.cnf映射到了宿主機的/opt/docker-software/mysql/my.cnf,保證mysql啟動時加載的是我們自己配置的my.cnf
- 在my.cnf中我們配置的數(shù)據(jù)文件的目錄是/var/lib/mysql,所以我們將此目錄映射到宿主機的/opt/docker-software/mysql/3306/data/和/opt/docker-software/mysql/3307/data/。這將保證mysql的數(shù)據(jù)文件存儲在宿主機指定的目錄中,防止容器停止重啟時丟失。
- MYSQL_ROOT_PASSWORD為初始化mysql root用戶的密碼
測試
使用mysql工具分別連接3306和3307測試mysql的是否能夠使用
參考資料
docker官方安裝mysql鏡像的參考地址: https://hub.docker.com/_/mysql/