CentOS7安装Docker及安装MySQL

一、配置要求

系统:CentOS7
Linux内核:官方建议3.10以上

注:非root用户使用 sudo 执行

1.查看当前的内核版本

uname -r
[root@192 bin]# uname -r
3.10.0-957.el7.x86_64

2.更新yum包(使用root权限)

yum -y update

yum -y update 升级所有包同时也升级软件和系统内核;
yum -y upgrade 只升级所有包,不升级软件和系统内核;

3.卸载旧版本(如果之前安装的话)

[root@192 bin]# yum remove docker docker-common docker-selinux docker-engine
Loaded plugins: fastestmirror, langpacks
No Match for argument: docker
No Match for argument: docker-common
No Match for argument: docker-selinux
No Match for argument: docker-engine
No Packages marked for removal

二、安装Docker

1.安装软件包

安装需要的软件包,yum-utils提供yum-config-manager功能,另两个是devicemapper驱动依赖

[root@192 bin]# yum install -y yum-utils device-mapper-persistent-data lvm2
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.ustc.edu.cn
 * updates: mirrors.bfsu.edu.cn
Package yum-utils-1.1.31-54.el7_8.noarch already installed and latest version
Package device-mapper-persistent-data-0.8.5-3.el7_9.2.x86_64 already installed and latest version
Package 7:lvm2-2.02.187-6.el7_9.5.x86_64 already installed and latest version
Nothing to do

2.设置yum源

[root@192 bin]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror, langpacks
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo

3.选择docker版本

yum list docker-ce --showduplicates | sort -r

4.安装docker
选择一个版本进行安装

yum -y install docker-ce-18.03.1.ce

5.启动docker

systemctl start docker
systemctl enable docker --设置开机自启
systemctl status docker --查看是否启动成功

6.查看docker版本

docker -version

7.使用docker命令

docker images --查看docker镜像

三、使用docker安装mysql

1.修改镜像文件拉取地址为ustc

vi /etc/docker/daemon.json
insert 内容如下,按ESC,输入:wq 保存退出
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
systemctl restart docker --重启docker

2.拉取镜像

docker pull mysql:5.7

3.查看本地镜像

docker images

4.运行mysql

docker run -d -p 3306:3306 --name mysql \
-v /mysqldata/mysql/log:/var/log/mysql \
-v /mysqldata/mysql/data:/var/lib/mysql \
-v /mysqldata/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root mysql:5.7

上述命令的含义:

  • docker run :在docker中启动一个容器实例
  • -d :该容器在后台运行
  • -p 3306:3306 :主机端口:容器端口
  • --name mysql :容器运行后的名称
  • -v /mysqldata/mysql/log:/var/log/mysql :将容器/var/log/mysql目录下的数据,备份到主机的/mysqldata/mysql/log目录下;
  • -v /mysqldata/mysql/data:/var/lib/mysql :将容器/var/lib/mysql目录下的数据,备份到主机的/mysqldata/mysql/data目录下;
  • -v /mysqldata/mysql/conf:/etc/mysql :将容器/etc/mysql目录下的数据,备份到主机的mysqldata/mysql/conf目录下;
  • -e MYSQL_ROOT_PASSWORD=root :设置当前mysql实例的密码为root;
  • mysql:5.7 :需要运行的容器名称及版本号

通过此处-v命令备份后,就算当前mysql容器实例被删除,那么再次重启mysql容器后,数据将会自动从主机加载到容器当中


5.配置文件

1)切换到上述命令配置的主机/mysqldata/mysql/conf目录下
   cd /mysqldata/mysql/conf
2)创建my.cnf
   touch my.cnf
3) 使用vim命令对my.cnf文件添加如下内容,在docker中安装的mysql默认字符集是latin1,需要改成utf8
   [client]
   default_character_set=utf8
   [mysqld]
   collation_server = utf8_general_ci
   character_set_server = utf8
4) 重启mysql容器实例,让刚才的配置文件生效
   docker restart mysql
5) 查看是否启动成功
   docker ps

自此安装结束

四、补充

如果需要实现在运行容器实例时就执行SQL脚本,可以在上述命令的基础之上添加如下内容

1.创建如下目录

mkdir /mysqldata/mysql/init

2.在目录/mysqldata/mysql/init下创建名为init.sql的初始文件,该文件存放数据库需要初始化的内容
init.sql

##创建一个user用户,密码为123456
CREATE USER 'user'@'%' IDENTIFIED BY '123456';
##给user用户赋予数据库的所有权限
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%';
##刷新用户
flush privileges;
##创建数据库
create database test;
##建表
CREATE TABLE `userinfo`  (
  `uid` int(11) NOT NULL AUTO_INCREMENT COMMENT 'uid',
  `userid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户id',
  `nickname` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称',
  `usign` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `uimg` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '/pic/userdefaultimg.jpg' COMMENT '用户头像',
  PRIMARY KEY (`uid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

##插入数据

INSERT INTO `userinfo` VALUES (1, '123', '11', '111', '/pic/11.jpg');

3.编写启动命令

docker run -d -p 3306:3306 \
--name mysql \
-v /mysqldata/mysql/log:/var/log/mysql \
-v /mysqldata/mysql/data:/var/lib/mysql \
-v /mysqldata/mysql/conf:/etc/mysql \
-v /mysqldata/mysql/init:/docker-entrypoint-initdb.d/ \
-e MYSQL_ROOT_PASSWORD=root mysql:5.7

释意:
docker中mysql可以在启动时在/docker-entrypoint-initdb.s/目录中运行初始化的sql文件。此处通过volume映射到主机的目录/mysqldata/mysql/init下,运行init.sql文件,以达到初始化效果

posted @   Jeffrey_GG  阅读(1066)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示