如何创建一个“静默”的MySQL Docker容器

132次阅读
没有评论

问题描述

想要创建一个MySQL Docker容器,并希望在后台运行,不要输出太多的日志信息。他想知道如何实现这个需求。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

你可以在运行容器时使用-d--detach参数来将容器运行在后台模式。这样容器就不会输出太多的日志信息了。
以下是在命令行中如何运行一个静默的MySQL容器的步骤:
1. 打开终端或命令行界面。
2. 使用以下命令运行MySQL容器:

docker run -e MYSQL_ROOT_PASSWORD=pass --name sql-db -p 3306:3306 -d mysql

在上面的命令中,我们使用docker run命令来运行MySQL容器。-e MYSQL_ROOT_PASSWORD=pass参数用于设置MySQL的root用户密码。--name sql-db参数用于给容器指定一个名称。-p 3306:3306参数用于将容器的3306端口映射到主机的3306端口。-d参数用于将容器运行在后台模式。mysql是MySQL容器的镜像名称。
3. 等待一段时间,直到容器启动完成。
4. 使用以下命令检查容器是否正在运行:

docker container ls

如果容器正在运行,你应该能够看到类似以下的输出:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
8a63d8b9d9c2        mysql               "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes        0.0.0.0:3306->3306/tcp, 33060/tcp   sql-db

方案2

使用脚本或工具来管理容器的启动顺序可能会增加复杂性,并且需要确保容器A和容器B之间的依赖关系正确设置。
另一种方法是编写脚本或使用工具来控制容器的运行顺序。你可以使用docker run命令来手动控制容器的启动顺序,或者使用一些第三方工具来管理容器的依赖关系。

示例:

以下是一个简单的bash脚本示例,可以在容器A启动后启动容器B:

#!/bin/bash
# 启动容器A
docker run -d --name container_a your_image_a
# 等待容器A完全启动
while ! docker exec container_a echo "Container A is ready"; do
  sleep 1
done
# 启动容器B
docker run -d --name container_b your_image_b

在这个示例中,我们首先使用docker run命令启动容器A,并将其命名为container_a。然后,使用一个循环来等待容器A完全启动(这里是通过在容器内运行echo命令来测试)。一旦容器A就绪,我们再使用docker run命令启动容器B,并将其命名为container_b

正文完