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

docker实践(一)

一、win11安装虚拟机

1. 安装虚拟机软件
VMware Workstation Pro / Player (推荐,功能强)
去 VMware 官网下载,官网地址:https://www.vmware.com/go/getworkstation-win
安装完成后重启 Windows。
2. 创建 Linux 虚拟机
打开 VMware → 新建虚拟机。
选择 安装镜像文件(ISO),加载你下载的 Linux 发行版(Ubuntu/CentOS/Debian 等)。 Centos6 地址:地址:https://wiki.centos.org/Download分配资源:
CPU:2核以上
内存:2GB 
磁盘:30GB 以上(动态分配即可)
网络设置推荐选择 桥接模式(Bridged) 或 NAT 模式(要能和宿主机互通)。
3. xshell连接
打开终端,ip addr 查看ip地址,xshell连接

在这里插入图片描述

参考文章:https://www.cnblogs.com/malinyan/p/17070921.html

二、docker安装

1、查看操作系统版本是否是 CentOS7 及以上
cat /etc/redhat-release
2、查看 CentOS7 的内核版本,Docker 要求 CentOS7 系统必须为 64 位,且系统内核版本为 3.10 及以上
uname -r
以下步骤请以root用户运行指令,如果不是以 root 用户运行,请在指令的最前面加上sudo,表示以系统管理者 (root) 的身份执行指令
3、卸载旧版本 (如果之前没有安装过旧版本的 docker 可以跳过)
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
4、安装 docker 所需的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2

在这里插入图片描述

这个报错说明 CentOS 虚拟机里 yum 无法联网,所以取不到镜像源。常见原因和解决方法如下1. 检查虚拟机网络
先确认虚拟机能否上网:
ping www.baidu.com
ping 8.8.8.8
如果 8.8.8.8 能 ping 通,但域名(百度)ping 不通 → DNS 问题。
如果 都 ping 不通 → 虚拟机没联网(VMware/VirtualBox 网络配置有问题)
这里我两个都能ping 通#!/bin/bash
# 适用于 CentOS 7,替换 yum 源为阿里云镜像echo ">>> 备份原有 repo 文件..."
mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ 2>/dev/nullecho ">>> 下载阿里云 CentOS7 repo..."
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repoecho ">>> 清理缓存并生成缓存..."
yum clean all
yum makecacheecho ">>> 完成!可以试试安装软件,比如: yum install -y net-tools"编写脚本,粘贴上面代码
vi fix_yum.sh
chmod +x fix_yum.sh
./fix_yum.sh#!/bin/bash
# 适用于 CentOS7,安装 Docker + docker-compose v2.27.1set -eecho ">>> 卸载旧版本 Docker(如果有)..."
yum remove -y docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine || trueecho ">>> 安装依赖..."
yum install -y yum-utils device-mapper-persistent-data lvm2echo ">>> 添加 Docker 官方 repo..."
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoecho ">>> 安装 Docker 引擎..."
yum install -y docker-ce docker-ce-cli containerd.ioecho ">>> 启动 Docker 并设置开机自启..."
systemctl start docker
systemctl enable dockerecho ">>> 下载并安装 docker-compose v2.27.1..."
curl -L "https://github.com/docker/compose/releases/download/v2.27.1/docker-compose-$(uname -s)-$(uname -m)" \-o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-composeecho ">>> 验证版本..."
docker --version
docker-compose versionecho ">>> 安装完成!🚀"编写脚本,执行如上命令,此时安装Docker 最新版(docker-ce)
报错 Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)说明 Docker 可以运行,但访问 Docker Hub(registry-1.docker.io)超时。常见原因有:
虚拟机能上网,但访问国外网站慢/被墙
Docker Hub 在国外,国内直连经常超时。
DNS 解析慢/失败
虚拟机里 DNS 没配好,导致 registry-1.docker.io 解析不了。
代理没配置
如果宿主机走代理(VPN),但 Docker 没配,就连不上
解决方案(换国内镜像数据源)
#!/bin/bash
# 一键配置 Docker 国内镜像源(适用于 CentOS7)set -eecho ">>> 创建 /etc/docker 目录..."
mkdir -p /etc/dockerecho ">>> 写入国内镜像源配置..."
cat > /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://docker.m.daocloud.io","https://mirror.ccs.tencentyun.com","https://registry.docker-cn.com","https://hub-mirror.c.163.com"]
}
EOFecho ">>> 重新加载并重启 Docker..."
systemctl daemon-reexec
systemctl restart dockerecho ">>> 配置完成!现在可以尝试: docker pull hello-world"

查看 docker 是否安装成功
在这里插入图片描述

三、常用的docker命令

//启动docker
systemctl start docker
//停止docker
systemctl stop docker
//重启docker
systemctl restart docker
//设置docker开机自启
systemctl enable docker
//启动容器
docker start 容器ID/容器名称
//重启容器
docker restart 容器ID/容器名称
//停止容器
docker stop 容器ID/容器名称
//强制停止容器
docker kill 容器ID/容器名称// 查看docker 版本信息
docker version
//查看镜像
docker images
//查看所有镜像(包含中间镜像层)
docker images -a
// 查找镜像
docker search 镜像名称
// 获取镜像元信息
docker inspect 镜像ID/镜像名称[:版本号]
docker inspect 容器ID/容器名称// 拉取镜像
docker pull 镜像名称[:版本号]//删除单个镜像
docker rmi 镜像ID/镜像名称[:版本号]
//-f:表示强制删除,强制删除单个镜像
docker rmi -f 镜像ID/镜像名称[:版本号]
//删除多个镜像
docker rmi [-f] 镜像1ID/镜像1名称[:版本号] 镜像2ID/镜像2名称[:版本号]
//删除已停止的容器
docker rm 容器ID/容器名称
//-f:表示强制删除,删除正在运行的容器
docker rm -f 容器ID/容器名称
//删除全部的容器
docker rm -f $(docker ps -qa)//以交互模式运行容器
docker run -it -v 宿主机目录/文件的绝对路径:容器内目录/文件的绝对路径[:rw/ro] -p 主机端口:容器端口 --name=容器名称 镜像ID/镜像名称[:版本号]
//以后台方式运行容器 (推荐)
docker run -d -v 宿主机目录/文件的绝对路径:容器内目录/文件的绝对路径[:rw/ro] -p 主机端口:容器端口 --name=容器名称 镜像ID/镜像名称[:版本号]
//以exec方式进入到容器
docker exec -it 容器ID/容器名称 /bin/bash 或 /bin/sh
//以attach方式进入到容器
docker attach 容器ID/容器名称
//如果不想进入容器,直接获取相关指令的运行结果,可在后面填写相关操作指令
docker exec -it 容器ID/容器名称 相关命令
//退出并停止容器
exit
//退出但容器不停止
ctrl + p + q//查看当前运行的容器
docker ps
//查看所有容器 (运行和停止的)
docker ps -a
//查看容器日志并显示时间戳
docker logs -t 容器ID/容器名称
//持续输出容器日志
docker logs -f 容器ID/容器名称
//查看最后n条容器日志
docker logs --tail n 容器ID/容器名称
// 查看容器日志
docker logs -f -t 容器ID/容器名称

docker 镜像的备份、恢复与迁移

1、docker 镜像的备份 (导出)
docker save -o 镜像导出文件(格式为tar压缩文件) 镜像ID或镜像名称[:版本号]
或
docker save 镜像ID或镜像名称[:版本号] > 镜像导出文件(格式为tar压缩文件)
示例:
docker save -o $(pwd)/mytomcat.tar newtomcat:v1.0
或
docker save newtomcat:v1.0 > $(pwd)/mytomcat.tar 2、docker 镜像的迁移与恢复 (导入)
docker load -i 镜像导出文件(格式为tar压缩文件)
或
docker load < 镜像导出文件(格式为tar压缩文件)
示例:
docker load -i $(pwd)/mytomcat.tar
或
docker load < $(pwd)/mytomcat.tar

文章转载自:

http://DJNS8Vax.wkLrz.cn
http://heaPfAq1.wkLrz.cn
http://wBsLVJsm.wkLrz.cn
http://FxlBM8SU.wkLrz.cn
http://pxdenz0X.wkLrz.cn
http://p6JmDlL3.wkLrz.cn
http://zLp3BxCx.wkLrz.cn
http://zz1ktXxd.wkLrz.cn
http://Mk9bmHPa.wkLrz.cn
http://QuBUayMb.wkLrz.cn
http://oWnoxlXs.wkLrz.cn
http://L9KMNWoX.wkLrz.cn
http://xKVQBvhp.wkLrz.cn
http://U8PebnqR.wkLrz.cn
http://dcSHclGa.wkLrz.cn
http://XfFCjcSJ.wkLrz.cn
http://l8gIyBHt.wkLrz.cn
http://c82B1pMA.wkLrz.cn
http://WaSoJocV.wkLrz.cn
http://ZfTgYHi6.wkLrz.cn
http://32lXdA3x.wkLrz.cn
http://w47hAZvO.wkLrz.cn
http://qm1hu8PZ.wkLrz.cn
http://4K3ewIhd.wkLrz.cn
http://j9y2lDCy.wkLrz.cn
http://3jtg3c1h.wkLrz.cn
http://ZQSeOjr0.wkLrz.cn
http://mqNigk0G.wkLrz.cn
http://QkEIlPjT.wkLrz.cn
http://SOwv3tzy.wkLrz.cn
http://www.dtcms.com/a/375014.html

相关文章:

  • args传参
  • Spring Scheduler定时任务实战:从零掌握任务调度
  • NSGA系列多目标优化算法:从理论到实践
  • 从C++开始的编程生活(7)——取地址运算符重载、类型转换、static成员和友元
  • ArcGIS学习-20 实战-县域水文分析
  • Claude Code 平替:OpenAI发布 Codex CLI ,GPT-5 国内直接使用
  • 技术速递|保护 VS Code 免受提示注入攻击
  • JAVA,IOIOIOIOIOIOIOIOIOIOIOIOIOIO
  • xv6 源码精读(一)环境搭建
  • 基于Golang + vue3 开发的 kafka 多集群管理
  • uniapp微信小程序商品列表数据分页+本地缓存+下拉刷新+图片懒加载
  • OSPF特殊区域、路由汇总及其他特性
  • 后端接口防止XSS漏洞攻击
  • Hadoop(十一)
  • 【Linux基础知识系列:第一百二十五篇】理解Linux中的init与systemd
  • iOS原生开发和Flutter开发的看法
  • 【ArkTS-装饰器】
  • XSS漏洞检测和利用
  • Vue3 生命周期函数
  • Flask/Django 生产部署:Gunicorn vs Nginx,Windows 与 Linux 实战指引
  • 从 Row 到 WaterFlow:鸿蒙应用开发ArkUI布局全家桶教程
  • 开发避坑指南(44):Mybatis-plus QueryWrapper and()拼接嵌套复杂条件的技巧
  • 消息队列(MQ)初级入门:详解RabbitMQ与Kafka
  • R语言对excel中多个sheet子表批量进行地理探测器计算
  • 开讲啦| MBSE公开课:第六集 MBSE远期目标与总结(完结)
  • 实习项目包装--HTTP 协议和 Web API
  • linux升级系统,重启出现Minimal BASH-like line editingis supported
  • ARM架构---指令集分类、内核组成,RAM与ROM的分类、工作模式、异常处理机制、立即数、s后缀、指令说明、汇编和 C 函数的相互调用
  • Qwen3微调教程:从零开始训练你的定制语言模型
  • 本地一键部署IndexTTS2,生成情绪饱满的语音,支持Windows和Mac