一、配置要求
系统: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 \
-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文件,以达到初始化效果