笔者说
笔者下面的步骤及配置是基于指定版本的实践,大多数程序大多数情况下在相差不大的版本时可以直接参考。(当然了,即使是非 Docker 方式安装程序也是一样道理)
拉取镜像
笔者说
拉取镜像时需要明确镜像版本(Tag)。
不指定版本(Tag)就拉取镜像,那拉取下来的镜像版本(Tag)默认是 latest
(最新的)。latest
会跟随 Docker Registry 中的记录变化,现在拉取下来的 latest
是 x1 版本,但隔了一段时间后你在其他机器上再拉取 latest
可能就是 x2 版本了。
变化的版本,不利于生产环境部署的稳定。无论是后续在其他环境部署还是扩容集群等场景均要求根据架构要求指定好版本。
docker pull mysql:8.0.29
运行容器
笔者说
下方的配置,切记要根据个人实际情况来修改。
- 容器的名称
- 镜像名称:版本
- 是否设置自启动?
- 环境变量配置
- 是否端口映射?
- 映射的话映射到宿主机哪个端口?
- 是否挂载卷?
- 挂载的话要挂载宿主机哪个目录?
- …
- 等自定义配置
# MYSQL_ROOT_PASSWORD:root 用户密码
# MYSQL_DATABASE:初始化数据库
# MYSQL_USER:初始化普通用户
# MYSQL_PASSWORD:初始化普通用户密码
docker run -d \
--name mysql mysql:8.0.29 \
--restart=always \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=test \
-e MYSQL_USER=test \
-e MYSQL_PASSWORD=123456 \
-p 3306:3306 \
-v /opt/disk/docker/volumes/mysql/conf:/etc/mysql/conf.d \
-v /opt/disk/docker/volumes/mysql/data:/var/lib/mysql \
-v /opt/disk/docker/volumes/mysql/logs:/logs \
# 使用该参数,容器内的 root 用户才拥有真正的 root 权限
--privileged=true
验证
服务器开放好相应端口或设置好安全组规则后,直接用 Navicat 连接即可。
Docker Compose脚本
如果你是用的 docker-compose 来安装,下方附上相应 docker-compose.yml 脚本内容。
version: '3'
services:
mysql:
container_name: mysql
image: mysql:8.0.29
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: test
MYSQL_USER: test
MYSQL_PASSWORD: 123456
ports:
- 3306:3306
volumes:
- /opt/disk/docker/volumes/mysql/conf:/etc/mysql/conf.d
- /opt/disk/docker/volumes/mysql/data:/var/lib/mysql
- /opt/disk/docker/volumes/mysql/logs:/logs
privileged: true
编写好 docker-compose.yml 脚本后,在脚本同级目录执行下方命令即可。
docker-compose up -d
附:安装MariaDB
运行容器
docker run -d \
--name mariadb mariadb \
--restart=always \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=test \
-e MYSQL_USER=test \
-e MYSQL_PASSWORD=123456 \
-p 3306:3306 \
-v /opt/disk/docker/volumes/mysql/conf:/etc/mysql/conf.d \
-v /opt/disk/docker/volumes/mysql/data:/var/lib/mysql \
--privileged=true
Docker Compose脚本
version: '3'
services:
mariadb:
container_name: mariadb
image: mariadb
restart: always
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: test
MYSQL_USER: test
MYSQL_PASSWORD: 123456
ports:
- 3306:3306
volumes:
- /opt/disk/docker/volumes/mysql/conf:/etc/mysql/conf.d
- /opt/disk/docker/volumes/mysql/data:/var/lib/mysql
privileged: true