开发必备技术--docker(使用篇)

news2024/9/30 5:28:29

文章目录

  • 前言
  • Docker的基本概念
    • 概念
    • 数据卷
    • 虚拟网络
  • 镜像操作
      • 镜像名称
      • 镜像命令
  • 容器操作
    • 基本操作
    • 容器创建
  • 数据卷操作
      • 创建和查看数据卷
      • 其他指令
  • 实战

前言

续接上一篇博文:
开发必备技术–docker(一)
这也是开学了,假期的最后一篇博文,后面的一些文章可能就是以图片,pdf文档的形式了,尤其后面设计到数学,算法类型的博文都是这种形式的,当然无所谓,写东西的核心目的还是方便自己,如果觉得对你有用的话,请不要吝啬你的三连~

Docker的基本概念

概念

在docker的操作之中有两个比较重要的概念,镜像和容器。其实他们的之间的关系非常简单,我们通过镜像来创建容器。因此对于docker的命令其实也就是分为三个类别,第一个是关于镜像的操作,第二个是关于容器的操作,第三个其实就是一些其他的辅助的命令。

那么镜像和容器之间的关系是啥呢,我们用虚拟机来举例子其实就是,这个镜像其实就相当于我们在创建虚拟机的时候系统镜像,只不过这个系统镜像比较特殊,它里面自带了一些“捆绑软件”,这些软件是我们开发的时候需要用到的软件,比如mysql,redis,mongdb,之类的东西。那么容器呢起就是我们创建出来的虚拟机,通过一个镜像我们可以创建很多个虚拟机。所以说我们用docker后面部署运行的其实就是容器,但是这个容器和我们的虚拟机不一样的是,虚拟机是在一个系统上模拟一个新的系统,然后在模拟的系统上面在运行软件,但是docker不是,他就是在同一个系统上面去运行,只是环境进行了隔离。其实再类比一下就是,虚拟机是我们使用一些模拟玩游戏的场景类似,在运行游戏的时候,还需要运行一个模拟的安卓系统。那么docker里面的容器其实就相当于这个微信,或者支付宝小程序一样,小程序之间是不同的,只是用微信,或者支付宝作为载体。
在这里插入图片描述

数据卷

现在的话我们已经知道了镜像和容器之间的关系。我们需要使用镜像来创建我们的容器,容器是一个相对隔离的东西,那么有时候,我们希望在容器里面的一些操作可以被我们持久化到我们的本地。因此此时一个容器,我们还是可以看做一个虚拟操作系统的,我们可以运行这个容器,也可以到容器里面操作,但是我们还希望有时候容器里面的一些数据也可和我们本地的计算进进行一个保存。

那么数据卷其实就相当于我们本地计算机和容器之间的一个映射,那么这样做有啥好处嘛?首先肯定是保存数据,那么第二其实也是方便我们直接做一些修改。比如我们部署了一个nginx的容器,现在要修改里面的配置文件,我们可以进入到容器里面进行修改,但是这样做的其实还是比较麻烦的,也可以做一个映射,我们在我们的宿主电脑上直接修改配置文件。

所以:
数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录

在这里插入图片描述
那么这个在文章下面关于容器的操作当中会进行描述,因为这个显然和我们容器是相关的。

虚拟网络

是的和虚拟机一样,docker也是支持虚拟网络的。
docker 使用linux 桥接,在宿主机虚拟一个docker 容器网桥(docker0) ,docker 启动一个容器时会根据docker 网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker 网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的 Container-IP 直接通信。
docker 网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法直接通过Container-IP 访问到容器。如果容器希望外部访问能够访问到,可以通过映射容器端口到宿主机(端口映射),即 docker run 创建容器时候,通过 -p 或者 -P 参数来启用。访问容器的时候,就通过 [宿主机IP]:[映射端口] 访问容器。

docker run -itd --name=为容器指定名称 -p 宿主机端口:容器端口 镜像名称

这里的话我就不展开了,其实也挺复杂的,我用的挺少的,当然我的开发水平也就这样,接触的不多,我顶多就是部署一下环境,部署一下java应用,部署一下pytorch 写的dome,或者跑跑智能计算的benchmark。

镜像操作

镜像名称

  • 镜名称一般分两部分组成:[repository]:[tag]。
  • 在没有指定tag时,默认是latest,代表最新版本的镜像

在这里插入图片描述
mysql就是repository,5.7就是tag,合一起就是镜像名称,代表5.7版本的MySQL镜像。

镜像命令

镜像之间的操作如图所示:
在这里插入图片描述

对于这些指令的话,我们直接通过–help可以看到如何用,以save指令为例子:

docker save --help

那么这里可能用的比较频繁的指令有:

docker pull 镜像名:(拉取镜像,在线)

docker load -i 镜像压缩包

docker save -o [保存的目标文件名称] [镜像名称]

docker images 查看拉取到的镜像

docker rmi  镜像名:版本号  (删除镜像)

容器操作

基本操作

那么说了有关于镜像的操作,我们来看到关于容器的操作,他们的之间的关系如图:
在这里插入图片描述

首先的话我们的容器有几个基本的状态。

  • 运行:进程正常运行
  • 暂停:进程暂停,CPU不再运行,并不释放内存
  • 停止:进程终止,回收进程占用的内存、CPU等资源

此外:

  • docker run:创建并运行一个容器,处于运行状态
  • docker pause:让一个运行的容器暂停
  • docker unpause:让一个容器从暂停状态恢复运行
  • docker stop:停止一个运行的容器
  • docker start:让一个停止的容器再次运行
  • docker ps -a 查看所有容器
  • docker container -ls / docker ps -n x 查看在运行的容器
  • docker rm:删除一个容器

容器创建

那么之后我们来看到我们关于容器的一个重点,那就是我们如何通过镜像来创建我们的容器。

那么这里的话,我们直接以一段命令来解释:
(安装ElasticSearch)

docker run -d \
	--name es \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    -e "discovery.type=single-node" \
    -v es-data:/usr/share/elasticsearch/data \
    -v es-plugins:/usr/share/elasticsearch/plugins \
    --privileged \
    --network es-net \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:7.12.1

命令解释:

  • -e "cluster.name=es-docker-cluster":设置集群名称

  • -e "http.host=0.0.0.0":监听的地址,可以外网访问

  • -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小

  • -e "discovery.type=single-node":非集群模式

  • -v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录

  • -v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录

  • --privileged:授予逻辑卷访问权

  • --network es-net :加入一个名为es-net的网络中

  • -p 9200:9200:端口映射配置

数据卷操作

okey,我们现在来说一下这个数据卷,前面我们有说到数据卷是啥,并且在容器的创建当中我们通过-v指令其实也是

数据卷操作的基本语法如下:

docker volume [COMMAND]

docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:

  • create 创建一个volume
  • inspect 显示一个或多个volume的信息
  • ls 列出所有的volume
  • prune 删除未使用的volume
  • rm 删除一个或多个指定的volume

创建和查看数据卷

需求:创建一个数据卷,并查看数据卷在宿主机的目录位置

  1. 创建数据卷
docker volume create html
  1. 查看所有数据
docker volume ls
  1. 查看数据卷详细信息卷
docker volume inspect html

其他指令

数据卷操作:

- docker volume create:创建数据卷
- docker volume ls:查看所有数据卷
- docker volume inspect:查看数据卷详细信息,包括关联的宿主机目录位置
- docker volume rm:删除指定数据卷
- docker volume prune:删除所有未使用的数据卷

创建使用实例:

$ docker volume create hello

hello

$ docker run -d -v hello:/world busybox ls /world

实战

那么接下来的话可以查考一下这篇博文做一个实战:ElasticSearch Docker 部署实例

当然这些其实都是最基本的用法,后面其实还有如何自己做一个镜像,如何拉取私服镜像等等。不过这件事情如果按照职责划分的话,应该算是运维干的事情。我们只是用一用,能够完成需求就可以,精力充沛的可以直接去看docker开发手册。

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

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

相关文章

minio下载文件速度很慢的原因分析与说明

文章目录1.实战背景2.问题描述3.问题分析4.问题解决1.实战背景 最近在做一个项目,需要用到minio来搭建文件系统,先简单说一下我在项目中设置的上传文件流程: 前端将分块文件逐一传给后端,后端再存储到 linux服务器的minio 当中。…

JAVA集合专题3 —— vector + LinkedList + Set

目录vector的特点LinkedList底层结构模拟双向链表比较ArrayList和LinkedListSet接口基本介绍Set接口的遍历方式Set接口实现类对象的特点Set接口实现类HashSet模拟HashSet/HashMap的底层结构vector的特点 Vector底层是一个对象数组Vector是线程同步的,即线程安全的&…

保姆级 | ChatGPT接入微信教程

文章目录 0x00 前言 0x01 环境说明 0x02 准备工作 0x03 报错 Not available 解决方法 0x04 登录Open AI账号 0x05 获取账号API 0x06 配置阿里云开源项目 0x07 OpenAI接入微信 0x08 ChatGPT微信使用演示 0x09 参考文献 0x10 总结 0x00 前言 ChatGPT 美国 OpenAI 研发…

使用 Sahi 实现 Web 自动化测试

Sahi 是 Tyto Software 旗下的一个基于业务的开源 Web 应用自动化测试工具。Sahi 运行为一个代理服务器,并通过注入 JavaScript 来访问 Web 页面中的元素。Sahi 支持 HTTPS 并且独立于 Web 站点,简单小巧却功能强大。它相对于 Selenium 等自动化测试工具…

【408】操作系统 - 刻骨铭心自测题1(上)

文章目录OS练习题第一部分:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17&am…

C++ 类与对象(下)

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;C &#x1f525;<3>创作者&#xff1a;我的代码爱吃辣 ☂️<4>开发环境&#xff1a;Visual Studio 2022 &#x1f4ac;<5>前言&#xff1a;C类与对象的收尾工作&#…

Android10/11 原生Launcher3深度定制

一、引言关于Android10和11系统Launcher3的定制有很多&#xff0c;根据项目的需求会进行各种定制开发&#xff0c;于是就需要研究Launcher3的源码。本文主要从Android 11的Launcher3QuickStep着手&#xff08;go版本或者其他版本类似&#xff09;从常用的修改进行分析&#xff…

[论文阅读] DAE-GCN: Identifying Disease-Related Features for Disease Prediction

[论文地址] [代码] [MICCAI 21] Abstract 学习与疾病相关的表征在基于图像的癌症诊断中起着至关重要的作用&#xff0c;因为它具有可信、可解释和良好的概括能力。一个好的表征不仅应该与疾病无关的特征相分离&#xff0c;而且还应该包含病变的属性信息&#xff08;如形状、边…

【博客616】prometheus staleness对PromQL查询的影响

prometheus staleness对PromQL查询的影响 1、prometheus staleness 官方文档的解释&#xff1a; 概括&#xff1a; 运行查询时&#xff0c;将独立于实际的当前时间序列数据选择采样数据的时间戳。这主要是为了支持聚合&#xff08;sum、avg 等&#xff09;等情况&#xff0c…

【ChatGpt】——不一样的使用感受分享

作者&#xff1a;狮子也疯狂 专栏&#xff1a;《基础知识查漏》 坚持做好每一步&#xff0c;幸运之神自然会降临在你的身上 目录一. &#x1f981; 前言二. &#x1f981; 使用详情Ⅰ. &#x1f407; 使用过程Ⅱ. &#x1f407; 使用感受Ⅲ. &#x1f407; 遇到的问题3.1 我遇…

linux服务器挂载硬盘/磁盘

1. 查看机器所挂硬盘个数及分区情况&#xff1a;fdisk -l可以看出来目前/dev/vda 目前有300G可用.内部有两个分区&#xff08;/dev/vda1,/dev/vda2&#xff09;。2. 格式化磁盘格式化磁盘命令为【mkfs.磁盘类型格式 目录路径组成】查看磁盘文件格式&#xff1a;df -T格式化磁盘…

SharkTeam:Move合约开发与合约安全

近期&#xff0c;围绕 Aptos 和 Sui&#xff0c;新兴的高性能 L1链 以及这些新链背后的 Move 智能合约编程语言引起了很多关注&#xff0c;社区也非常活跃&#xff0c;很多开发者和项目已经开始积极转向 Move。但Move相对Solidity差别较大&#xff0c;即使是相对比较接近的Rust…

数据与C(字符串)

目录 一.概念引入 二.字符串&#xff08;数组存储&#xff0c;必须以\0结尾&#xff09; 三.错误示范 四.strlen&#xff08;&#xff09;和sizeof()相对于字符串的不同 一.概念引入 “a”,a哪个是字符哪个又是字符串&#xff0c;嘿嘿不用猜了 我们在上一章中说过&#x…

服务端开发Java面试复盘篇1

上周投了一些简历&#xff0c;约了8-9家面试&#xff0c;其中完成了3家的第一轮面试&#xff0c;由于面试的是Java 的实习生&#xff0c;感觉问的题目都比较基础&#xff0c;不过有些问题回答的不是很好&#xff0c;在这里对回答的不太好的题目做一下总结和复盘。 目录 一、后…

【数据库】 mysql用户授权详解

目录 MySQL用户授权 一&#xff0c;密码策略 1&#xff0c;查看临时密码 2&#xff0c;查看数据库当前密码策略&#xff1a; 二&#xff0c; 用户授权和撤销授权 1、创建用户 2&#xff0c;删除用户 3&#xff0c;授权和回收权限 MySQL用户授权 一&#xff0c;密码策略…

Https 协议超强讲解(一)

都说Https协议非常安全&#xff0c;那为什么还是会被抓包呢&#xff1f;抓包后会影响什么吗&#xff1f; HTTPS协议 随着 HTTPS 建站的成本下降&#xff0c;现在大部分的网站都已经开始用上 HTTPS 协议。大家都知道 HTTPS 比 HTTP 安全&#xff0c;也听说过与 HTTPS 协议相关…

ChatGPT vscode中文插件

方式一和方式二只需要做一个就行 方式一&#xff1a;直接购买账号&#xff0c;购买渠道请自行寻找。 快捷键打开命令面板(ctrlshiftp 或者 commandshiftp) 输入 ChatGPT 然后选择 ChatGPT: 切换成国内/国外模式(将会重启VSCode) 命令来切换到国外模式此时会弹出一个输入框&am…

12.hadoop系列之MapReduce分区实践

本文我们学习MapReduce默认分区以及自定义分区实践 当我们要求将统计结果按照条件输出到不同文件(分区)&#xff0c;比如按照统计结果将手机归属地不同省份输出到不同文件中(分区) 1.默认Partitioner分区 public class HashPartitioner<K, V> extends Partitioner<…

ChatGPT已接入微软必应Bing搜索?如何进入新必应候补名单抢先体验

文章目录1. 前提2. 开始申请3. 直接使用ChatGPT1. 前提 Edge浏览器微软账号科学上网工具 2. 开始申请 进入新必应网址&#xff1a;https://www.bing.com/new&#xff0c;点击加入等待列表。 此时会弹出微软的登录界面&#xff0c;登录自己的微软账号即可&#xff0c;建议使用…

【C++/QT】QT5.6解析Excel教程(qtxlsx)

这里写目录标题【背景】【下载qtxlsx】【安装perl】【编译qtxlsx】【添加模块】【使用qtxlsx】【背景】 新接触QT&#xff0c;很多东西都不会&#xff0c;刚接触一个解析Excel的demo&#xff0c;记录一下安装、编译、解析Excel的过程 【下载qtxlsx】 在解析之前&#xff0c;…