如何进入启动的mysql docker容器
发布时间:2025-05-20 13:20:21 发布人:远客网络
一、如何进入启动的mysql docker容器
当我们的mysql容器启动后,想要登陆mysql的数据库怎么办。以下介绍几种方法,其他容器的登陆也可以仿效。
第一:启动容器后用link链接,官方的mysql容器有以下几个环境变量。
docker run--name some-mysql-e MYSQL_ROOT_PASSWORD=my-secret-pw-d daocloud.io/mysql
docker run-it--link some-mysql:mysql daocloud.io/mysql sh-c'exec mysql-h"$MYSQL_PORT_3306_TCP_ADDR"-P"$MYSQL_PORT_3306_TCP_PORT"-uroot-p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
第二种方法:已经有compose启动的容器用link链接,比如我的docker image为pythondjangocdsample_mysql_1,可以用如下命令链接
docker run-ti--link pythondjangocdsample_mysql_1:mysql daocloud.io/mysql sh-c'exec mysql-h"$MYSQL_PORT_3306_TCP_ADDR"-P"$MYSQL_PORT_3306_TCP_PORT"-uroot-p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
或者用busybox链接mysql容器查看环境变量,以下为myblog_mysql_1中的环境变量。
docker run-ti--link myblog_mysql_1:mysql busybox
MYSQL_ENV_MYSQL_DATABASE=myblog
MYSQL_PORT_3306_TCP_ADDR=172.17.0.3
MYSQL_ENV_MYSQL_ROOT_PASSWORD=mysql
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MYSQL_PORT=tcp://172.17.0.3:3306
MYSQL_ENV_MYSQL_VERSION=5.7.11-1debian8
MYSQL_PORT_3306_TCP=tcp://172.17.0.3:3306
MYSQL_NAME=/pensive_morse/mysql
以下为myblog_myblog_1链接到myblog_mysql_1中的环境变量。
docker run-ti--link myblog_myblog_1:myblog busybox
MYBLOG_ENV_PYTHON_VERSION=2.7.11
MYBLOG_ENV_MYSQL_PORT_3306_TCP_ADDR=mysql
MYBLOG_ENV_MYSQL_PASSWORD=mysql
MYBLOG_PORT=tcp://172.17.0.4:80
MYBLOG_ENV_MYSQL_PORT_3306_TCP_PORT=3306
MYBLOG_ENV_MYSQL_INSTANCE_NAME=myblog
MYBLOG_NAME=/nostalgic_darwin/myblog
MYBLOG_PORT_80_TCP_ADDR=172.17.0.4
MYBLOG_ENV_GPG_KEY=C01E1CAD5EA2C4F0B8E3571504C367C218ADD4FF
MYBLOG_ENV_PYTHON_PIP_VERSION=8.1.1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MYBLOG_PORT_80_TCP=tcp://172.17.0.4:80
MYBLOG_ENV_MYSQL_USERNAME=root
第三种方法:直接以client端登陆mysql
sudo apt-get install mysql-client
mysql-h172.17.0.3-P3306-uroot-pmysql
第四种:在容器里面添加ssh-server
command=/bin/bash-c"exec/usr/sbin/httpd-DFOREGROUND"
二、Docker容器启动时初始化Mysql数据库
在Docker中部署Spring Boot应用,并集成Mysql数据库,需要解决容器启动时自动初始化数据库的问题。本文将探讨两种传统方案与一种高效解决方案。传统方案包括在容器启动后手动导入SQL脚本或依赖客户端能力在连接时初始化,但这些方法效率低下且不够灵活。本文推荐利用Docker容器特性,在容器启动时自动执行初始化脚本。
具体实现原理在于,Mysql容器在启动时,会自动扫描`/docker-entrypoint-initdb.d`目录下的.sh、.sql、.sql.gz文件。这些文件将按照字母顺序依次执行,用于初始化数据库。默认情况下,初始化操作会在指定的数据库中执行,例如启动命令中可以指定`MYSQL_DATABASE`变量为`REGION_DB`。如果未指定数据库,则需在数据库DDL脚本中明确声明,否则会导致初始化操作失败。
为实现这一功能,本文提供自定义Dockerfile的示例,以下以Mysql:5.7版本为例。编写Dockerfile时需确保与所使用的Mysql版本兼容,具体操作参考官方文档。Dockerfile内容包括安装所需依赖、配置参数,以及执行初始化脚本。
构建自定义Mysql镜像的命令如下,可根据实际需求调整参数,如密码、持久化目录等。启动容器时,通过构建的镜像启动容器,指定数据库名称和根用户密码,同时将数据持久化到宿主机目录。
在实际部署中,记得检查字符集是否设置为utf8mb4,以及时区是否设置为东八区。这些配置有助于确保数据库能正确处理中文字符和时间格式。
通过自定义Docker镜像,实现Docker容器启动时自动初始化Mysql数据库,极大地简化了部署流程,提高了开发效率。此方法不仅适用于Mysql数据库,同样可以应用于其他Docker容器,只需根据实际需求调整Dockerfile内容即可。
三、MySQL docker 启动命令
通过使用Docker容器,可以实现MySQL数据库的轻松部署和管理。启动MySQL Docker容器的命令如下:
docker run--restart=always-p 3306:3306--name mysql5.7-v/opt/mysql:/var/lib/mysql-e MYSQL_ROOT_PASSWORD=123456-d mysql:5.7
- `--restart=always`:此参数确保容器在Docker服务重启后,会自动恢复运行。这样即使Docker服务意外停止或重启,MySQL容器也能持续运行。
- `-p 3306:3306`:此参数定义了端口映射,将容器内部的3306端口映射到宿主机的3306端口。宿主机的3306端口可以用于外部访问MySQL服务。
- `--name mysql5.7`:此参数为容器分配一个名称,便于后续容器管理。这里的名称为mysql5.7。
- `-v/opt/mysql:/var/lib/mysql`:此参数创建了一个数据卷映射,将宿主机的/opt/mysql目录挂载到容器的/var/lib/mysql目录。这样,MySQL数据库文件和数据就会存储在宿主机的指定目录,确保数据安全性。
- `-e MYSQL_ROOT_PASSWORD=123456`:此参数设置MySQL容器的root用户密码为123456。设置密码是确保数据库安全的重要步骤。
- `-d mysql:5.7`:此参数指定使用Docker镜像mysql:5.7来创建容器。使用已有的镜像可以快速部署MySQL环境。
通过执行这条命令,你可以在Docker中启动一个持久运行的MySQL 5.7容器。确保在执行命令前,你已经安装了Docker,并且MySQL镜像已准备好。这样,你就可以通过宿主机的3306端口访问到运行在Docker中的MySQL数据库了。