【Docker系列】从头学起 Docker——docker run 命令详解
文章目录
- 作用
- 语法格式
- docker run 执行流程
- options 说明
- 实际例子
- 例一
- 例二
- 例三
- 例四
- 例五
- 例六
- 例七
- 例八
- 总结
- 例九
作用
创建一个新的容器并运行一个命令
语法格式
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
- 备注:其实跟
docker create
一样的语法格式,只不过可以运行容器甚至进入容器内部 - COMMAND :需要在容器内执行的命令
docker run 执行流程
- 首先在指定镜像上创建一个可写的容器层
- 然后使用指定的命令(COMMAND)启动它
- docker run 相当于执行了两个 API:/containers/create、/containers/(id)/start
options 说明
option | 作用 |
---|---|
-i | 以交互模式运行容器,通常与 -t 同时使用 |
-t | 启动容器后,为容器分配一个命令行,通常与 -i 同时使用 |
-v | 目录映射,容器目录挂载到宿主机目录,格式: <host目录>:<容器目录> |
-d | 守护进程,后台运行该容器 |
-p | 指定端口映射,格式:主机(宿主)端口:容器端口 |
-P | 随机端口映射,容器内部端口随机映射到主机的端口(49153起始 49153到65535) |
-u | 以什么用户身份创建容器 |
–name “nginx-lb” | 容器名字 |
-m, --memory bytes | 设置容器使用内存最大值 |
-h, --hostname string | 指定容器的 host name |
–dns 8.8.8.8 | 指定容器 dns 服务器 |
-e username=“ritchie” | 设置环境变量 |
–restart Docker | 重启后,容器是否自动重启 |
–privileged | 容器内是否使用真正的 root 权限 |
备注:其实还有好多 options,但是目前还没用到,要用的时候再写吧
-p 的三种写法
docker run -p ip:主机端口:容器端口
docker run -p 主机端口:容器端口 (常用)
docker run -p 容器端口
实际例子
例一
使用镜像 tomcat:7 ,容器命名为 tomcat7
docker run --name tomcat7 tomcat:7
这里出现INFO:Server startup in ...de 时候说明镜像拉取创建完毕可以Ctrl+c退出
因为没有把启动日志放到后台
这样运行,会直接将容器运行日志打印出来,所以一般都需要加 -d,否则无法继续敲其他命令
docker ps 看看容器
其实打印的日志就是 catalina.sh run
命令运行之后的日志
例二
使用镜像 tomcat:7
以后台模式启动一个容器
容器名字自定义为 tomcat7
docker run -d --name tomcat7 tomcat:7
创建容器之后还能执行其他命令,这样方便很多
例三
使用镜像 tomcat:7
以后台模式启动一个容器
将容器的 8080 端口映射到主机的随机端口
容器名字自定义为 tomcat666
docker run -d -P --name tomcat666 tomcat:7
例四
使用镜像 tomcat:7
以后台模式启动一个容器
将容器的 8080 端口映射到主机的 9999 端口
容器名字自定义为 tomcat7
docker run -d -p 9999:8080 --name tomcat7 tomcat:7
可以看到 PORTS 一列,主机的 9999 端口指向了容器的 8080 端口
例五
使用镜像 tomcat:7
以后台模式启动一个容器
将容器的 8080 端口映射到主机的 9999 端口
容器名字自定义为 tomcat7
主机的目录 /usr/local/tomcat/webapps
映射到容器的 /usr/local/tomcat/webapps
以后直接在主机的 webapps 目录上传 war 包,就能在浏览器访问对应的项目
docker run -d -p 9999:8080 -i --name tomcat7 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat:7
例六
使用镜像 tomcat:7
以后台模式启动一个容器
将容器的 8080 端口映射到主机的 111.20.72.43:8888 端口
容器名字自定义为 tomcat77
主机的目录 /usr/local/tomcat/webapp
映射到容器 /usr/local/tomcat/webapps
启动容器后,在容器内执行 bash 命令
注意:这里不加 -it
的话,容器是无法再启动的,加上才能启动容器并执行 bash 命令
docker run -d -p 111.20.72.43:8888:8080 -v /usr/local/webapps:/usr/local/webapps -it --name tomcat77 tomcat:7 bash
例七
容器 8080 端口映射到主机的 1111 端口
-it
以交互模式启动一个容器,在容器内执行 bash 命令
注意:如果这里加了 -d 参数,则不会进入容器的 CLI 界面;如果不加 bash 命令,则会执行 tomcat 容器本身自动会执行的命令( catalina.sh run
),也会进不了 CLI 界面,因为会打印一堆运行日志
docker run -it -p 1111:8080 tomcat:7 bash
不加 bash的执行结果
加 bash的执行结果
顺利进入容器的 CLI 界面,此时再去运行服务也是可以的
例八
以 root 权限创建容器,当进入容器之后,拥有 root 权限去执行命令
docker run -d --name jenkin2 --privileged=true jenkins/jenkins
虽然是拥有了 root 权限,但并不一定是 root 用户身份,所以最好加 -uroot 指定 root 用户身份
不加 --privileged 的小例子
即使加了 -uroot
,指定了 root 用户身份,但并不是真正拥有 root 权限
总结
-uroot
:是给了 root 用户身份,但并没有真正的 root 权限
--privileged
:真正让当前用户有了 root 权限
若想要最高的权限,两者可以结合使用
例九
该容器在 Docker 重启后会自动启动无需手动启动
docker run -d --name jenkins2 --restart always jenkins/jenkins
创建了两个容器:jenkins2、jenkins3
重启 docker 服务
再次查看正在运行的容器,只有 jenkins2
退出容器
exit #容器直接退出
ctrl +P +Q #容器不停止退出 ---注意:这个很有用的操作
【Docker系列】从头学起 Docker——docker run 命令详解相关推荐
- Docker学习总结(22)——Docke run命令详解
在Docker中,run应该是用户使用最多的命令了,很多读者反馈不是很明白run命令的用法,而且相关的书籍.中文资料中对run命令的描述也不是非常完整,所以DockerOne组织翻译了Docker官方 ...
- Linux Shell脚本入门教程系列之(八)Shell printf命令详解
本文是Linux Shell脚本系列教程的第(八)篇,更多shell教程请看:Linux Shell脚本系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对She ...
- 容器编排技术 -- Kubernetes kubectl run 命令详解
容器编排技术 -- Kubernetes kubectl run 命令详解 1 kubectl run 2 语法: 3 示例: 4 其它详细说明 kubectl run 创建并运行一个或多个容器镜像. ...
- UICC 之 USIM 详解全系列——USIM App关键流程介绍与命令详解
本人就职于国际知名终端厂商,负责modem芯片研发. 在5G早期负责终端数据业务层.核心网相关的开发工作,目前牵头6G算力网络技术标准研究. 文章目录 USIM App关键流程介绍与命令详解 USIM ...
- 【docker】docker run命令详解
Docker run命令用于运行一个新容器,而启动一个容器需要非常多的信息,所以该命令的参数非常多,今天就详细分析下该命令支持的参数. 首先看一下该命令的格式: [html] view plain c ...
- docker run命令详解
撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]-a, ...
- docker run 命令详解
命令格式 Docker run命令用于运行一个新容器,而启动一个容器需要非常多的信息,所以该命令的参数非常多,今天就详细分析下该命令支持的参数. 首先看一下该命令的格式: Usage: docker ...
- Docker配置Dockerfile中关键ENTRYPOINT和CMD命令详解
一.dockerfile中的 CMD 1.每个dockerfile中只能有一个CMD如果有多个那么只执行最后一个. 2.CMD 相当于启动docker时候后面添加的参数看,举个简单例子: docker ...
- Docker系列(二十三)——Docker实例五Docker安装MongoDB实例
< Docker实例三Docker安装MongoDB实例 > 前言 在前面一篇文章种,完成了 < Docker安装MySQL实例 >,本篇将继续镜像安装教程,并完成Docker ...
- Docker系列(二十一)——Docker实例三Docker安装Tomcat实例
< Docker实例三Docker安装Tomcat实例 > 前言 在前面一篇文章种,完成了 < Docker安装Nginx实例 >,本篇将继续镜像安装教程,并完成Docker安 ...
最新文章
- 获取磁盘空间大小计算成看k,m,G
- “leave the world behind”十一快乐出行
- mysql 批量建表_mysql 如何实现循环批量插入?
- 辽宁计算机应用考试报名时间,2021辽宁上半年计算机应用水平考试报名时间及方法...
- PHP实现用户浏览记录接口
- 图书管理系统c语言ns图,图书管理系统流程图.doc
- 网店管家客户端 3.1 安装上去 不能运行 提示找不到指定模块
- Usability: Rules and Principle
- router跳转外部链接
- ThingsBoard 仪表板状态
- PMP/CAPM/PgMP/ACP考试报名资格
- 六大原则之依赖倒转(倒置)原则
- MKR基于知识图谱的推荐算法
- 计算机学院品牌活动,计算机学院研究生会举办十佳健康品牌活动
- 超市收银系统c语言程序用c 的,C语言 超市收银系统
- python解决百钱百鸡问题
- c++第三次实验(定期存款利息计算器)
- C++控制台鼠标化操作
- html5的基本工作原理,HTML5基础开发教程
- 太及时了!13个Spring Boot练手项目,用好了,升职涨薪不用愁
热门文章
- 【工作记录】VRLe工作总结
- 无线访问域服务器,管理用户的RADIUS服务器认证无线局域网控制器WLC配置-Cisco.PDF...
- 论文:Linguistic Structure Guided Context Modeling for Referring Image Segmentation
- Fresco判断是否缓存
- Ubuntu 20.04 安装 Seismic Unix
- android强行打开软键盘,隐藏Android软键盘(如果已打开)
- 《论文阅读》THE CURIOUS CASE OF NEURAL TEXT DeGENERATION
- PGM——D-map、I-map、perfect-map
- 学习微信小程序开发框架之了解JavaScript
- w ndows无法完成格式化,windows无法完成格式化怎么办【图文教程】