通过官方Mysql镜像并修改配置文件并重新打包新镜像步骤


官方的docker容器均采用默认的配置,如果直接拿来使用,有些配置不太适合我们使用,比如最大连接数,缓存,character编码等,因此需要在官方的基础上修改好配置变成自己合适的,后续就可以通过改造后的镜像就直接使用了,现记录过程如下。

1.拉取镜像

docker pull mysql:5.7.36

2.启动镜像

docker run -itd --name mysql_5.7.36 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.36

3.准备配置文件

cat > my.cnf << EOF
[client] 
default-character-set=utf8mb4

[mysql]
port = 3306
default-character-set=utf8mb4
 
[mysqld]
port = 3306
default_storage_engine=InnoDB
datadir = /var/lib/mysql
character-set-client-handshake = FALSE
character-set-server=utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
max_connections = 2000
max_allowed_packet = 128M
innodb_file_per_table = 1
tmp_table_size = 134217728
max_heap_table_size = 134217728

lower_case_table_names=1

log-bin = mysql-bin
max_binlog_size = 1024M
expire_logs_days = 1
log_slave_updates = 1
server-id = 1

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
EOF

4.将修改后的配置文件拷回去

##docker cp my.cnf 容器名称或容器id:/etc/my.cnf

docker cp my.cnf d9437146d6b3:/etc/my.cnf

5.进入容器确认文件已拷进去

docker exec -it d9437146d6b3 /bin/bash
cat /etc/my.cnf
exit

6.停止容器

docker stop d9437146d6b3

7.将修改好的容器打包成新镜像以供后续使用

docker commit -a "mysql5.7.36" -m "sendi_mysql_5.7.36" d9437146d6b3 sendi_mysql:5.7.36

8.重新以新镜像启动一个容器

docker run -itd --name mysql_5.7.36 -e MYSQL_ROOT_PASSWORD=123456 -p 13306:3306 sendi_mysql:5.7.36

9.测试

mysql -uroot -p123456 -h127.0.0.1 -P13306 -A
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将机器上已经配置好的MySQL服务打包Docker镜像的过程如下: 1. 在机器上执行`docker ps`命令,查看当前正在运行的MySQL容器的ID。 2. 导出MySQL容器的数据卷: ``` docker run --rm --volumes-from <CONTAINER_ID> -v $(pwd):/backup busybox tar cvf /backup/mysql.tar /var/lib/mysql ``` 这的含义是,使用`docker run`命令启动一个临时容器,运行`busybox`镜像,并挂载MySQL容器的数据卷。`--volumes-from`参数用于指定从哪个容器挂载数据卷,`-v`参数用于将`/var/lib/mysql`目录映射到当前目录下的`mysql.tar`文件。`tar cvf`命令将`/var/lib/mysql`目录打包为一个tar文件。 3. 将`mysql.tar`文件传输到另一台机器上。 4. 在另一台机器上,创建一个目录,并将`mysql.tar`文件复制到该目录下。 5. 在该目录下,执行以下命令加载MySQL数据卷: ``` docker run --rm -v $(pwd):/backup busybox tar xvf /backup/mysql.tar ``` 这的含义是,使用`docker run`命令启动一个临时容器,运行`busybox`镜像,并将当前目录下的`mysql.tar`文件解压到容器中的`/var/lib/mysql`目录。 6. 创建一个名为`Dockerfile`的文件,内容如下: ``` # 设置基础镜像 FROM mysql:latest # 将本地的mysql配置文件复制到容器中 COPY my.cnf /etc/mysql/conf.d/ # 将本地的mysql数据卷复制到容器中 COPY /var/lib/mysql /var/lib/mysql # 暴露MySQL服务端口 EXPOSE 3306 ``` 这的含义是,创建一个基于最MySQL官方镜像Docker镜像,将本地的MySQL数据卷和配置文件复制到容器中,并暴露MySQL服务的3306端口。 7. 在包含`Dockerfile`文件的目录下,执行以下命令构建MySQL镜像: ``` docker build -t my-mysql . ``` 这的含义是,使用`docker build`命令构建当前目录下的`Dockerfile`文件,`-t`参数用于指定镜像名称和标签(在这是`my-mysql`),最后的`.`表示当前目录下的`Dockerfile`文件。 8. 运行MySQL容器: ``` docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw my-mysql ``` 这的含义是,使用`docker run`命令启动MySQL容器,`-d`参数表示在后台运行,`-p`参数表示将容器的3306端口映射到宿主机的3306端口,`--name`参数表示指定容器的名称,`-e`参数表示设置MySQL的root用户密码,最后的`my-mysql`表示使用该名称的镜像启动容器。 这样,我们就成功地将机器上已经配置好的MySQL服务打包成了Docker镜像,并在别的机器下构建和运行了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值