【DockerCE】Docker运行MySQL-8.0容器实例

        Oracle官方提供了在Linux服务器里面部署MySQL的Docker镜像的方法,包括了普通的社区版以及付费的企业版。下面就以付费的企业版为例,为大家展示MySQL容器的运行基本步骤。

        第一步,从MOS(My Oracle Support)上下载MySQL 8.0.26最新版的企业版docker镜像。然后将下载好的MySQL docker企业版镜像上传到Linux服务器,并且导入镜像。

# docker load < ./mysql-enterprise-server-8.0.26.tar 
389989a49b52: Loading layer [==================================================>]  114.2MB/114.2MB
604dc2751be5: Loading layer [==================================================>]  6.939MB/6.939MB
ca4166caadd2: Loading layer [==================================================>]  382.2MB/382.2MB
ce9154ba7cce: Loading layer [==================================================>]  2.048kB/2.048kB
a07698a73839: Loading layer [==================================================>]   5.12kB/5.12kB
d86149a64e6b: Loading layer [==================================================>]  9.216kB/9.216kB
372e007a34d6: Loading layer [==================================================>]  2.048kB/2.048kB
Loaded image: mysql/enterprise-server:8.0
# docker images| grep mysql
REPOSITORY                      TAG       IMAGE ID       CREATED       SIZE
mysql/enterprise-server         8.0       425f2694c371   3 weeks ago   490MB

        第二步,我们需要为MySQL镜像的首次启动和运行做一些准备,比如宿主机和容器的端口映射、MySQL数据库文件的持久化(包括配置文件以及数据库目录),否则一旦容器销毁,到时候哭都来不及了……

创建数据文件目录和配置文件目录:
# mkdir -p /data/mysql/datadir /data/mysql/conf

运行MySQL容器
# docker run --name=mysql8.0 \
--restart on-failure \
--mount type=bind,src=/data/mysql/my.cnf,dst=/etc/my.cnf \
--mount type=bind,src=/data/mysql/datadir,dst=/var/lib/mysql \
-p 3306:3306 \
-d mysql/mysql/enterprise-server:8.0 \
--character-set-server=utf8mb4

如果你想让运行在其他容器的应用连接到这个MySQL容器实例,那就需要为MySQL和应用的容器实例创建同一个网络
# docker network create your-customized-net
# docker run --name=mysql8.0 \
--restart on-failure \
--network=your-customized-net \
--mount type=bind,src=/data/mysql/conf/my.cnf,dst=/etc/my.cnf \
--mount type=bind,src=/data/mysql/datadir,dst=/var/lib/mysql \
-p 3306:3306 \
-d mysql/enterprise-server:8.0 \
--character-set-server=utf8mb4

# docker ps
CONTAINER ID   IMAGE                         COMMAND                  CREATED         STATUS                            PORTS                                                        NAMES
03e55318b00d   mysql/enterprise-server:8.0   "/entrypoint.sh --ch…"   5 seconds ago   Up 5 seconds (health: starting)   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060-33061/tcp   mysql8.0

查看MySQL数据库的初始密码
# docker logs mysql8.0 2>&1 | grep GENERATED
[Entrypoint] GENERATED ROOT PASSWORD: 6A9ghVMv07G&gB.2bp_?=7+j+r3_V8CQ

使用初始化密码登陆到数据库,并设置新密码
# docker exec -ti mysql8.0 mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 18
Server version: 8.0.26-commercial

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '1qazXdr5';
Query OK, 0 rows affected (0.00 sec)

应用使用同一个network启动,以便连接容器中的MySQL数据库实例
# docker run --name=xxx_app --network=your-customized-net -d your_app:$version
# 参考
https://dev.mysql.com/doc/refman/8.0/en/docker-mysql-getting-started.html
https://dev.mysql.com/doc/refman/8.0/en/docker-mysql-more-topics.html

你可能感兴趣的:(Docker,mysql)