查询linux相关参数
docker安装环境:要求系统为64位、Linux系统内核版本为 3.8以上,这里选用Centos7.x
cat /etc/redhat-release
uname -r
官网地址
(0)如果之前你的gcc相关软件已经安装或更新直接跳过此步骤。(我这里使用到额vm虚拟机安装的新centos系统)
yum -y install gcc
yum -y install gcc-c++
(1)安裝docker之前,如果你之前安装过docker,参考如下命令进行卸载(先停掉当前docker)
停止当前运行的docker
systemctl stop docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
额外需要执行的命令
卸载之前安装的docker引擎等相关内容,这个和你安装时的内容有关,多加几个防止删不干净。
yum remove docker-ce docker-ce-cli containerd.io
删除相关目录
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
步骤一:
sudo yum install -y yum-utils
步骤二:
这里不推荐大家使用官网的镜像仓库地址,改用阿里云地址
使用阿里云地址命令如下
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
步骤三
更新yum软件包索引
yum makecache fast
步骤四
安装DOCKER CE
yum -y install docker-ce docker-ce-cli containerd.io
步骤五
启动docker
systemctl start docker
开机启动docker
systemctl enable docker
常用命令
1.停止docker
systemctl stop docker
2.重启docker:
systemctl restart docker
3.查看docker状态
systemctl status docker
如果控制台无任何打印信息,则表示docker基本无问题启动成功。
步骤六
验证docker是否安装成功
docker version
docker run hello-world
因为是新安装的docker,所以我们本地是没有hello-world这个镜像的,它会自动的去镜像仓库中下载并执行run操作。
我们也可以先下载镜像然后再执行run命令。
下载镜像(默认不知道版本号下载仓库中最新镜像)
docker pull hello-world
容器常用命令
1.列出当前所有正在运行的容器
docker ps
2.进入容器并返回一个伪终端
docker exec -it 容器id /bin/bash
容器id如下
3.退出伪终端
exit
docker start 容器ID或者容器名
5.重启容器
docker restart 容器ID或者容器名
6.停止容器
docker stop 容器ID或者容器名
7.强制停止容器
docker kill 容器ID或容器名
8.删除已停止的容器
docker rm 容器ID
一次性删除多个
docker rm -f 容器ID1 容器ID2
一次性删除所有已停止的
docker rm -f $(docker ps -a -q)
执行命令systemctl start docker
时报错,网上百度了好多方法,最后还是重新再安装一遍docker解决了。
在网上看了好久也收集一下,虽说网上的都没解决我的问题,但是还是有不错的案例。
mysql5和8都适用
①mysql用root用户连接不上之权限问题
如果你的mysql容器中,默认mysql库的user表中少了这么一条数据,那那么外部是无法连接到容器中的mysql。解决方式要么少了加一条数据,要么其他的情况改成%,再或者新建一个用户。
创建一个名为testuser的新用户并设置密码
CREATE USER 'testuser'@'%' IDENTIFIED BY 'password';
授予该用户在所有数据库上的全部权限
GRANT ALL PRIVILEGES ON *.* TO 'testuser'@'%';
更新权限生效
FLUSH PRIVILEGES;
②mysql8数据库使用sqlyog连接密码加密方式问题
更改加密方式即可,这个只在旧版的sqlyog上出现,新版IDE已解决该问题。
执行命令如下
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的root用户对应密码';
容器正常启动,能进入容器使用mysql(5.7或8我都尝试了)。外部系统就是无法连接mysql。
宿主机无法连接mysql,外部Windows系统也无法连接容器的mysql。
容器是启动的这一点不用怀疑,
也不是什么mysql密码输入错误等问题,
也不是端口号问题。
各种验证,Windows ping 宿主机(也就是vm的centos7)能通,
但是在Windows的cmd中 telnet 192.168.x.x 3306,不通。
然后又在宿主机中进行对3306的测试还是不通。
linux中的防火墙早就关闭了,这一点也不需要考虑。
经过两天的研究,期间重装了无数次虚拟机的系统,重装了无数次docker,最终解决方法为把虚拟机原来的4G内存调整为8G解决。
我人都裂了,为什么会这样,其实也有一定的前兆,就是我安装docker的时候,控制台无缘无故的重启,我以为是我网络卡顿(这块我进行过重试,就是重新执行一下某个步骤的按照命令,恰巧有一次命令最后执行成功了,所以我以为是网络问题),没网内存大小上想,好几次都这样我才意识到可能是虚拟机的配置太拉胯了,因为我本地Windows的配置是
16G内存+1T西数黑盘固态,给虚拟机分的50G固态也够用了。拉胯的可能是我的处理i7-7代,处理器我也没没有额外配置,就默认1核心。
最后我都上调了一下虚拟机的配置 8G内存,60G固态,2处理器,每个内核还是1。重新安装docker,运行一个mysql容器实例,Windows连接容器中的mysql,成功连接,无任何问题。
在往期教程中已经有详细的安装虚拟机的教程,如果想要我的linux的镜像文件,可以私信我,我看到的时候会分享给你。
vm安装虚拟机教程
对应博客截图