当前位置: 首页 > news >正文

Docker的安装使用以及常见的网络问题

一、什么是Docker

Docker是一种容器化技术,用于快速打包、分发和运行程序。他的核心思想是"一次构建,到处运行",通过将应用及其依赖的环境打包到一个轻量级、可移植的容器中,实现跨平台一致运行。

二、Docker的安装

1.CentOS7.9版本

#添加Docker软件包源
sudo wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo
#安装Docker社区版本,容器运行时containerd.io,以及Docker构建和Compose插件
sudo yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
#启动Docker
sudo systemctl start docker
#设置Docker守护进程在系统启动时自动启动
sudo systemctl enable docker

2.检查Docker是否安装成功

docker -v

docker compose version

3.添加国内镜像加速地址(这段配置是只有在下载失败时添加此配置)(如镜像可以正常下载则不用天添加此配置)

vim /etc/docker/daemon.json

{
"registry-mirrors": [

        "https://tmtvgb0d.mirror.aliyuncs.com",#最好用最稳定的镜像加速地址

        "http://docker.m.daocloud.io",
"https://docker.1ms.run",
"https://tmtvgb0d.mirror.aliyuncs.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.m.daocloud.io",
"https://t4cjkbtd.mirror.aliyuncs.com"

        ]
}
#如镜像加速地址不可用请必应自行查找

#修改完成后操作

systemctl daemon-reload  #重载docker配置

systemctl restart docker   #重启docker

#重启后检查镜像加速地址是否添加成功

docker info #使用该指令后查看Registry Mirrors字样下是否存在刚刚添加的镜像加速地址

三、Docker常用指令

docker篇

#基础指令

docker pull 镜像 #拉取镜像

docker images #查看docker镜像

docker stop 容器 #停止容器运行

docker rm #删除已停止运行的容器

docker rmi #删除未被使用的镜像

docker ps #查看docker中容器的状态

docker ps -a #查看docker中的所有容器状态

docker search   #搜索镜像

docker exec -it 容器名 /bin/bash #进入容器内部

docker run -d --name my-nginx -p 80:80 nginx #运行一个nginx容器

        -d 后台运行

        --name 容器名

        -p 宿主机的80端口映射到容器的80端口

        nginx 是所需要的镜像

#网络层指令

docker info #查看docker的信息

docker network ls #列出docker中所有网络

docker network disconnect 网络名 容器名

docker inspect 容器ID #查看容器的详细信息(ip地址、挂载卷、端口等)

docker inspect 镜像ID #查看创建时间、层信息、环境变量等

docker inspect 网络 #查看网络、Volume、插件等信息

#查看日志

docker logs --tail  -f 容器名 #查看容 器的日志输出

docker logs --since 1h 容器名 #查看容器一个小时内所有的日志输出

#系统维护

docker system df #查看容器镜像占用的磁盘空间

docker system prune #清理docker镜像占用的磁盘空间

docker compose篇

#基础指令

docker compose up -d #后台运行一个容器

        使用前提是当前文件夹下有已经编写好的docker-compose.yaml文件

docker compose down #停止运行docker-compose.yaml文件对应的容器

docker compose exec -it 容器名 /bin/bash #进去容器内部

        该指令执行时当前文件夹下必须有对应的dtocker-compose.yaml文件才行

三、Docker中常见的网络问题

个人建议:这个网络问题对于初学者来说,我觉得不用在意这个也是有一定的好处呢,有什么好处呢,就是后续遇到问题的时候,可以排查网络问题的同时,了解docker内部的网络

场景前提:在阿里云中有一台ECS主机和一个rocketmq实例,并且这两台实例都在一个VPC中,所以这两台实例的内网一定是互通的。

问题解决思路:在某次启动时,出现服务端连接不到rocketmq实例,因为都在同一个VPC下,起初我并没有往网络层想,我排查了阿里云中的AccessKey,并没有发现什么问题,继续排查了rocketmq控制台中的访问控制的智能身份识别,结果没有发现什么异常,随后启动了第二台主机,发现第二台主机,并没有出现这样的问题,这会又想到的一个问题就是可能是Jenkins缓存机制的问题,拉的代码并不是最新的代码,随后把第二台主机的代码运行到第一台主机中,结果一样,还是出现rocketmq连接不上的问题,这会我才意思到应该是网络层的问题

解决方案:使用route -n找到一个系统中存在一个与rocketmq路由表中有一个相同的IP端

                使用docker inspect指令得到docker中的其他服务正在使用该IP段,停止该容器运行

                使用ip link delete直接删除了本机的该IP端后重启服务

后续跟进处理:       

                在daemon.json文件中添加一个默认的IP端

#强制使用100.100IP端
"default-address-pools": [{"base": "100.100.0.0/16","size": 24},{"base": "172.xx.0.0/16","size": 24}
]

        添加此配置后使用systemctl daemon-reload

        重启服务 docker compose down 

                        docker compose up -d

                

http://www.dtcms.com/a/321255.html

相关文章:

  • 数据库恢复技术:保障数据安全的关键
  • DeepSeek辅助编写的带缓存检查的数据库查询缓存系统
  • Odoo 18 → Odoo 19 功能改动对比表
  • 基于Web的交互式坐标系变换矩阵计算工具
  • 时间复杂度计算(以for循环为例)
  • BBH详解:面向大模型的高阶推理评估基准与数据集分析
  • 轻松实现浏览器自动化——AI浏览器自动化框架Stagehand
  • 力扣 hot100 Day69
  • 使用 PicGo 与 GitHub 搭建高效图床,并结合 Local Images Plus 备份原图
  • 杂谈 001 · VScode / Copilot 25.08 更新
  • 供电架构之供电构型分类
  • 浪漫沙迦2|浪漫沙加2 七英雄的复仇 送修改器(Romancing SaGa 2)免安装中文版
  • 机器视觉任务(目标检测、实例分割、姿态估计、多目标跟踪、单目标跟踪、图像分类、单目深度估计)常用算法及公开数据集分享
  • excel 导出
  • 【vue】Vue 重要基础知识清单
  • Numpy科学计算与数据分析:Numpy广播机制入门与实践
  • 使用FinTSB框架进行金融时间序列预测的完整指南
  • 算法提升之-启发式并查集
  • 剪映里面导入多张照片,p图后如何再导出多张照片?
  • VScode 文件标签栏多行显示
  • QML中显示二级界面的三种方式
  • 【Git】企业级使用
  • electron自定义国内镜像
  • 静电释放场景误报率↓78%!陌讯多模态融合算法在工业检测的落地优化
  • 【unity实战】用unity实现一个简易的战斗飞机控制器
  • BUG调试案例十七:ENC424J600以太网掉线问题案例
  • uniapp瀑布流最简单的实现方法
  • SonarQube 扫描多个微服务模块
  • 【51单片机2个按键控制流水灯转向】2022-10-25
  • 移动端开发中类似腾讯Bugly的产品推荐与比较-5款APP异常最终产品推荐-卓伊凡|bigniu