Docker镜像及容器, mysql容器部署(处理:sql_mode合理设置及连接数、宿主机与容器时间同步、skip-grant-tables免密登录及密码修改)

Linux Docker镜像及容器(CentOS 7)

Docker进程命令: 启动、停止、重启、状态、开机启动、关闭开机启动

# 启动
systemctl start docker
# 停止
systemctl stop docker
# 重启
systemctl restart docker
# 查看启动状态
systemctl status docker
# 设置开机启动
systemctl enable docker
# 设置关闭开机启动
systemctl disable docker

1.镜像

# 查看主机上的镜像
docker images
# 查看所用镜像的id
docker images -q


# Docker命令搜索镜像——不靠谱
docker search 镜像名称
# Docker Hub 网址搜索——该有的都有
https://hub.docker.com/_/mysql?tab=tags

在这里插入图片描述

# 拉取镜像: docker pull 镜像名称:版本号 或 docker pull 镜像名称(没有版本号默认是最新的)
docker pull mysql
#Using default tag: latest
#latest: Pulling from library/mysql
#latest: Pulling from library/mysql
#72a69066d2fe: Pull complete 
#93619dbc5b36: Pull complete 
#99da31dd6142: Pull complete 
#626033c43d70: Pull complete 
#37d5d7efb64e: Pull complete 
#ac563158d721: Pull complete 
#d2ba16033dad: Pull complete 
#688ba7d5c01a: Pull complete 
#00e060b6d11d: Pull complete 
#1c04857f594f: Pull complete 
#4d7cfa90e6ea: Pull complete 
#e0431212d27d: Pull complete 
#Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
#Status: Downloaded newer image for mysql:latest
#docker.io/library/mysql:latest

# 查看刚下的mysql镜像
docker images
#REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
#mysql        latest    3218b38490ce   4 hours ago   516MB

# 查看已下载的Docker镜像版本:docker image inspect 镜像Id|grep -i version 或 更详细:docker inspect 镜像id
docker image inspect 3218b38490ce|grep -i version
#                "GOSU_VERSION=1.12",
#                "MYSQL_VERSION=8.0.27-1debian10"
#        "DockerVersion": "20.10.7",
#                "GOSU_VERSION=1.12",
#                "MYSQL_VERSION=8.0.27-1debian10"
#MYSQL_VERSION=8.0.27 是8.0.27版本

# 删除指定镜像: docker rmi 镜像id 或 也可以是<镜像名:tag>命令: docker rmi 镜像名:tag 
docker rmi 3218b38490ce
#Untagged: mysql:latest
#Untagged: mysql@sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
#Deleted: sha256:3218b38490cec8d31976a40b92e09d61377359eab878db49f025e5d464367f3b
#Deleted: sha256:aa81ca46575069829fe1b3c654d9e8feb43b4373932159fe2cad1ac13524a2f5
#Deleted: sha256:0558823b9fbe967ea6d7174999be3cc9250b3423036370dc1a6888168cbd224d
#Deleted: sha256:a46013db1d31231a0e1bac7eeda5ad4786dea0b1773927b45f92ea352a6d7ff9
#Deleted: sha256:af161a47bb22852e9e3caf39f1dcd590b64bb8fae54315f9c2e7dc35b025e4e3
#Deleted: sha256:feff1495e6982a7e91edc59b96ea74fd80e03674d92c7ec8a502b417268822ff
#Deleted: sha256:8805862fcb6ef9deb32d4218e9e6377f35fb351a8be7abafdf1da358b2b287ba
#Deleted: sha256:872d2f24c4c64a6795e86958fde075a273c35c82815f0a5025cce41edfef50c7
#Deleted: sha256:6fdb3143b79e1be7181d32748dd9d4a845056dfe16ee4c827410e0edef5ad3da
#Deleted: sha256:b0527c827c82a8f8f37f706fcb86c420819bb7d707a8de7b664b9ca491c96838
#Deleted: sha256:75147f61f29796d6528486d8b1f9fb5d122709ea35620f8ffcea0e0ad2ab0cd0
#Deleted: sha256:2938c71ddf01643685879bf182b626f0a53b1356138ef73c40496182e84548aa
#Deleted: sha256:ad6b69b549193f81b039a1d478bc896f6e460c77c1849a4374ab95f9a3d2cea2

# 查看mysql镜像是否删除
docker images
#REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

# 删除所有本地镜像; 是Esc键下方``号,不是单引号''
# docker rmi `docker images -q`

# 拉取镜像: docker pull 镜像名称:版本号
docker pull mysql:8.0.27

# 重命名镜像名:docker tag 镜像Id 重名的名称:版本号
docker tag 3218b38490ce mysql:8.0.27_mv
docker images
#REPOSITORY   TAG         IMAGE ID       CREATED       SIZE
#mysql        8.0.27      3218b38490ce   5 hours ago   516MB
#mysql        8.0.27_mv   3218b38490ce   5 hours ago   516MB

# 删除重名后的镜像mysql:8.0.27_mv
docker rmi mysql:8.0.27_mv

2.容器

# 查看正在运行的容器
docker ps
# 查看所有容器
docker ps -a 
# 查看所有容器id
docker ps -aq
# 查看容器信息
docker inspect 容器名称
# 查看容器状态 
docker stats 

# 创建容器a并进入终端
docker run -it --name a 镜像名:tag /bin/bash
# 创建容器b并后台启动
docker run -id --name b 镜像名:tag
# 设置 容器跟随docker一起重启, 重启服务器docker进程启动 容器也跟着启动
docker update --restart always 容器名称
# 关闭 容器跟随docker一起重启, 重启服务器docker进程启动 容器不会跟着启动
docker update --restart=no CONTAINER ID

# 进入b容器
docker exec -it b /bin/bash
# 停止b容器
docker stop b
# 启动b容器
docker start b
# 重启b容器
docker restart b
# 删除指定容器,要停止容器才能删除容器
docker rm 容器名称
# 删除所用容器; 是Esc键下方``号,不是单引号''
# docker rm `docker ps -aq`


# 重命名容器名
docker rename 容器Id 重名的名称


- -i:保持容器运行。通常与 -t 同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭
- -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
- -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec 进入容器。退出后,容器不会关闭
- -it:创建的容器一般称为交互式容器, 当前终端运行容器。与/bin/bash 使用
- -id:创建的容器一般称为守护式容器, 后台终端运行容器。
- --name:为创建的容器命名
- /bin/bash:交互方式为shell终端
- -v:设置挂载数据卷,宿主机(本机)目录文件和容器里的目录文件进行映射 会进行目录与文件同步
- -p:映射端口,将容器的端口 映射 到宿主机(本机)的端口
- --restart always:容器跟随docker一起重启, 重启服务器docker进程启动 容器也跟着启动
- -e:初始化容器环境变量 启动默认执行的命令

mysql容器部署

# 创建mysql容器名称,设置端口映射、跟随docker启动、数据卷映射、初始化mysql环境变量root用户密码
docker run -id \
--name mysql \
-p 3306:3306 \
--restart always \
-v /opt/dockerData/mysql/conf:/etc/mysql/conf.d \
-v /opt/dockerData/mysql/logs:/logs \
-v /opt/dockerData/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0.27
#23df876a9c92d7f0efee895d5632a352678f7d5078c1bc4a73798bf32b3cacc6

# 查看正在运行的容器
docker ps
#CONTAINER ID  IMAGE		  COMMAND				   CREATED		   STATUS		  PORTS													 NAMES
#23df876a9c92   mysql:8.0.27   "docker-entrypoint.s…"   6 seconds ago   Up 4 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

# mysql修改方式需要调整,首先从容器中将mysql配置复制到数据卷目录
docker cp mysql:/etc/mysql/my.cnf /opt/dockerData/mysql/conf/my.cnf

# 进入conf目录
cd /opt/dockerData/mysql/conf 

# vi 再原配置的基础上加入以下内容
vi my.cnf
#sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
# 调整mysql最大连接数
max_connections=1000

# 数据库时间与主机不同步 时间要比主机晚8个小时,此时需要将本地时间文件复制到MySQL容器中
docker cp /usr/share/zoneinfo/Asia/Shanghai mysql:/etc/localtime



# Navicat Premium 15版本之前 需要用到加密规则mysql_native_password
# mysql80之前的版本中加密规则是mysql_native_password,而在mysql80之后,加密规则是caching_sha2_password
# 进入容器,并连接mysql
#docker exec -it mysql /bin/bash
# 登录数据库
#mysql -u root -p
# 修改登录账号密码,使用mysql_native_password加密方式
#ALTER USER 'root1'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; 
# 刷新权限
#FLUSH PRIVILEGES;



# 重启mysql容器
docker restart mysql

# 用工具 Navicat Premium 15版本 查看mysql版本
select version();



# 忘记密码修改,在my.cnf中加入免密登录配置
skip-grant-tables
# 重启MySQL容器
#docker restart mysql
# 进入容器
#docker exec -it mysql /bin/bash
# 登录数据库
#mysql -u root -p
# 提示输入密码的时候,回车即可,因为已开启免密登录,然后输入下列指令将root密码之置空
#UPDATE mysql.user SET authentication_string='' WHERE user='root' and host='%';
# 退出容器后,将配置my.cmf文件中免密登录修改回来,注释掉#skip-grant-tables
##skip-grant-tables
# 重启MySQL容器
#docker restart mysql
# 进入容器
#docker exec -it mysql /bin/bash
# 登录数据库,来修改root的密码
#mysql -uroot -p
# 提示输入密码的时候,回车即可,因为密码已经置空了,然后输入下列指令修改root密码
#ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; 
# ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY '123456'; 
# 刷新权限
#FLUSH PRIVILEGES;

# mysql库中的user表,authentication_string是加密后的密码
# mysql8.0之前:使用select password('12345678')可以看出加密后的密码: A83C676908C8BBC381B1..
# mysql8.0之后:select md5('12345678')可以看出加密后的密码: a83c676908c8

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值