$ docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
这是一个使用Docker命令行工具来启动一个MySQL容器的命令。下面,让我们来详细解析这条命令:
docker run
docker
: Docker的命令行工具。
run
: Docker的子命令,用于启动一个新的容器实例。
-itd
这是三个组合起来的标志:
-i
或 --interactive
: 保持标准输入打开,即使没有附加到容器的终端。
-t
或 --tty
: 为容器分配一个虚拟终端。
-d
或 --detach
: 在后台运行容器,并返回容器ID。
使用这三个标志的组合意味着在后台启动了一个容器,但该容器仍然为交互命令提供了一个虚拟终端。
--name mysql-test
--name
: 指定容器的名称。在此情况下,容器的名称将是mysql-test
。-p 3306:3306
-p
或 --publish
: 这允许映射容器内部的端口到宿主机的端口。-p选项中的端口映射格式为 -p :
。在这个例子中,宿主机的3306端口被映射到容器的3306端口。这意味着当尝试在宿主机上连接到3306端口时,实际上是连接到容器内的MySQL服务。-e MYSQL_ROOT_PASSWORD=123456
-e
: 允许为容器设置环境变量。
MYSQL_ROOT_PASSWORD
: 这是MySQL Docker镜像识别的一个特殊环境变量,它设置了MySQL root用户的密码。在这个例子中,root密码被设置为123456
。
mysql
这是要从Docker Hub或其他Docker注册表中拉取并运行的Docker镜像的名称。这里选择的是官方的MySQL镜像。
命令docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
将在后台启动一个名为mysql-test
的MySQL容器实例,映射宿主机的3306端口到容器的3306端口,并设置MySQL root用户的密码为123456
。
docker exec -it mysql-test bash
这是一个使用Docker命令行工具运行的命令,下面,让我们详细解释一下:
docker
这是Docker的命令行工具。Docker是一个开放平台,用于开发、运输和运行应用程序。它使用OS级别的虚拟化来打包应用程序及其所有的依赖项到一个容器中。
exec
这是Docker命令中的一个子命令。docker exec
允许在正在运行的容器中执行命令。基本上,可以用它来在容器内部运行任何命令,就像在本地机器上直接运行命令一样。
-it
这实际上是两个标志的组合:
-i
或 --interactive
: 保持标准输入打开,即使没有附加到容器的终端。这意味着可以与执行的命令进行交互。
-t
或 --tty
: 为执行的命令分配一个虚拟终端。这通常会为提供一个可以输入命令的完整shell界面。
组合这两个选项通常用于在容器中启动交互式shell会话。
mysql-test
这是容器的名字或ID。在这个例子中,我们尝试在名为mysql-test
的容器中执行命令。
bash
这是我们在容器内部要执行的命令。在这种情况下,我们希望启动bash
shell。bash
是一个流行的shell,用于在Linux和其他UNIX系统上运行命令。
docker exec -it mysql bash
命令将在名为mysql
的正在运行的Docker容器中启动一个交互式的bash
shell。这对于查看容器内部、手动运行命令或进行故障排查非常有用。