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

微服务实战系列之玩转Docker(五)

前言

在我们日常的工作生活中,经常听到的一句话:“是骡子是马拉出来遛遛”。目的是看一个人/物是不是名副其实。我们在使用docker时,也要看看它究竟是如何RUN起来的。当面试官问你的时候,可以如是回答,保你“一文通关”
在这里插入图片描述

今天博主继续分享新篇,助你一文读懂docker run,各位准备好“小板凳”了么? (此处适合三连一波)

一、docker run探秘

1. 作用

docker run是创建容器并运行它的命令。

1.1 语法格式
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

其中,OPTIONS是各种配置和运行容器的选项或参数,IMAGE是运行的镜像,COMMAND 是在容器内部执行的命令,ARG 是COMMAND的参数。

1.2 Options选项
Option用途
-a指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项。
-d允许后台运行容器,并返回容器ID。
-i以交互模式运行容器,通常与 -t 同时使用。
-t为容器重新分配一个可输入终端(比如命令行),通常与 -i 同时使用。
-P随机端口映射,容器内部端口随机映射到主机的端口。(内->外)
-p指定端口映射,格式为:主机端口:容器端口。比如nginx容器端口格式为“8000:80”。(外->内)
–name为容器指定一个名称。
–dns 8.8.8.8指定容器使用的DNS服务器,默认和宿主一致。
–dns-search指定容器DNS搜索域名,默认和宿主一致。
–rm容器停止后,自动删除容器的文件系统。
-h制定容器的hostname。
–cpuset容器运行在指定CPU。比如cpuset=“0,1,2"或"0-2”。
-m设置允许容器使用的最大内存,防止溢出。
–net指定容器的网络连接类型,支持 bridge/host/none/container 四种类型。
–restart设置容器自动重启。
-u设置启动容器的用户身份。
-v绑定容器卷,支持持久化。
–expose开放端口,支持一个或多个。

2.工作原理

让我们来看一张流程图,了解一下我们在执行docker run时,究竟发生了什么。
在这里插入图片描述

为什么我们在docker run时,通常需要等待一段时间,其实是在“按图索骥”。默认从docker hub搜索需要的镜像。

二、docker run示例

博主顺便提供几个简单的示例吧,以加深印象。当然写法不拘泥,只要符合规范即可。

1. [RUN]一个指定端口号的容器

docker run -d -p 80:80 docker/getting-started

比如,该示例是基于镜像docker/getting-started创建一个可后台运行的容器。容器的外部端口号80,内部端口号80,也就是外部通过80:80访问容器。
此时,镜像的版本号并未指定,那么默认会search latest

2. [RUN]一个可持久化的容器

docker run -d -p 80:80 -v /usr/local/docker:/usr/local/docker docker/getting-started

比如,该示例是在“示例1”的基础上,增加了持久化能力,将容器与主机的目录进行直接映射。

3. [RUN]一个非root用户运行的容器

docker run -d -p 80:80 -u docker123:dockergroup -v /usr/local/docker:/usr/local/docker docker/getting-started

比如,该示例是在“示例2”的基础上,增加了容器用户限定的能力,只允许用户docker123运行容器中的程序或应用。这样做提高了容器的安全性。

结语

docker run是docker最关键的执行命令之一,所以从它的各种OPTIONS来看,前辈们可以说是“倾尽所有,只为你提供一个完美的docker”

最后,博主分享一句,“学会docker run,走哪都不怕~”


系列回顾

  • 微服务实战系列之玩转Docker(四)
  • 微服务实战系列之玩转Docker(三)
  • 微服务实战系列之玩转Docker(二)
  • 微服务实战系列之玩转Docker(一)
  • 微服务实战系列之云原生

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 缓慢变化维
  • 银行卡二三四要素核验的多种应用场景
  • AIGC Kolors可图IP-Adapter-Plus风格参考模型使用案例
  • 全国区块链职业技能大赛国赛考题区块链应用后端功能开发
  • 怎么使用动态IP地址上网
  • Unity发布安卓解决报错: You will no longer be able to disable R8
  • 期刊编辑涉嫌操纵?!Elsevier出版社正对这本双1区TOP进行调查!
  • 【GeoJSON】Java 使用 GeoTools 将 SHP 文件转成 GeoJSON 文件
  • Sprong Boot学习|使用 guava-retrying 实现重试
  • 解决idea无法自动编译的最后一个方法(慎用)
  • 响应式编程(Reactive Programming)是什么?
  • 取消selenium多余日志输出DevTools listening on ws://127.0.0.1:52704/devtools/browser/
  • 贪心算法 | 763.划分字母区间
  • Docker-Compose配置zookeeper+KaFka+CMAK简单集群
  • Redisson中RQueue的使用场景附一个异步的例子
  • [数据结构]链表的实现在PHP中
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • CSS盒模型深入
  • Date型的使用
  • eclipse(luna)创建web工程
  • Electron入门介绍
  • Otto开发初探——微服务依赖管理新利器
  • Redux 中间件分析
  • socket.io+express实现聊天室的思考(三)
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • Vim Clutch | 面向脚踏板编程……
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 后端_MYSQL
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • #传输# #传输数据判断#
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (LLM) 很笨
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (二)换源+apt-get基础配置+搜狗拼音
  • (二)十分简易快速 自己训练样本 opencv级联lbp分类器 车牌识别
  • (附源码)springboot教学评价 毕业设计 641310
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (十六)视图变换 正交投影 透视投影
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (已解决)什么是vue导航守卫
  • ***检测工具之RKHunter AIDE
  • .apk文件,IIS不支持下载解决
  • .NET应用UI框架DevExpress XAF v24.1 - 可用性进一步增强
  • .NET之C#编程:懒汉模式的终结,单例模式的正确打开方式
  • [120_移动开发Android]008_android开发之Pull操作xml文件