前言
在我们日常的工作生活中,经常听到的一句话:
“是骡子是马拉出来遛遛”
。目的是看一个人/物是不是名副其实。我们在使用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(一)
- 微服务实战系列之云原生
版权归原作者 一叶飞舟 所有, 如有侵权,请联系我们删除。