docker、mysql等相关镜像现在需要使用科学下载后,上传到虚机上。
现在国内访问docker源有问题,可以更改docker镜像加速地址,如下:
vim /etc/docker/daemon.json
#插入以下内容
{
"registry-mirrors": [
"https://docker-0.unsee.tech",
"https://docker.xuanyuan.me",
"https://docker.1panel.live",
"https://docker.m.daocloud.io"
]
}
如上述docker镜像加速地址失效,请更换其他地址。
更新地址后,重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
查看mysql相关镜像
[root@zk data]# docker search mysql
NAME DESCRIPTION
docker.io/library/mysql MySQL is a widely used, open-source relation...
docker.io/library/mariadb MariaDB Server is a high performing open sou...
docker.io/library/percona Percona Server is a fork of the MySQL relati...
docker.io/library/phpmyadmin phpMyAdmin - A web interface for MySQL and M...
docker.io/circleci/mysql MySQL is a widely used, open-source relation...
docker.io/bitnami/mysql Bitnami MySQL Docker Image
docker.io/bitnami/mysqld-exporter
docker.io/ubuntu/mysql MySQL open source fast, stable, multi-thread...
docker.io/cimg/mysql
docker.io/rapidfort/mysql RapidFort optimized, hardened image for MySQ...
docker.io/google/mysql MySQL server for Google Compute Engine
docker.io/rapidfort/mysql8-ib RapidFort optimized, hardened image for MySQ...
docker.io/hashicorp/mysql-portworx-demo
docker.io/rapidfort/mysql-official RapidFort optimized, hardened image for MySQ...
docker.io/newrelic/mysql-plugin New Relic Plugin for monitoring MySQL databa...
docker.io/databack/mysql-backup Back up mysql databases to... anywhere!
docker.io/linuxserver/mysql A Mysql container, brought to you by LinuxSe...
docker.io/bitnamicharts/mysql
docker.io/mirantis/mysql
docker.io/docksal/mysql MySQL service images for Docksal - https://d...
docker.io/vitess/mysqlctld vitess/mysqlctld
docker.io/linuxserver/mysql-workbench
docker.io/eclipse/mysql Mysql 5.7, curl, rsync
docker.io/drud/mysql
docker.io/ilios/mysql Mysql configured for running Ilios
拉取mysql5.7镜像
[root@zk data]# docker pull mysql:5.7
Resolving "mysql" using unqualified-search registries (/etc/containers/registries.conf)
Trying to pull docker.io/library/mysql:5.7...
Getting image source signatures
Copying blob ac563158d721 done
Copying blob 72a69066d2fe done
Copying blob 93619dbc5b36 done
Copying blob 99da31dd6142 done
Copying blob 626033c43d70 done
Copying blob 37d5d7efb64e done
Copying blob d2ba16033dad done
Copying blob 0ceb82207cd7 done
Copying blob 37f2405cae96 done
Copying blob e2482e017e53 done
Copying blob 70deed891d42 done
Copying config c20987f18b done
Writing manifest to image destination
Storing signatures
c20987f18b130f9d144c9828df630417e2a9523148930dc3963e9d0dab302a76
查看本地mysql5.7镜像
[root@zk data]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/rabbitmq management 44af249989a0 2 weeks ago 282 MB
docker.io/library/mysql 5.7 c20987f18b13 16 months ago 454 MB
使用本地镜像启动mysql5.7
docker run -p 3306:3306 --name mysql --restart=always --privileged=true \
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=Htyw123! -d mysql:5.7
启动后日志提示
[root@zk conf]# docker logs mysql
2024-07-23 17:49:53+08:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.kzetVeI3h6
mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory)
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
原因:
检查本地配置目录:检查宿主机的 /usr/local/mysql/conf 目录中是否存在 conf.d 和 mysql.conf.d 子目录,如果不存在,创建这俩子目录。
命令解析:
-p 3306:3306:指定宿主机端口与容器端口映射关系
--name mysql:创建的容器名称
--restart=always:总是跟随docker启动
--privileged=true:获取宿主机root权限
-v /usr/local/mysql/log:/var/log/mysql:映射日志目录,宿主机:容器
-v /usr/local/mysql/data:/var/lib/mysql:映射数据目录,宿主机:容器
-v /usr/local/mysql/conf:/etc/mysql:映射配置目录,宿主机:容器
-v /etc/localtime:/etc/localtime:ro:让容器的时钟与宿主机时钟同步,避免时区的问题,ro是read only的意思,就是只读
-e MYSQL_ROOT_PASSWORD=Htyw123!:指定mysql环境变量,root用户的密码为Htyw123!
-d mysql:5.7:后台运行mysql容器,版本是5.7
docker运行mysql前,需创建mysql相关目录
mkdir -p /usr/local/mysql/log
mkdir -p /usr/local/mysql/data
mkdir -p /usr/local/mysql/conf
查看docker进程
[root@zk share]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
65a77b1bc961 docker.io/library/mysql:5.7 mysqld 5 hours ago Up About an hour ago 0.0.0.0:3306->3306/tcp mysql
[root@zk share]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
65a77b1bc961 docker.io/library/mysql:5.7 mysqld 5 hours ago Up About an hour ago 0.0.0.0:3306->3306/tcp mysql
[root@zk share]#
查看mysql容器相关日志
docker logs --tail=200 -f mysql
进入mysql容器内部
docker exec -it mysql /bin/bash
修改mysql配置文件
添加如下配置
vim /usr/local/mysql/conf/my.conf
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
#设置密码验证规则
default_authentication_plugin=mysql_native_password
#限制导入导出的数据目录
#为空,不限制导入导出目录;
#指定目录,必须从改目录导入导出,且mysql不会自动创建该目录;
#为NULL,禁止导入导出功能
secure_file_priv=
skip-character-set-client-handshake
skip-name-resolve
重启mysql服务,使配置文件生效
docker restart mysql