文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用Docker容器运行Mysql

2023-08-16 14:47

关注

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


前言

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


一、基础的虚拟机环境

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

root@ldap:/# cat /etc/lsb-release DISTRIB_ID=UbuntuDISTRIB_RELEASE=22.04DISTRIB_CODENAME=jammyDISTRIB_DESCRIPTION="Ubuntu 22.04.2 LTS"root@ldap:/# uname -r5.15.0-72-genericroot@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 updatesudo 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.iosudo apt updatesudo 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-composeapt install docker-compose docker-compose-plugin -y#启动docker,开机自启动systemctl start dockersystemctl enable docker

拉取Mysql镜像

#查看仓库mysql镜像#docker search mysqldocker search mysqlNAMEDESCRIPTION         STARS     OFFICIAL   AUTOMATEDmysql                           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:latestdocker pull mysqlUsing default tag: latestlatest: Pulling from library/mysql90e2fb2facff: 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:d6164ff4855b9b3f2c7748c6ec564ccff841f79a7023db0f9293143481a44b6eStatus: Downloaded newer image for mysql:latestdocker.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:latest60bc33b60efa81c32d93e3452fd5fbe3a5d72c4cfc898d77af1a70a83cdd77e5root@l:/# root@l:/# docker psCONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMESroot@:/# 

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

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 psCONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES#加参数-a后是有记录的# docker ps -adocker ps -aCONTAINER ID   IMAGE     COMMAND                  CREATED      STATUS                  PORTS     NAMES60bc33b60efa   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 bash101258d2fdbf87f97dd533a05f164e2c6ec152e170a497b4ac787723cfc2cc81# docker ps就可以看到运行容器状态docker psCONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                      NAMES101258d2fdbf   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 bashdocker exec -it 101 bashbash-4.4# lsbin   dev  entrypoint.sh  home  lib64  mnt  proc  run   srv  tmp  varboot  docker-entrypoint-initdb.d  etc lib   media  opt  root  sbin  sys  usrbash-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.8ORACLE_SUPPORT_PRODUCT="Oracle Linux"ORACLE_SUPPORT_PRODUCT_VERSION=8.8#尴尬了,没用过Oracle Linux 8

总结

以上就是我使用docker运行mysql的过程记录,docker的使用使用虽然简单而且便利,但对不同程序镜像运行容器时,还是要对具体要运行的程序有一定的了解,比如mysql,至少要知道一些mysql的使用命令或者参数。

来源地址:https://blog.csdn.net/hhwzy_mqh/article/details/130886647

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯