Docker 安装与操作 Mysql 数据库快速入门

article/2025/8/19 23:01:22

目录

演示环境说明

Mysql 镜像检索

Mysql 镜像下载

Mysql 容器运行

错误运行方式

正确运行方式

端口映射

连接测试

高级命令·指定编码运行


演示环境说明

1、《 Docker 镜像操作 常用命令》中说明了如何从 Docker Hub 上下载镜像,《 Docker 容器操作 常用命令》中说明了如何启动容器

2、本文将以完整的安装 MySQL 为例将 镜像与 容器 操作完全串联起来

3、系统为 CentOS 7.5 发行版,内核为 3.10 版本,Docker 为 1.13 版本

[root@localhost ~]# lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 7.5.1804 (Core) 
Release:	7.5.1804
Codename:	Core
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-862.9.1.el7.x86_64 #1 SMP Mon Jul 16 16:29:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# docker version
Client:Version:         1.13.1API version:     1.26Package version: docker-1.13.1-68.gitdded712.el7.centos.x86_64Go version:      go1.9.4Git commit:      dded712/1.13.1Built:           Tue Jul 17 18:34:48 2018OS/Arch:         linux/amd64Server:Version:         1.13.1API version:     1.26 (minimum version 1.12)Package version: docker-1.13.1-68.gitdded712.el7.centos.x86_64Go version:      go1.9.4Git commit:      dded712/1.13.1Built:           Tue Jul 17 18:34:48 2018OS/Arch:         linux/amd64Experimental:    false
[root@localhost ~]# 

4、此时 docker 中还只要一个 docker.io/tomcat 镜像,需要重新下载 Mysql 镜像

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/tomcat    8.5.32              5808f01b11bf        3 days ago          463 MB
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
0f6df57a7fa1        tomcat:8.5.32       "catalina.sh run"   44 hours ago        Exited (143) 43 hours ago                       myTtomcat2
d67cca0aacf7        tomcat:8.5.32       "catalina.sh run"   44 hours ago        Exited (143) 43 hours ago                       myTtomcat1
[root@localhost ~]# 

Mysql 镜像检索

1、就下载第一个 docker.io/mysql 官方发行版

[root@localhost ~]# docker search mysql
INDEX       NAME                                                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/mysql                                                  MySQL is a widely used, open-source relati...   6749      [OK]       
docker.io   docker.io/mariadb                                                MariaDB is a community-developed fork of M...   2150      [OK]       
docker.io   docker.io/mysql/mysql-server                                     Optimized MySQL Server Docker images. Crea...   495                  [OK]
docker.io   docker.io/percona                                                Percona Server is a fork of the MySQL rela...   360       [OK]       
docker.io   docker.io/zabbix/zabbix-server-mysql                             Zabbix Server with MySQL database support       114                  [OK]
docker.io   docker.io/hypriot/rpi-mysql                                      RPi-compatible Docker Image with Mysql          93                   
docker.io   docker.io/zabbix/zabbix-web-nginx-mysql                          Zabbix frontend based on Nginx web-server ...   62                   [OK]
docker.io   docker.io/centurylink/mysql                                      Image containing mysql. Optimized to be li...   60                   [OK]
docker.io   docker.io/1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5   ubuntu-16-nginx-php-phpmyadmin-mysql-5          43                   [OK]
docker.io   docker.io/centos/mysql-57-centos7                                MySQL 5.7 SQL database server                   38                   
docker.io   docker.io/mysql/mysql-cluster                                    Experimental MySQL Cluster Docker images. ...   33                   
docker.io   docker.io/tutum/mysql                                            Base docker image to run a MySQL database ...   32                   
docker.io   docker.io/schickling/mysql-backup-s3                             Backup MySQL to S3 (supports periodic back...   20                   [OK]
docker.io   docker.io/bitnami/mysql                                          Bitnami MySQL Docker Image                      16                   [OK]
docker.io   docker.io/zabbix/zabbix-proxy-mysql                              Zabbix proxy with MySQL database support        15                   [OK]
docker.io   docker.io/linuxserver/mysql                                      A Mysql container, brought to you by Linux...   14                   
docker.io   docker.io/centos/mysql-56-centos7                                MySQL 5.6 SQL database server                   9                    
docker.io   docker.io/circleci/mysql                                         MySQL is a widely used, open-source relati...   6                    
docker.io   docker.io/openshift/mysql-55-centos7                             DEPRECATED: A Centos7 based MySQL v5.5 ima...   6                    
docker.io   docker.io/dsteinkopf/backup-all-mysql                            backup all DBs in a mysql server                4                    [OK]
docker.io   docker.io/mysql/mysql-router                                     MySQL Router provides transparent routing ...   2                    
docker.io   docker.io/openzipkin/zipkin-mysql                                Mirror of https://quay.io/repository/openz...   1                    
docker.io   docker.io/ansibleplaybookbundle/mysql-apb                        An APB which deploys RHSCL MySQL                0                    [OK]
docker.io   docker.io/cloudfoundry/cf-mysql-ci                               Image used in CI of cf-mysql-release            0                    
docker.io   docker.io/cloudposse/mysql                                       Improved `mysql` service with support for ...   0                    [OK]
[root@localhost ~]# 

2、可以从 Docker Hub 上查看 所有 Mysql 的版本 ,同理也可以查询各个版本使用的详细命令

Mysql 镜像下载

[root@localhost ~]# docker pull mysql:5.5
Trying to pull repository docker.io/library/mysql ... 
5.5: Pulling from docker.io/library/mysql
be8881be8156: Pull complete 
c3995dabd1d7: Pull complete 
9931fdda3586: Pull complete 
bb1b6b6eff6a: Pull complete 
a65f125fa718: Pull complete 
b5332dacc087: Pull complete 
77378af32110: Pull complete 
c863c888ab89: Pull complete 
970e89bcad84: Pull complete 
199374dd7b11: Pull complete 
daf925b4c8c8: Pull complete 
Digest: sha256:973d09f802e90069f4090578bbfb5f1cc095d5c14bdd0bb2651d5e448751f907
Status: Downloaded newer image for docker.io/mysql:5.5
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/tomcat    8.5.32              5808f01b11bf        3 days ago          463 MB
docker.io/mysql     5.5                 c43b4117afc4        2 weeks ago         205 MB
[root@localhost ~]# 

Mysql 容器运行

错误运行方式

1、如下所示演示的是 Mysql 镜像运行时没有指定 密码而导致异常退出启动失败的情况

2、通过 docker logs container-name/container-id 命令 查看日志已经提醒的很明显了,必须指定  root  密码、或者允许密码为空、或者使用随机密码

3、最后将此错误的容器删除掉:docker rm container-id

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/tomcat    8.5.32              5808f01b11bf        3 days ago          463 MB
docker.io/mysql     5.5                 c43b4117afc4        2 weeks ago         205 MB
[root@localhost ~]# docker run --name mysql01 -d mysql:5.5
fb1c96d110c715034c263185e40f066dc688e2284c02c250243e25c017cf872b
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
fb1c96d110c7        mysql:5.5           "docker-entrypoint..."   9 seconds ago       Exited (1) 6 seconds ago                        mysql01
0f6df57a7fa1        tomcat:8.5.32       "catalina.sh run"        44 hours ago        Exited (143) 43 hours ago                       myTtomcat2
d67cca0aacf7        tomcat:8.5.32       "catalina.sh run"        44 hours ago        Exited (143) 43 hours ago                       myTtomcat1
[root@localhost ~]# docker logs fb1c96d110c7
error: database is uninitialized and password option is not specified You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
[root@localhost ~]# docker rm fb1c96d110c7
fb1c96d110c7
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
0f6df57a7fa1        tomcat:8.5.32       "catalina.sh run"   44 hours ago        Exited (143) 43 hours ago                       myTtomcat2
d67cca0aacf7        tomcat:8.5.32       "catalina.sh run"   44 hours ago        Exited (143) 43 hours ago                       myTtomcat1
[root@localhost ~]# 

正确运行方式

1、Docker Hub 上 Mysq 官方 提供的启动命令如下所示 ,需要使用 -e 参数指定 roor 账户密码进行启动:

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

[root@localhost ~]# docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.5
3a896a0867265c59d84d209a93d60f3d837b4667c649981eb3933e997a459c55
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
3a896a086726        mysql:5.5           "docker-entrypoint..."   3 seconds ago       Up 2 seconds                3306/tcp            mysql01
0f6df57a7fa1        tomcat:8.5.32       "catalina.sh run"        44 hours ago        Exited (143) 43 hours ago                       myTtomcat2
d67cca0aacf7        tomcat:8.5.32       "catalina.sh run"        44 hours ago        Exited (143) 43 hours ago                       myTtomcat1
[root@localhost ~]# 

2、如上所示,此时 mysql 容器运行是成功的,但是《 Docker 容器操作 常用命令》中已经说过,此时启动的 3306 端口是 Mysql 镜像在容器内部的端口,外部访问必须进行端口映射,再次删除此无效的容器。

[root@localhost ~]# docker stop 3a896a086726
3a896a086726
[root@localhost ~]# docker rm 3a896a086726
3a896a086726
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
0f6df57a7fa1        tomcat:8.5.32       "catalina.sh run"   44 hours ago        Exited (143) 43 hours ago                       myTtomcat2
d67cca0aacf7        tomcat:8.5.32       "catalina.sh run"   44 hours ago        Exited (143) 43 hours ago                       myTtomcat1
[root@localhost ~]# 

端口映射

1、端口映射加上 -p 参数即可,可以参考《 Docker 容器操作 常用命令》,因为 CentOS 服务器本身外部已经安装了 Mysql 已经占用了 3306 端口,所以使用 3307 映射 Docker 容器中的 3306 端口

[root@localhost ~]# docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=root -p 3307:3306 -d mysql:5.5
2aad1d2a8e76261715ac0f1d4ef03217ae54866db479d26b81364a39e2ec3801
[root@localhost ~]# netstat -ntlpu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1041/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1188/master         
tcp6       0      0 :::33060                :::*                    LISTEN      1308/mysqld         
tcp6       0      0 :::3306                 :::*                    LISTEN      1308/mysqld         
tcp6       0      0 :::3307                 :::*                    LISTEN      2892/docker-proxy-c 
tcp6       0      0 :::22                   :::*                    LISTEN      1041/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1188/master         
udp        0      0 0.0.0.0:68              0.0.0.0:*                           857/dhclient        
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                    NAMES
2aad1d2a8e76        mysql:5.5           "docker-entrypoint..."   14 seconds ago      Up 14 seconds               0.0.0.0:3307->3306/tcp   mysql01
0f6df57a7fa1        tomcat:8.5.32       "catalina.sh run"        44 hours ago        Exited (143) 44 hours ago                            myTtomcat2
d67cca0aacf7        tomcat:8.5.32       "catalina.sh run"        44 hours ago        Exited (143) 43 hours ago                            myTtomcat1
[root@localhost ~]# 

2、如上所示做了端口映射后,就可以从外部访问 Docker 容器内部的 Mysql 了,但是如果要从 CentOS 服务器外部访问,则还需要 CentOS 服务器开放 3307 端口

[root@localhost ~]# firewall-cmd --zone=public --list-port
9876/tcp 8090/tcp 80/tcp 8080/tcp
[root@localhost ~]# firewall-cmd --zone=public --add-port=3307/tcp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --zone=public --list-port
9876/tcp 8090/tcp 80/tcp 8080/tcp 3307/tcp
[root@localhost ~]# 

连接测试

1、如下所示,从 Windows 上使用 Navicat 连接虚拟机 CentOS 中 Docker 中的 Mysql

高级命令·指定编码运行

1、例如,如果要更改所有表的默认编码和排序,使用UTF-8(UTF8Mb4),只需使用如下命令运行

2、更多命令,请参考官方文档:https://hub.docker.com/r/library/mysql/

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

 


http://chatgpt.dhexx.cn/article/Gv4vWtht.shtml

相关文章

数据库(MySQL)基础快速入门!

前言:这篇送给那些想要学会数据库,但又不想花太多时间的同学们。看了这篇数据库知识,轻轻松松搞定它!用不同的工具操作数据库命令可能会有小小的不同,我用的是系统自带的cmd。(凡是数据库名称,数…

MySQL数据库1——数据库快速入门

MySQL数据库——数据库基础 (一)为什么使用数据库 数据库用来存储海量数据数据库利于数据查询和管理数据库相对于文件安全性更高数据库相对于文件利于控制 (二)MySQL的基本使用 安装好MySQL数据库以后,连接服务器。…

mysql快捷创建数据库_mysql数据库快速入门(1)

1、数据库操作 1.1、连接mysql服务器 mysql -u root( 用户名 ) -p 1.2、退出mysql命令提示窗 exit 1.3、查看版本 SELECT VERSION(); 1.4、列出数据库列表 SHOW DATABASES; 1.5、创建数据库 CREATE DATABASE IF NOT EXISTS [database] DEFAULT CHARSET UTF8; 1.6、选择要操作的…

SQLite3数据库的快速入门菜鸟教程

SQLite3是一个轻量级嵌入式数据库,其主要有以下的特点: 1、零配置无需安装和管理配置; 2、储存在单一磁盘文件中; 3、数据库文件可在不同字节序的机器自由共享; 4、比目前流行的大多数数据库对数据的操作要快&…

MySQL数据库快速入门

MySQL基础 1、数据库相关概念 以前我们做系统,数据持久化的存储采用的是文件存储。存储到文件中可以达到系统关闭数据不会丢失的效果,当然文件存储也有它的弊端。假设在文件中存储以下的数据: 姓名 年龄 性别 住址 张三 23 男 北京西三旗…

MySQL数据库快速入门到精通(超详细保姆级,建议收藏)这可能是目前最适合你的教程,从基础语法到实例演示。

前言 此文章旨在为需要掌握快速开发和复习MySQL的同学所准备,您完全可以把此文章当作参考文档来使用,本文将尽量精简,使您快速的理解和掌握语法。 关于MySQL MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,…

超经典两万字,MySQL数据库快速入门。

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「专栏简介」:此文章已录入专栏《MySQL数据库快速入门》 MySQL快速入门 一、环境准备1. MySQL下载及安装2. MySQL启动3. MySQL客…

SQL数据库快速入门基础

SQL(Structure Query Language,结构化查询语言)语言是国际标准化组织(ISO)采纳的标准数据库语言。 数据库就是一幢大楼,我们要先盖楼,然后再招住户(住户当然就是数据库对象,)。我们盖得大楼的基本格局设计师们已经为我们设计好,我们在创建数据库过程中,系统(设计师)…

数据库快速入门

数据库快速入门 目录 数据库快速入门 1. 数据库基础知识入门 2. Postgre数据库介绍 3. 数据库入门操作 3.1常用命令 3.2 数值类型 3.3 数据运算符 4. 常用函数介绍 4.1 常用函数介绍 4.2 自定义函数 5 数据库索引和视图介绍 5.1 数据库索引介绍 5.2 数据库视图介…

计算机类书籍大全

空降百度网盘: 链接:https://pan.baidu.com/s/1yG198vf_xxBUKW2q-aYm4A 提取码:sll1

爬虫之 爬取京东计算机书籍

爬取京东的计算机类书籍 1. 工具: requests, pycharm, scrapy, mongodb 2. 网页提取工具: xpath 1. 分析京东网页: 打开京东网站 查看源码发现不是动态网页,而且都是列表, 说明了很好处理;开始分析; 我们只要提取书名,书的链…

计算机专业必读哪些经典书籍?

大家好,我是狗哥。 经常有粉丝问:狗哥,我想学计算机,应该读哪些书籍?那么多计算机书籍,我如何选?,今天狗哥就把自己的书单发出来,供大家参考,并附上连接&…

国家电网计算机类备考经验分享

刚刚参加完国家电网计算机类23届的笔试和面试,笔试78,为了给备考国家电网计算机类的小伙伴提供一些有用的信息,给大家分享一个经验贴。本文分为4部分。分别为:个人情况、复习时间线、所用书籍、经验分享。希望这篇文章可以解决小伙…

计算机专业必读的经典书籍!!(建议收藏)

第一个系列:基础 要说哪些书是计算机的经典书籍,我猜很多人都要推荐机械工业出版社引进的黑皮书系列了,你就看吧,每一本都很适合垫显示器垫桌角,垫显示器这个其实只不过是一个调侃而已,之所以这么说&#…

可以看计算机专业书籍的app,分享两个好用的读书APP

分享我现在用的2个读书APP:微信读书和藏书馆。建议不要装太多读书APP,装得越多,使用越分散,反而读得越少。 1.微信读书 优点: AI朗读,边听边走; 分享互动,思维膨胀; 读书…

计算机视觉经典书籍推荐

计算机视觉是人工智能的一个分支,主要研究如何使机器“看”的科学,通俗来说就是用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。 无人机技…

计算机专业必读的经典书籍

书单推荐 一、计算机思维 《数学之美》 推荐理由: 吴军博士文笔流畅、干货满满,同时切合实际应用,可以作为计算机科学(尤其是AI领域)的入门读物 《程序员的数学》系列 推荐理由: 程序员需要一定的数学知识,但不是像高…

CentOS防火墙的常用快捷命令

CentOS是免费开源的Linux发行版之一,它兼容RHEL并由社区进行维护,大多数美国服务器提供对该系统支持。在使用CentOS系统时,您需要了解一些常用命令,比如开启、查看、关闭防火墙等。本文将介绍下CentOS防火墙的常用命令。 CentOS是一种面向企业级服务器环境的Linux发行版,…

linux防火墙状态centos5,怎么样查看centos防火墙状态

你想查看下centos防火墙的状态吗?要怎么样查看呢?你下面由学习啦小编给你做出详细的查看centos防火墙状态方法介绍!希望对你有帮助! 查看centos防火墙状态方法一: 直接使用iptables -L查看防火墙设置 service iptables stop关闭防火墙 service iptables start/res…

Ubuntu/Centos防火墙

区分Linux、Ubuntu、Centos的防火墙: Linux原始自带的防火墙工具iptables Ubuntu的防火墙工具ufw Centos的防火墙工具firewalld ----------------------------------------------------------------------------------------------------- Ubuntu默认使…