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

news2024/11/26 4:19:22

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)就建立了双向绑定关系,修改宿主机目录下的文件,容器内文件同样生效!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1803420.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux CGroup资源限制(概念限制进程CPU使用)

Linux CGroup资源限制(详解) 最近客户认为我们程序占用cpu过高,希望我们限制,排查之后发现是因为程序频繁gc导致,为了精细化、灵活的的限制,想到了使用Linux CGroup。 0 前置知识 ①概念及作用 官网&#…

【python报错】TypeError: can only concatenate str (not “int“) to str

【Python报错】TypeError: can only concatenate str (not “int”) to str 在Python编程中,字符串连接是一种基本且频繁的操作。然而,如果你尝试将整数(int)与字符串(str)直接连接,会遇到TypeE…

从记忆到想象:探索AI的智能未来

引言 人工智能(AI)在信息处理、数据分析和任务自动化等方面展现了强大的能力。然而,在人类独有的记忆和想象力领域,AI仍然有很长的路要走。加利福尼亚大学戴维斯分校的心理学和神经科学教授查兰兰加纳特(Charan Ranga…

内存管理--4.用幻灯片讲解内存分配器Allocator

用幻灯片讲解内存分配器Allocators Allocators 内存分配器 提供内存分配策略的通用接口委托给 C 运行时:new / delete使用块内存池管理内存使用不同大小的块内存池管理内存 为什么用分配器? 将容器逻辑与内存分配策略解耦速度:内存分配速度慢确保…

【玩转C语言】第三讲---> scanf 和 printf 函数详解(非常重要)!

🔥博客主页🔥:【 坊钰_CSDN博客 】 欢迎各位点赞👍评论✍收藏⭐ 引言: 大家好,我是坊钰,为了让大家深入了解C语言,我开创了【玩转C语言系列】,将为大家介绍C语言相关知识…

【AI】你要的U-KAN来了

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 U-KAN来了,快是真的快的,上个月才出的KAN,不得不说快。 先占个坑,有时间细看。 下面放上摘要 1. 正文 …

Bio-Info 每日一题:Rosalind-04-Rabbits and Recurrence Relations

🎉 进入生物信息学的世界,与Rosalind一起探索吧!🧬 Rosalind是一个在线平台,专为学习和实践生物信息学而设计。该平台提供了一系列循序渐进的编程挑战,帮助用户从基础到高级掌握生物信息学知识。无论你是初…

八、C语言:操作符详解

一、移位操作符 1.1左移操作 左边丢弃,右边补0 1.2右移操作 算数右移:右边丢弃,左边补原符号位 逻辑右移:右边丢弃,左边补0 int main() {int a -1;int b a >> 1;printf("b%d\n",b);return 0; } 原码…

Science刊发!乌普萨拉大学最新神经形态触觉人造皮肤可快速精准识别物体

当前,人形机器人使用的传统电子皮肤在处理触觉感知信息方面的能力并不强,尤其是在时间信息编码和快速特征提取方面存在一定的局限性。简单来说就是机器人无法完成在接触到物品的瞬间,判断用怎样的力度去对该物品做出反应。尽管多模态大模型和…

解决Android Studio Iguana版本不显示原创的GradleTask问题

问题描述: 下面是我的AndroidStudio版本号,升级后我发现项目里面自定义的gradletask找不到了??? 解决方案: 1、去setting里面把下面红框里面的选项勾选一下,缺点就是sync的时候会慢一些。 2、…

电子电气架构——车载诊断DTC一文通

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人生在世,最怕的就是把别人的眼光当成自己生活的唯一标…

【python】OpenCV GUI——Mouse(14.1)

参考学习来自 文章目录 背景知识cv2.setMouseCallback 介绍小试牛刀 背景知识 GUI(Graphical User Interface,图形用户界面) 是一种允许用户通过图形元素(如窗口、图标、菜单和按钮)与电子设备进行交互的界面。与传统…

算法—字符串操作

394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:string longestCommonPrefix(vector<string>& strs) { string retstrs[0];//***1***记得先要初始化ret&#xff0c;作为第一个比较值for(int i0;i<strs.size();i){retfoundcom…

03-07Java自动化之JAVA基础之循环

JAVA基础之循环 一、for循环 1.1for循环的含义 for&#xff08;初始化语句;条件判断;条件控制或–&#xff09;{ ​ //代码语句 } 1、首先执行初始话语句&#xff0c;给变量一个起始的值 2、条件判断进行判断&#xff0c;为true&#xff0c;执行循环体中的代码语句 ​ …

人体感应提醒 大声公+微波模块

文章目录 模块简介接线程序示例 模块简介 微波感应开关模块 RCWL-0516是一款采用多普勒雷达技术&#xff0c;专门检测物体移动的微波感应模块。采用 2.7G 微波信号检测&#xff0c;该模块具有灵敏度高&#xff0c;感应距离远&#xff0c;可靠性强&#xff0c;感应角度大&#…

DOM型xss靶场实验

DOM型xss可以使用js去控制标签中的内容。 我使用的是一个在线的dom型xss平台&#xff0c;靶场链接&#xff1a;Challenges 第一关Ma Spaghet!&#xff1a; Ma Spaghet! 关卡 <h2 id"spaghet"></h2> <script>spaghet.innerHTML (new URL(locatio…

【QT5】<应用> 小游戏:贪吃蛇

文章目录 一、项目要求 二、需求分析 三、实现效果 四、代码 一、项目要求 【1】主要实现&#xff1a;游戏界面存在一条蛇&#x1f40d;&#xff0c;使用键盘wsad或者↑↓←→键盘可以控制蛇的行走方向。同时界面中会随机出现食物&#xff0c;蛇可以吃食物&#xff0c;然后…

结构体(1)<C语言>

导言 结构体是C语言中的一种自定义类型&#xff0c;它的值&#xff08;成员变量&#xff09;可以是多个&#xff0c;且这些值可以为不同类型&#xff0c;这也是和数组的主要区别&#xff0c;下面将介绍它的一些基本用法&#xff0c;包括&#xff1a;结构体的创建、结构体变量的…

LeetCode714买卖股票的最佳时机含手续费

题目描述 给定一个整数数组 prices&#xff0c;其中 prices[i]表示第 i 天的股票价格 &#xff1b;整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易&#xff0c;但是你每笔交易都需要付手续费。如果你已经购买了一个股票&#xff0c;在卖出它之前你就不能再继续购买…

鸿蒙北向开发 IDE DevEco Studio 3.1 傻瓜式安装闭坑指南

首先下载 安装IDE 本体程序 DevEco Studio 下载链接 当前最新版本是3.1.1,下载windows版本的 下载下来后是一个压缩包, 解压解锁包后会出现一个exe安装程序 双击运行安装程序 一路 next ( 这里涉及安装文件目录,我因为C盘够大所以全部默认了,各位根据自己情况选择自己的文件…