Docker安装Mysql5.7
Docker安装
系统版本:CentOS Linux release 7.5.1804 (Core)
如果之前有装过docker可以先卸载旧版本再安装,没有则跳过。
yum remove dockerdocker
-clientdocker
-client-latestdocker
-commondocker
-latestdocker
-latest-logrotatedocker
-logrotatedocker
-engine
安装软件包:
yuminstall -y yum-utilsdevice
-mapper-persistent-datalvm2
设置镜像仓库:
yum-config-manager --add-repohttps:
//download.docker.com/linux/centos/docker-ce.repo
yuminstall -y docker-ce docker-ce-cli containerd.io
启动docker:
systemctl start docker
可以进行测试:
# docker run hello-world
Unable to find image "hello-world:latest" locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:fc6a51919cfeb2e6763f62b6d9e8815acbf7cd2e476ea353743570610737b752
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
安装Mysql5.7
可以看下镜像库里的mysql相关镜像:
# docker search mysqlNAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open
-source relation… 9191 [OK]mariadb MariaDB is a community
-developed fork of MyS… 3273 [OK]mysql
/mysql-server Optimized MySQL Server Docker images. Create… 679 [OK]centos
/mysql-57-centos7 MySQL 5.7 SQL database server 70mysql
/mysql-cluster Experimental MySQL Cluster Docker images. Cr… 63centurylink
/mysql Image containing mysql. Optimized to be link… 61 [OK]deitch
/mysql-backup REPLACED! Please use http://hub.docker.com/r… 41 [OK]bitnami/mysql Bitnami MySQL Docker Image 36 [OK]
tutum/mysql Base docker image to run a MySQL database se… 34
schickling/mysql-backup-s3 Backup MySQL to S3 (supports periodic backup… 29 [OK]
prom/mysqld-exporter 27 [OK]
linuxserver/mysql A Mysql container, brought to you by LinuxSe… 24
centos/mysql-56-centos7 MySQL 5.6 SQL database server 19
circleci/mysql MySQL is a widely used, open-source relation… 19
mysql/mysql-router MySQL Router provides transparent routing be… 14
arey/mysql-client Run a MySQL client from a docker container 13 [OK]
databack/mysql-backup Back up mysql databases to... anywhere! 10
openshift/mysql-55-centos7 DEPRECATED: A Centos7 based MySQL v5.5 image… 6
fradelg/mysql-cron-backup MySQL/MariaDB database backup using cron tas… 5 [OK]
genschsa/mysql-employees MySQL Employee Sample Database 4 [OK]
devilbox/mysql Retagged MySQL, MariaDB and PerconaDB offici… 2
ansibleplaybookbundle/mysql-apb An APB which deploys RHSCL MySQL 2 [OK]
jelastic/mysql An image of the MySQL database server mainta… 1
monasca/mysql-init A minimal decoupled init container for mysql 0
widdpim/mysql-client Dockerized MySQL Client (5.7) including Curl… 0 [OK]
第一条就是官方的镜像,目前是8.0版本,由于我们需要的是5.7的所以要带上版本号来拉镜像。
# docker pull mysql:5.75.7: Pulling from library/mysql
Image docker.io/library/mysql:5.7 uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
68ced04f60ab: Downloading
f9748e016a5c: Downloading
da54b038fed1: Downloading
6895ec5eb2c0: Downloading
111ba0647b87: Downloading
c1dce60f2f1a: Downloading
702ec598d0af: Downloading
63cca87a5d4d: Downloading
ec05b7b1c5c7: Downloading
834b1d9f49b0: Downloading
8ded6a30c87c: Downloading
5.7: Pulling from library/mysql
68ced04f60ab: Pull complete
f9748e016a5c: Pull complete
da54b038fed1: Pull complete
6895ec5eb2c0: Pull complete
111ba0647b87: Pull complete
c1dce60f2f1a: Pull complete
702ec598d0af: Pull complete
63cca87a5d4d: Pull complete
ec05b7b1c5c7: Pull complete
834b1d9f49b0: Pull complete
8ded6a30c87c: Pull complete
Digest: sha256:f4a5f5be3d94b4f4d3aef00fbc276ce7c08e62f2e1f28867d930deb73a314c58
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
查看本地镜像
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE
mysql
5.7 84164b03fa2e 15 hours ago 456MBhello
-world latest fce289e99eb9 14 months ago 1.84kB
可以看到版本是5.7
创建所需目录,用以挂载外部配置文件和数据目录:
mkdir /datamkdir /data/mysql3306mkdir /data/mysql3306/conf.dmkdir /data/mysql3306/data/
编辑配置文件,以下配置文件仅供参考:
# vim /data/mysql3306/my.cnf[client]
port
= 3306socket
= /tmp/mysql.sock#default
-character-set = utf8mb4## The MySQL server
[mysqld]
port
= 3306socket
= /tmp/mysql.sockuser
= mysqlskip
-external-lockingskip
-name-resolve#skip
-grant-tables#skip
-networking######################################
dir#basedir
=/usr/local/mysqldatadir
=/var/lib/mysqltmpdir
=/var/lib/mysqlsecure_file_priv
=/var/lib/mysql###################################### some app
log
-error=mysql.errpid
-file=/var/lib/mysql/mysql.pidlocal
-infile=1event_scheduler
=0federated
default
-storage-engine=InnoDB#default
-time-zone= "+8:00"log_timestamps
=SYSTEMcharacter
-set-client-handshake = FALSEcharacter
-set-server = utf8mb4collation
-server = utf8mb4_unicode_ciinit_connect
="SET NAMES utf8mb4"#
5.6explicit_defaults_for_timestamp
=true#fulltext
innodb_optimize_fulltext_only
ft_min_word_len
=1#ft_max_word_len
innodb_ft_min_token_size
=1###################################### memory allocate and myisam configure
max_connections
=3000#back_log
=200max_connect_errors
=10000key_buffer_size
= 16Mmax_allowed_packet
= 16Mtable_open_cache
= 10240sort_buffer_size
= 2Mread_buffer_size
= 2Mread_rnd_buffer_size
= 2Mjoin_buffer_size
=2Mmyisam_sort_buffer_size
= 4M#net_buffer_length
= 2Mthread_cache_size
= 24query_cache_type
=1query_cache_size
=256Mquery_cache_limit
=32Mtmp_table_size
=1Gmax_heap_table_size
=1G#thread_concurrency
=48###################################### replication
server
-id = 19216810951log
-bin=mysql-binbinlog_format
=mixedmax_binlog_size
=1G#binlog_cache_size
=512Mlog_slave_updates
=truelog_bin_trust_function_creators
=trueexpire_logs_days
=15replicate
-ignore-db=mysqlreplicate
-ignore-db=testreplicate
-ignore-db=information_schemareplicate
-ignore-db=performance_schemareplicate
-wild-ignore-table=mysql.%replicate
-wild-ignore-table=test.%replicate
-wild-ignore-table=information_schema.%replicate
-wild-ignore-table=performance_schema.%lower_case_table_names
= 1#read_only
=1master_info_repository
=TABLErelay_log_info_repository
=TABLE###################################### slow
-querylong_query_time
=1slow_query_log
=1slow_query_log_file
=/var/lib/mysql/slow-query.loginteractive_timeout
=600wait_timeout
=600#log_queries_not_using_indexes
=1###################################### innodb configure
innodb_file_per_table
#innodb_file_format
=Barracuda#innodb_io_capacity
=200innodb_data_home_dir
= /var/lib/mysql#innodb_data_file_path
= ibdata1:2000M;ibdata2:10M:autoextendinnodb_log_group_home_dir
= /var/lib/mysqlinnodb_buffer_pool_size
=4G# Set .._log_file_size to
25 % of buffer pool sizeinnodb_log_file_size
= 1Ginnodb_log_files_in_group
= 3innodb_log_buffer_size
= 32M#innodb_lock_wait_timeout
= 50innodb_flush_log_at_trx_commit
= 1sync_binlog
=0sql
-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"##########################################
[mysqldump]
quick
max_allowed_packet
= 16M[mysql]
no
-auto-rehashdefault
-character-set = utf8mb4prompt
=\U \h \R:\m:\s \d>[myisamchk]
key_buffer_size
= 20Msort_buffer_size
= 20Mread_buffer
= 2Mwrite_buffer
= 2M[mysqlhotcopy]
interactive
-timeout
开始启动容器
# docker run --restart=always --privileged=true -v /etc/localtime:/etc/localtime:ro -d -v /data/mysql3306/data/:/var/lib/mysql -v /data/mysql3306/conf.d:/etc/mysql/conf.d -v /data/mysql3306/my.cnf:/etc/mysql/my.cnf -p 3306:3306 --name mysql5.7 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
参数说明:
--restart=always: 当Docker 重启时,容器会自动启动。
--privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
-v /opt/mysql/conf.d/my.cnf:/etc/my.cnf:映射配置文件
-v /opt/mysql/data/:/var/lib/mysql:映射数据目录
-v /etc/localtime:/etc/localtime:ro:设置容器的时间与宿主机同步
-p 3306:3306:将容器的3306端口映射到主机的3306端口
-e MYSQL_ROOT_PASSWORD=123456:设置mysql的root密码
查看容器状态:
# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5aa35cacab13 mysql:
5.7"docker-entrypoint.s…"20 minutes ago Up 20 minutes 0.0.0.0:3306->3306/tcp,33060/tcp mysql5.73d60c83336e8 hello
-world "/hello"2 hours ago Exited (0) 2 hours ago vibrant_wescoff
进入容器
# docker exec -it 5aa35cacab13 /bin/bashroot@5aa35cacab13:
/#
验证配置文件是否生效:
root@5aa35cacab13:/# mysql -uroot -p123456mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection
id is 3Server version:
5.7.29-log MySQL Community Server (GPL)Copyright (c)
2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and
/or itsaffiliates. Other names may be trademarks of their respective
owners.
Type
"help;" or "h"for help. Type "c" to clear the current input statement.root@localhost localhost
17:13:48 (none)>select @@sql_mode;+----------------------------------------------------------------+| @@sql_mode |
+----------------------------------------------------------------+
| STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+----------------------------------------------------------------+
1 row in set (0.00 sec)
可以看到和我们配置文件里设置的一样。
以上是 Docker安装Mysql5.7 的全部内容, 来源链接: utcz.com/z/532525.html