前言
本文通过 Docker 搭建 MySQL 容器服务为例,了解 Docker 容器的一些操作命令。
拉取MySQL镜像
linux/amd64 架构平台:docker pull mysql
;
linux/arm64/v8 (适用 Apple Silicon M1) 架构平台:docker pull mysql/mysql-server
。
因为用的 Mac 是 ARM64架构的 M1 芯片,所以拉取的 MySQL 镜像命令有些区别。
运行MySQL容器
命令格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-d
,--detach
,以后台方式运行容器。
-p
,--publish
,开放端口,这里是绑定主机的 13306 端口到容器内的 3306 端口。
-v
,--volume
,绑定挂载数据卷,这里是将主机 /Users/wei/data/mysql/ 挂载到容器内。
--name
,命名容器,不指定时会给容器一个随机名称。
mysql/mysql-server:8.0
,指定镜像,也可以用镜像ID。
docker run -d \
-p 13306:3306 \
-v /Users/wei/data/mysql/:/var/lib/mysql/
--name=mysql mysql/mysql-server:8.0
获取MySQL初始密码
很多时候启动了一个容器服务后,都会有要查看服务运行日志的情况,
这时不必进入容器内,只需通过docker logs
命令。
命令格式:docker logs [OPTIONS] CONTAINER
docker logs mysql
通过上面的命令,找到其中的日志,例如:
[Entrypoint] GENERATED ROOT PASSWORD: 907*@^3KUB&l0.=b19t*ZNmpl#7Dlekw
;
也可以直接使用命令:docker logs mysql1 2>&1 | grep GENERATED
。
连接MySQL
连接至 MySQL 服务,在本地我们会用mysql -uroot -p
这样的命令,
而对于运行在容器内的 MySQL,可以通过docker exec
执行容器内命令而不必进入容器内操作。
命令格式:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
-i
,--interactive
,交互,意思就是保持标准输入 (STDIN) 打开。
-t
,--tty
,分配伪终端(pseudo-tty)并绑定到容器的标准输入上。
mysql
,指定的容器。
mysql -uroot -p
,连接至 MySQL 的命令。
docker exec -it mysql mysql -uroot -p
执行上面的命令,然后输入刚才获取到 MySQL 初始密码。
修改root@localhost密码
连接到 MySQL 后即可执行 MySQL 的一些操作。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
参考
[1] Docker run reference
[2] GitHub - docker-library/mysql