系統版本:CentOS Linux release 7.5.1804 (Core)html
若是以前有裝過docker能夠先卸載舊版本再安裝,沒有則跳過。mysql
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
安裝軟件包:linux
yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
設置鏡像倉庫:sql
yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
安裝docker:docker
yum install -y docker-ce docker-ce-cli containerd.io
啓動docker:ubuntu
systemctl start docker
能夠進行測試:vim
# 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:latestcentos
Hello from Docker!
This message shows that your installation appears to be working correctly.bash
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.app
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/
能夠看下鏡像庫裏的mysql相關鏡像:
# docker search mysql NAME 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 70 mysql/mysql-cluster Experimental MySQL Cluster Docker images. Cr… 63 centurylink/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.7 5.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 images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.7 84164b03fa2e 15 hours ago 456MB hello-world latest fce289e99eb9 14 months ago 1.84kB
能夠看到版本是5.7
建立所需目錄,用以掛載外部配置文件和數據目錄:
mkdir /data mkdir /data/mysql3306 mkdir /data/mysql3306/conf.d mkdir /data/mysql3306/data/
編輯配置文件,如下配置文件僅供參考:
# vim /data/mysql3306/my.cnf [client] port= 3306 socket = /tmp/mysql.sock #default-character-set = utf8mb4 ## The MySQL server [mysqld] port = 3306 socket = /tmp/mysql.sock user = mysql skip-external-locking skip-name-resolve #skip-grant-tables #skip-networking ###################################### dir #basedir=/usr/local/mysql datadir=/var/lib/mysql tmpdir=/var/lib/mysql secure_file_priv=/var/lib/mysql ###################################### some app log-error=mysql.err pid-file=/var/lib/mysql/mysql.pid local-infile=1 event_scheduler=0 federated default-storage-engine=InnoDB #default-time-zone= '+8:00' log_timestamps=SYSTEM character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4' #5.6 explicit_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=200 max_connect_errors=10000 key_buffer_size = 16M max_allowed_packet = 16M table_open_cache = 10240 sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 2M join_buffer_size=2M myisam_sort_buffer_size = 4M #net_buffer_length = 2M thread_cache_size = 24 query_cache_type=1 query_cache_size=256M query_cache_limit=32M tmp_table_size=1G max_heap_table_size=1G #thread_concurrency =48 ###################################### replication server-id = 10951 log-bin=mysql-bin binlog_format=mixed max_binlog_size=1G #binlog_cache_size=512M log_slave_updates=true log_bin_trust_function_creators=true expire_logs_days=15 replicate-ignore-db=mysql replicate-ignore-db=test replicate-ignore-db=information_schema replicate-ignore-db=performance_schema replicate-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=1 master_info_repository=TABLE relay_log_info_repository=TABLE ###################################### slow-query long_query_time=1 slow_query_log=1 slow_query_log_file=/var/lib/mysql/slow-query.log interactive_timeout=600 wait_timeout=600 #log_queries_not_using_indexes=1 ###################################### innodb configure innodb_file_per_table #innodb_file_format=Barracuda #innodb_io_capacity=200 innodb_data_home_dir = /var/lib/mysql #innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend innodb_log_group_home_dir = /var/lib/mysql innodb_buffer_pool_size =4G # Set .._log_file_size to 25 % of buffer pool size innodb_log_file_size = 1G innodb_log_files_in_group = 3 innodb_log_buffer_size = 32M #innodb_lock_wait_timeout = 50 innodb_flush_log_at_trx_commit = 1 sync_binlog=0 sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" ########################################## [mysqldump] quick max_allowed_packet = 16M [mysql] no-auto-rehash default-character-set = utf8mb4 prompt=\\U \\h \\R:\\m:\\s \\d> [myisamchk] key_buffer_size = 20M sort_buffer_size = 20M read_buffer = 2M write_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 -a CONTAINER 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.7 3d60c83336e8 hello-world "/hello" 2 hours ago Exited (0) 2 hours ago vibrant_wescoff
進入容器
# docker exec -it 5aa35cacab13 /bin/bash root@5aa35cacab13:/#
驗證配置文件是否生效:
root@5aa35cacab13:/# mysql -uroot -p123456 mysql: [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 3 Server 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 its affiliates. 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)
能夠看到和咱們配置文件裏設置的同樣。
原文出處:https://www.cnblogs.com/wangb2/p/12421367.html