您当前的位置:首页 > 互联网教程

如何进入启动的mysql docker容器

发布时间:2025-05-20 13:20:21    发布人:远客网络

如何进入启动的mysql docker容器

一、如何进入启动的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数据库了。