Docker 容器
docker容器 和 虚拟机最大的不同点是,docker 安装在一个操作系统上,在docker 里面装的操作系统 ,需要和 docker 所安装的那个操作系统是相同的内核。
提倡一个容器里装一个程序或进程。
docker 在centos7 上的下载地址:http://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/x86_64/stable/Packages/
当然也可以在 http://mirrors.ustc.edu.cn/ 上面下载自己所需要的版本
这个19.0.3版本的docker无法安装,需要安装其他的依赖内容。
yum install container-selinux
yum install containerd.io
yum install docker-ce-cli
docker版本18.03.1 无法安装,由于container-selinux 的版本低,无 pigz 软件包
yum install container-selinux
yum install pigz
安装成功。
这里在使用docker 进行镜像获取的时候不使用官方的docker 地址,因为下载数据的速度太慢。
vim /etc/docker/daemon.json
{
"live-restore": true
}
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
设置开机启动docker 服务,不需要每次开机都手动 systemctl start docker.service 启动
systemctl enable docker
查看docker容器的详细信息
docker search mysql 搜索可以下载的 mysql 镜像,一般选择stars 值最高的那个
下载docker 镜像
docker pull mysql
查看已有的镜像
docker run -id --name first_mysql -p 3309:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
-id 表示 i:运行容器,d:将运行后的容器放到后台运行
--name 对所运行的容器起的名字
-p 端口映射 宿主机端口:容器内端口
-e 代表添加环境变量 MYSQL_ROOT_PASSWORD是root用户的登陆密码
查看开启的容器
进到容器里面
登录到容器中的mysql
或者不用选mysql数据库中的某个库,在定位表的时候直接注明是哪个库中的表
可以看到3309 的端口服务是正常运行的。
在进行远程连接的时候出现,1251 的错误
在用户登录的时候发现 mysql 的版本是 8.0
mysql8 之前的版本中加密规则是mysql_native_password,
mysql8之后,加密规则是caching_sha2_password,
解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password.
alter user 'root'@'%' identified with mysql_native_password by '123456';
注意:
在下次开启mysql 的时候不要再用
docker run -id --name mysql -p 3309:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
直接使用
docker start mysql 开启mysql
docker stop mysql 关闭mysql
停止服务
在开启某个容器的时候需要先将防火墙打开,否则可能会出现iptables 报错的问题
开启 first_mysql 容器
将设置好的first_msyql 打包成镜像,所打包的镜像名 必须为 小写
查看刚才保存的镜像
将打包好的镜像输出到文件夹内
删除镜像文件
删除某个docker容器
删除镜像
docker rmi mymysql
导入到docker 镜像
通过cmd远程连接mysql数据库
镜像的备份
防止在配置的过程中配置错误,又要从新拉取新的镜像文件
将配置好的 mymysql 打包成 mymysqlback 的新镜像(可以在容器运行的时候进行打包)
查看docker 容器中所有启动过的镜像
只有启动过的镜像才可以使用
docker start mysql
docker stop mysql
由于mymysqlback 没有启动过 使用 docker start mymysqlback 的时候显示失败
docker run -id --name mymysqlback -p 3309:3306 -e MYSQL_ROOT_PASSWORD=123456 mymysqlback
启动之后,数据库中的数据库中数据库和表的数据是没有发生改变的,使用远程工具进行连接的时候出现1251错误这个是,mysql8 的认证方式不同,前面已经说过了。
alter user 'root'@'%' identified with mysql_native_password by '123456';
再次连接成功。