一、docker的安装与踩坑

发布时间:2024年01月12日

一、安装docker(centos7安装docker)

1.安装环境前期准备

查询linux相关参数
docker安装环境:要求系统为64位、Linux系统内核版本为 3.8以上,这里选用Centos7.x

cat /etc/redhat-release

在这里插入图片描述

uname -r

在这里插入图片描述

2.参考官网安装前准备

官网地址

(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

3.参考官网安装步骤开始安装docker

步骤一:

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安装完毕!

4.运行首个容器

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

在这里插入图片描述
4.启动已停止运行的容器

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)

二、安装一些软件的踩坑

1.启动docker踩坑

执行命令systemctl start docker时报错,网上百度了好多方法,最后还是重新再安装一遍docker解决了。

2.安装mysql踩坑

在网上看了好久也收集一下,虽说网上的都没解决我的问题,但是还是有不错的案例。

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用户对应密码';

3.罕见问题

容器正常启动,能进入容器使用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安装虚拟机教程
对应博客截图
在这里插入图片描述

文章来源:https://blog.csdn.net/xiaobai_july/article/details/135548856
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。