使用Docker容器运行Mysql

这篇具有很好参考价值的文章主要介绍了使用Docker容器运行Mysql。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

随着虚拟化技术和云计算的普及,容器技术的优点也逐步体现,软件部署和环境迁移的优势无可替代。
目前Docker已经成为容器技术中的主要代表,恰好涉及需要在liunux系统上部署Mysql数据库用于测试,由于是初次使用docker部署Mysql,所以对其中一些操作进行记录。


一、基础的虚拟机环境

使用虚拟机,安装ubuntu系统,发行版和内核信息如下:

root@ldap:/# cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.2 LTS"
root@ldap:/# uname -r
5.15.0-72-generic
root@ldap:/# 

只所以使用ubuntu是因为centos各大镜像站都已经停止维护,在基础系统安装过程中,经常出现一些莫名其妙的问题,虽然可以解决但比较浪费时间。

二、安装过程

安装配置docker

# 安装 docker 和 docker-compose
#先移除docker。其实也不用重装docker,我用的ubuntu里已经安装了完整的docker,但我想用用华为云发布的docker-ce,所以就按说明对原docker进行了移除操作
#如果不是root用户,则需要加sudo,否则不用。
sudo apt remove docker docker-engine dockdocker.io containerd runc
#更新后,安装依赖,apt源已经改为华为镜像源
sudo apt update
sudo apt install  -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
#运行公钥,添加docker软件仓库
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
#安装docker-ce docker-ce-clicontainerd.io
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io -y

#sudo curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#sleep 1
#sudo chmod +x /usr/local/bin/docker-compose
#安装docker-compose
apt install docker-compose docker-compose-plugin -y

#启动docker,开机自启动
systemctl start docker
systemctl enable docker

拉取Mysql镜像

#查看仓库mysql镜像
#docker search mysql
docker search mysql
NAME                            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                           MySQL is a widely used, open-source relation…   14159     [OK]       
mariadb                         MariaDB Server is a high performing open sou…   5408      [OK]       
percona                         Percona Server is a fork of the MySQL relati…   609       [OK]       
phpmyadmin                      phpMyAdmin - A web interface for MySQL and M…   802       [OK]       
circleci/mysql                  MySQL is a widely used, open-source relation…   29                   
bitnami/mysql                   Bitnami MySQL Docker Image                      86                   [OK]
bitnami/mysqld-exporter                                                         5                    
ubuntu/mysql
#使用命令docker pull mysql ,默认tag:latest
docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
90e2fb2facff: Pull complete 
ba60eb20fd5f: Pull complete 
4f509402d469: Pull complete 
496c2cfa6815: Pull complete 
8ec1dfa9522c: Pull complete 
6dec7ba896f8: Pull complete 
dc9ff75362b0: Pull complete 
73e4682f9014: Pull complete 
9ffdeecd6fb6: Pull complete 
a4346ccfb53f: Pull complete 
434c13bc32de: Pull complete 
Digest: sha256:d6164ff4855b9b3f2c7748c6ec564ccff841f79a7023db0f9293143481a44b6e
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
   

用docker启动mysql

docker run -p 3306:3306 --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:latest
60bc33b60efa81c32d93e3452fd5fbe3a5d72c4cfc898d77af1a70a83cdd77e5
root@l:/# 
root@l:/# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
root@:/# 

命令的使用和参数具体解释如下:

1.必要参数:

-p 3306:3306:将宿主主机的3306端口映射到容器的3306端口,使宿主主机可以连接容器内的MySQL服务。
–name mysql:为容器命名为mysql。

2.数据卷配置参数:

-v /mydata/mysql/log:/var/log/mysql:将宿主机上的/mydata/mysql/log目录挂载到容器的/var/log/mysql目录下,用于存储MySQL的日志文件。
-v /mydata/mysql/data:/var/lib/mysql:将宿主机上的/mydata/mysql/data目录挂载到容器的/var/lib/mysql目录下,用于存储MySQL的数据文件。
-v /mydata/mysql/conf:/etc/mysql:将宿主机上的/mydata/mysql/conf目录挂载到容器的/etc/mysql目录下,用于存储MySQL的配置文件。

3.MySQL账户安全参数:

-e MYSQL_ROOT_PASSWORD=root:设置MySQL的root账户密码为root。建议设置复杂的密码。

4.容器启动参数:

-d mysql:lates:使用MySQL:lates镜像,在宿主机后台启动容器,并命名为mysql。

通过以上参数配置,可以实现对MySQL容器的定制化部署,提高应用程序的性能和可靠性。

这时候,返回一串字符“60bc33b60efa81c32d93e3452fd5fbe3a5d72c4cfc898d77af1a70a83cdd77e5”
表示命令正常执行,而且已经运行了Mysql镜像容器。

当然,如果你这样做了,会发现:

#使用docker ps查看不到mysql的进程
docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

#加参数-a后是有记录的
# docker ps -a
docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED      STATUS                  PORTS     NAMES
60bc33b60efa   mysql     "docker-entrypoint.s…"   2 days ago   Exited (1) 2 days ago             mysql

原因是:虽然成功运行的了mysql容器,但是容器中没有在执行的程序,所以容器自动停止了。

你可以根据自己的需要,在启动时添加容器运行参数,例如

#以交互方式运行容器,并加载bash指令集
#docker run -it -p 3306:3306 --name mysql_new1 -e MYSQL_ROOT_PASSWORD=root -d mysql bash
#之前使用centos、ubuntu等基础镜像时,使用参数-it后,会进入到容器内,但这里不知道为什么,命令符还是宿主机的
docker run it -e MYSQL_ROOT_PASSWORD=root -d mysql bash

101258d2fdbf87f97dd533a05f164e2c6ec152e170a497b4ac787723cfc2cc81
# docker ps就可以看到运行容器状态
docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
101258d2fdbf   mysql     "docker-entrypoint.s…"   7 seconds ago   Up 6 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql_new1

#进入容器:docker exec -it mysql bash
docker exec -it 101 bash
bash-4.4# ls
bin   dev			  entrypoint.sh  home  lib64  mnt  proc  run   srv  tmp  var
boot  docker-entrypoint-initdb.d  etc		 lib   media  opt  root  sbin  sys  usr

bash-4.4# cat /etc/os-release 
NAME="Oracle Linux Server"
VERSION="8.8"
ID="ol"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="8.8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Oracle Linux Server 8.8"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:8:8:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"

ORACLE_BUGZILLA_PRODUCT="Oracle Linux 8"
ORACLE_BUGZILLA_PRODUCT_VERSION=8.8
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=8.8

#尴尬了,没用过Oracle Linux 8

总结

以上就是我使用docker运行mysql的过程记录,docker的使用使用虽然简单而且便利,但对不同程序镜像运行容器时,还是要对具体要运行的程序有一定的了解,比如mysql,至少要知道一些mysql的使用命令或者参数。文章来源地址https://www.toymoban.com/news/detail-586507.html

到了这里,关于使用Docker容器运行Mysql的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用Docker Compose搭建StackEdit编辑器并实现远程办公

    StackEdit是一个受欢迎的Markdown编辑器,在GitHub上拥有20.7k Star!,它支持将Markdown笔记保存到多个仓库,包括Gitee、GitHub和Gitea。此在线笔记工具还提供了一些便捷功能,如拖拽或粘贴上传图片、文件搜索功能,以及可切换为炫酷的暗黑主题,这些功能特别适合那些喜欢使用Mar

    2024年01月19日
    浏览(34)
  • CentOS使用docker本地部署StackEdit Markdown编辑器并实现公网访问

    StackEdit是一个受欢迎的Markdown编辑器,在GitHub上拥有20.7k Star!,它支持将Markdown笔记保存到多个仓库,包括Gitee、GitHub和Gitea。此在线笔记工具还提供了一些便捷功能,如拖拽或粘贴上传图片、文件搜索功能,以及可切换为炫酷的暗黑主题,这些功能特别适合那些喜欢使用Mar

    2024年01月19日
    浏览(33)
  • 如何在使用Docker快速部署StackEdit并实现公网访问本地编辑器远程办公

    StackEdit是一个受欢迎的Markdown编辑器,在GitHub上拥有20.7k Star!,它支持将Markdown笔记保存到多个仓库,包括Gitee、GitHub和Gitea。此在线笔记工具还提供了一些便捷功能,如拖拽或粘贴上传图片、文件搜索功能,以及可切换为炫酷的暗黑主题,这些功能特别适合那些喜欢使用Mar

    2024年02月04日
    浏览(39)
  • Linux使用Docker部署StackEdit结合内网穿透实现公网访问本地编辑器

    前言 实现ubuntu 系统桌面级别的远程连接,需要在ubuntu 系统中安装vnc,既然是桌面,前提是需要ubuntu 带有图形化界面,如果没有,可以执行以下命令安装图形化界面 1. ubuntu安装VNC 在ubuntu中安装vnc 安装LightDM【LightDM从设计上就是支持本地图形界面以获得最好的兼容性】 安装过程中会

    2024年04月08日
    浏览(35)
  • docker运行并进入MySQL容器

    这是一个使用Docker命令行工具来启动一个MySQL容器的命令。下面,让我们来详细解析这条命令: docker run docker : Docker的命令行工具。 run : Docker的子命令,用于启动一个新的容器实例。 -itd 这是三个组合起来的标志: -i 或 --interactive : 保持标准输入打开,即使没有附加到容器的

    2024年02月09日
    浏览(31)
  • 使用Docker容器部署java运行环境(java8 + mysql5.7 + redis5.0 + nginx1.14.1

    环境:阿里云ECS服务器 1.1 安装工具 1.2 为yum源添加docker仓库位置 1.3 将软件包信息提前在本地索引缓存 (非必要,建议执行,可以提升yum安装的速度,报错去掉fast试试) 1.4 安装Docker 傻瓜式安装 点击y 1.5 启动Docker 1.6 设置开机自启动 1.7 安装完成后可以测试一下,是否安装成功

    2024年02月02日
    浏览(64)
  • MySQL运行在docker容器中会损失多少性能

    自从使用docker以来,就经常听说MySQL数据库最好别运行在容器中,性能会损失很多。一些之前没使用过容器的同事,对数据库运行在容器中也是忌讳莫深,甚至只要数据库跑在容器中出现性能问题时,首先就把问题推到容器上。 那么到底会损失多少,性能损失会很多吗? 为此

    2024年02月05日
    浏览(33)
  • 向正在运行的docker mysql容器中 导入sql文件

    当需要将 SQL 文件导入正在运行的 Docker MySQL 容器时,可以按照以下步骤操作。 首先,使用 docker cp 命令将 SQL 文件从本地主机复制到正在运行的 Docker 容器中。请确保您已经在主机上拥有该 SQL 文件。执行以下命令: 这将把本地路径下的 your_file.sql 文件复制到运行的容器中的

    2024年02月16日
    浏览(33)
  • 讲讲项目里的仪表盘编辑器(四)分页卡和布局容器组件

            讲讲两个经典布局组件的实现                  配置面板是给用户配置布局容器背景颜色等属性。这里我们不需要关注         定义文件          规定了组件类的 类型 、标签、图标、 默认布局属性、主文件 等等。         入口文件会通过一系列逻辑生成

    2024年02月07日
    浏览(24)
  • Unity编辑器运行时设置GameView分辨率

    0是Free Asepect 3是Full HD (1920x1080) Unity 2021.3.11f1c2

    2024年02月09日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包