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

【SpringCloud学习笔记】Docker(上篇)

Docker

1. 前置准备

在学习Docker之前我们需要具备以下环境:

  • Linux云服务器 / 虚拟机
  • 安装并配置Docker环境(命令行中输入docker -v能够显示对应版本证明安装成功)

2. 快速入门

要求:
我们先来尝试使用Docker创建MySQL服务,命令如下:

docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
mysql

其中各个选项的含义如下:

  • docker run -d:表示创建并运行一个容器,并且使用后台进程的方式运行(daemon)
  • --name:给该容器取一个名称,只要不与别的容器名冲突即可
  • -p:指定端口映射,即将宿主机端口映射到容器内部端口,格式为:宿主机端口:容器内端口
  • -e TZ=Asia/Shanghai-e即environment环境,格式为:-e key=value,此处设置时区
  • -e MYSQL_ROOT_PASSWORD=123:此处表示设置MySQL的默认密码
  • mysql:设置镜像名称,docker就会根据这个名字来搜索并下载镜像,格式为REPOSITORY:TAG,例如mysql:8.0,未指定TAG默认为latest

如果我们需要安装其他软件,则可以到DockerRepository网站中进行查找与配置

Docker仓库网站:https://hub.docker.com/

3. 常见命令

下面我们就来介绍一下Docker的常见命令,本次只介绍部分常用命令,更多更全的命令请查阅官方文档:

Docker官方文档:https://docs.docker.com/

3.1 命令介绍

命令说明
docker push向远程仓库推送镜像
docker pull拉取镜像
docker images查看本地镜像
docker rmi删除本地镜像
docker save保存镜像到本地压缩文件
docker load加载本地压缩文件到镜像
docker run创建并运行容器
docker start启动已经关闭的容器
docker stop停止正在运行的容器
docker restart重新启动容器
docker rm删除指定容器
docker logs查看容器日志
docker ps查看容器进程运行情况
docker exec进入容器
docker inspect查看容器详细信息

上述常见命令及其关系我们可以用下图表示:

3.2 实操练习

下面我们就通过一个案例来练习上述命令:
image.png

  1. 拉取Nginx镜像:

命令:docker pull nginx

  1. 查看本地镜像列表:

命令:docker images
image.png

  1. 创建并运行Nginx容器:

命令:

docker run -d \
--name nginx \
-p 80:80 \
nginx

image.png

  1. 查看容器:

命令:docker inspect nginx

  1. 停止容器:

命令:docker stop nginx
image.png

  1. 再次启动容器:

命令:docker restart nginx
image.png

  1. 进入Nginx容器:

命令:docker exec -it nginx bash
image.png

  1. 删除容器:

命令:docker rm -f nginx
image.png

3. 数据卷

我们先来看一个需求,体会数据卷的必要性:
image.png
我们可以查阅docker hub上关于nginx的镜像,得知html所在目录为:/usr/share/nginx/html,此时我们使用命令docker exec -it nginx bash进入容器,使用vim编辑器打开index.html发现报错:找不到命令vim,这是因为docker模拟运行环境时只会模拟必要的,因此vim等编辑器不是自带的!这时有两种解决方法:

  1. 安装vim编辑器(不推荐×)
  2. 借助数据卷

**数据卷:**docker中的volumn(数据卷)是一个虚拟目录,是宿主机目录与容器内部目录映射的桥梁
数据卷相关命令:

命令说明
docker volume create创建数据卷
docker volume ls查看所有数据卷
docker volume rm删除指定数据卷
docker volumn inspect查看某个具体数据卷
docker volume prune清除数据卷

注意:已经创建好的容器是无法挂载数据卷的,因此我们需要在创建容器即(docker run)时指定挂载目录,如果对应数据卷不存在则自动创建!

挂载数据卷命令:

docker run -d \
--name nginx \
-p 80:80 \
-v html:/usr/share/nginx/html \
nginx

image.png
此时我们可以查看挂载信息:docker volume inspect nginx
image.png
此时宿主机目录( /var/lib/docker/volumes/html/_data)与容器内部目录(/usr/share/nginx/html)就建立了双向绑定关系,修改宿主机目录下的文件,容器内文件同样生效!

相关文章:

  • 提高篇(五):使用Processing创作互动艺术:从灵感到实现
  • QUIC 的多路径扩展
  • 【Vue3】理解toRef() 和 toRefs()
  • ChatGPT-4o体验demo
  • Docker面试整理-如何管理Docker容器的安全?
  • 【python报错】TypeError: dict.get() takes no keyword arguments
  • 【C++面向对象编程】(二)this指针和静态成员
  • 【Bug】httpClient循环调用除首次外会报Forbidden postman上用同样的参数可以
  • 微信小程序基础工作模板
  • 网络安全实战基础——实战工具与攻防环境介绍
  • 小阿轩yx-iptables 防火墙
  • JUC并发编程第十章——Java对象内存布局和对象头
  • bpmn+vue 中文文档
  • Javaweb---HTTPS
  • 笔记:Mysql的安全策略
  • 【刷算法】从上往下打印二叉树
  • JDK 6和JDK 7中的substring()方法
  • linux安装openssl、swoole等扩展的具体步骤
  • 警报:线上事故之CountDownLatch的威力
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 如何用vue打造一个移动端音乐播放器
  • 小而合理的前端理论:rscss和rsjs
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 一些css基础学习笔记
  • HanLP分词命名实体提取详解
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​​​【收录 Hello 算法】9.4 小结
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​如何在iOS手机上查看应用日志
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • $.ajax,axios,fetch三种ajax请求的区别
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (C语言)fgets与fputs函数详解
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (备忘)Java Map 遍历
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (接口封装)
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (数据大屏)(Hadoop)基于SSM框架的学院校友管理系统的设计与实现+文档
  • (四)js前端开发中设计模式之工厂方法模式
  • (四)React组件、useState、组件样式
  • (一)SvelteKit教程:hello world
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转) ns2/nam与nam实现相关的文件
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .Net Core 微服务之Consul(二)-集群搭建
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET DataGridView数据绑定说明
  • .net 调用海康SDK以及常见的坑解释