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

前言

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

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

一、docker run探秘

1. 作用

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

1.1 语法格式
powershell 复制代码
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一个指定端口号的容器

powershell 复制代码
docker run -d -p 80:80 docker/getting-started

比如,该示例是基于镜像docker/getting-started创建一个可后台运行的容器。容器的外部端口号80,内部端口号80,也就是外部通过80:80访问容器。

此时,镜像的版本号并未指定,那么默认会search latest。

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

powershell 复制代码
docker run -d -p 80:80 -v /usr/local/docker:/usr/local/docker docker/getting-started

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

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

powershell 复制代码
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,走哪都不怕~"。


系列回顾


相关推荐
分布式存储与RustFS3 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
codeejun3 天前
每日一Go·MySQL-5、锁机制全解析
云原生·golang
玉&心3 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing3 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
guo_wen_qiang3 天前
上传本地镜像到harbor中
docker·容器·持续部署
张洛闻Eren3 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
羑悻的小杀马特3 天前
Dockerfile 全景指南:从入门编写dockerfile到生产环境镜像优化实战,一步步带你从啃透制作指令到镜像制作落地!
docker·dockerfile·镜像制作
BianHuanShiZhe3 天前
docker常见命令
docker
正经教主3 天前
【FDE系列】阶段2:Day 43:Docker Compose — 多容器一键编排
人工智能·docker·fde
忆~遂愿3 天前
本地片库怎么在外面打开?Plex + cpolar 搭一套可远程访问的私人影音库
docker·容器