centos7安装docker,docker安装mysql和redis。踩坑总结,亲测有效.(2024年9月20号更新)

项目场景:

centos7安装docker步骤,以及docker安装mysql和redis。以及在安装过程中遇到的问题。踩坑总结,亲测有效。也为了记录一下自己的安装过程

问题描述

centos7安装docker步骤常见报错
1.安装docker时,使用yum安装,如果安装报错“未知的错误”需更换yum源
2.docker pull mysql报错:Error response from daemon: missing signature key
解决方案: 更新docker版本
3.docker pull mysql报错:error pulling image configuration: download failed after attempts=6: dial tcp 199.96.62.21:443: connect: connection refused
4.运行容器后,使用navcat和redis desktop manager测试连不通docker容器中的mysql和redis。

请看下面解决方案

原因分析:

原因:大家熟知的镜像源以及其他一些镜像源也遇到了问题,导致许多镜像源不可用或没有更新推送。这一系列问题影响了国内用户访问和下载Docker镜像的速度和可用性,给使用Docker的用户带来了不便‌。
所以用下面的镜像源。

解决方案:

提示:下面是详细的安装步骤和解决方案:

centos7安装docker

1. 卸载旧版本: yum remove docker  docker-common docker-selinux docker-engine
2.安装需要的依赖: yum install -y yum-utils device-mapper-persistent-data lvm2
3.设置yum源(阿里仓库)  yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.查看docker版本:yum list docker-ce --showduplicates | sort -r 
5.安装docker版本:yum -y install docker-ce-19.03.2-3.el7(建议最新版本)
6.开启:systemctl start docker 
7.查看docker版本:  docker version
8.开机自启动:systemctl enable docker

安装docker时遇到的问题总结
问题1:安装docker时,使用yum安装,如果安装报错“未知的错误”需更换yum源。
解决方案:
1.对yum源进行备份: mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup ----
2. 下载国内镜像源:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3.清理yum缓存:yum clean all
生成新的yum缓存 : yum makecache
4.不成功:1.网络连接问题 2.DNS 解析问题(你可以尝试使用其他的公共 DNS 服务器,如谷歌的 8.8.8.8 或阿里云的 223.5.5.5 来解决 DNS 解析问题) 镜像源不可用
3. 更新yum源(看需要): yum update

问题2:如报错:Error response from daemon: missing signature key
解决方案: 更新docker版本重复上面的<centos安装docker>步骤安装最新版本的docker即可。

docker安装mysql

1.拉取镜像

1.https://hub.docker.com/
2.搜索msql
3.查看镜像:docker images

docker阿里云镜像加速功能

1.sudo mkdir -p /etc/docker
2.sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://n8frpsym.mirror.aliyuncs.com"]
}
EOF
3.sudo systemctl daemon-reload
4.sudo systemctl restart docker
docker pull mysql

报错:error pulling image configuration: download failed after attempts=6: dial tcp 199.96.62.21:443: connect: connection refused

所以用下面的镜像源

1.sudo mkdir -p /etc/docker
2.sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://gallery.ecr.aws/",
    "https://gitverse.ru/docs/artifactory/gitverse-registry/",
    "https://docker.lmirror.top",
    "https://atomhub.openatom.cn/"
]
}
EOF
3.sudo systemctl daemon-reload
4.sudo systemctl restart docker
5. sudo docker pull mysql
6. sudo docker pull redis 

拉取mysql镜像的结果

[root@localhost docker]# docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
6e839ac3722d: Pull complete 
ad912193ad5f: Pull complete 
25d13d87fd8d: Pull complete 
004d383c75ef: Pull complete 
6d9bbc82a0b8: Pull complete 
81fec07ea550: Pull complete 
83357cb2d3a5: Pull complete 
8ffe968b82c1: Pull complete 
30dfd9a7ed57: Pull complete 
35844ae33cbe: Pull complete 
Digest: sha256:86cdfe832c81e39a89cfb63c3fde1683c41cc00ef91e67653c9c1df0ba80f454
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
[root@localhost docker]# docker -v
Docker version 26.1.4, build 5650f9b
[root@localhost docker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
mysql        latest    a82a8f162e18   6 weeks ago   586MB
[root@localhost docker]# docker images
运行




2.运行容器
注意换行,可能会报错,调好格式:
运行mysql:

docker run --name mysql01 \
  -e MYSQL_ROOT_PASSWORD=123456\
  -p 3306:3306 \
  -v /mydata01/mysql/data:/var/lib/mysql \
  -v /mydata01/mysql/config:/etc/mysql/conf.d \
  -v /mydata01/mysql/logs:/var/log/mysql \
  -d mysql:latest

运行redis:

docker run --name redis01 \
  -p 6379:6379 \
  -v /mydata01/redis/conf/redis.conf:/etc/redis/redis.conf \
  -d redis redis-server /etc/redis/redis.conf

对上面docker指令解释:

-d:后台运行
-p 3306:3306:指定宿主机端口与容器端口映射关系
–name mysql8:创建的容器名称
–restart=always:容器开机自启
–privileged=true:获取宿主机root权限
-v /home/docker/mysql8/log:/var/log/mysql:":"映射,映射日志目录,宿主机:容器 (数据卷)
-v /home/docker/mysql8/data:/var/lib/mysql:映射数据目录,宿主机:容器 (数据卷)
-v /home/docker/mysql8/conf.d:/etc/mysql/conf.d:映射配置目录,宿主机:容器 (数据卷)
-v /etc/localtime:/etc/localtime:ro:让容器的时钟与宿主机时钟同步,避免时区的问题,ro是read only的意思,就是只读。(数据卷)
-e MYSQL_ROOT_PASSWORD=123456:指定mysql环境变量,root用户的密码为123456
mysql:8.0.18:后台运行mysql容器,版本是8.0.18,想使用最新版本可以写成 mysql:latest。

查看正在运行的容器: docker ps或所有容器(包括没有运行的容器):docker ps -a,

问题3:如果运行成功,分别使用navcat和redis desktop manager测试是否可以连通。如果连不通,看下在本机电脑测试下是否ping通虚拟机的ip地址,如果ping不通需要修改虚拟机配置和本地电脑ip配置,解决步骤如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
redis连接测试结果:
在这里插入图片描述

mysql连接测试结果:

在这里插入图片描述

附加:linux和docker常用命令:

docker查看mysql列表:docker search mysql
拉去镜像:docker pull mysql:latest
查看镜像:docker images
查看运行容器列表: docker ps
查看所有容器列表: docker ps -a
停止容器: docker stop 容器id/容器名
强制停止容器:docker kill 容器id/容器名
删除容器docker rm <容器ID或容器名称>
docker查看mysql日志:docker logs mysql01
删除镜像:docker rmi 镜像id或镜像名字
删除多个镜像 docker rmi 镜像id 镜像id
进入容器系统 docker exec -it 容器名 /bin/bash
删除文件:rm filename
删除多个文件 rm filename1 filename2 filename3
删除目录:rm -r directoryname
查看文件内容:cat filename
查看文件内容分页 less filename
查看并启动docker容器 docker ps -a  、 、 docker start <容器ID或容器名称>
创建文件目录 mkdir -p mydata01/redis/conf
创建文件 touch redis.conf
修改文件 vi redis.conf
进入redis容器 docker exec -it redis01 redis-cli
关闭防火墙 sudo systemctl stop firewalld
禁用防火墙开机自启 sudo systemctl disable firewalld
检查防火墙状态 sudo systemctl status firewalld
启动防火墙 sudo systemctl enable firewalld ,sudo systemctl start firewalld
已运行容器自动重启 docker update --restart unless-stopped mysql
检查已运行容器状态 docker inspect -f "{{.HostConfig.RestartPolicy.Name}}" mysql

– 完毕,欢迎大佬们指正 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值