项目场景:
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
– 完毕,欢迎大佬们指正 –