Docker(12)- docker run 命令详解
如果你还想从头学起 Docker,可以看看这个系列的文章哦!
https://www.cnblogs.com/poloyy/category/1870863.html
作用
创建一个新的容器并运行一个命令
语法格式
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
- 备注:其实跟 docker create 一样的语法格式,只不过可以运行容器甚至进入容器内部
- COMMAND :需要在容器内执行的命令
options 说明
| option | 作用 |
| -i | 以交互模式运行容器,通常与 -t 同时使用 |
| -t | 启动容器后,为容器分配一个命令行,通常与 -i 同时使用 |
| -v | 目录映射,容器目录挂载到宿主机目录,格式: <host目录>:<容器目录> |
| -d |
守护进程,后台运行该容器
|
| -p | 指定端口映射,格式:主机(宿主)端口:容器端口 |
| -P | 随机端口映射,容器内部端口随机映射到主机的端口 |
| --name "nginx-lb" | 容器名字 |
| -m, --memory bytes | 设置容器使用内存最大值 |
| -h, --hostname string | 指定容器的 host name |
| --dns 8.8.8.8 | 指定容器 dns 服务器 |
| -e username="ritchie" | 设置环境变量 |
备注:其实还有好多 options,但是目前还没用到,要用的时候再写吧
实际栗子
栗子一
使用镜像 tomcat:7 ,容器命名为 tomcat77
docker run --name tomcat7 tomcat:7
这样运行,会直接将容器运行日志打印出来,所以一般都需要加 -d,否则无法继续敲其他命令

docker ps 看看容器

其实打印的日志就是 catalina.sh run 命令运行之后的日志
栗子二
- 使用镜像 tomcat:7
- 以后台模式启动一个容器
- 容器名字自定义为 tomcat7
docker run -d --name tomcat7 tomcat:7

创建容器之后还能执行其他命令,这样方便很多
栗子三
- 使用镜像 tomcat:7
- 以后台模式启动一个容器
- 将容器的 8080 端口映射到主机的随机端口
- 容器名字自定义为 tomcat9999
docker run -d -P --name tomcat9999 tomcat:7

栗子四
- 使用镜像 tomcat:7
- 以后台模式启动一个容器
- 将容器的 8080 端口映射到主机的 9999 端口
- 容器名字自定义为 tomcat7
docker run -d -p 9999:8080 --name tomcat7 tomcat:7

可以看到 PORTS 一列,主机的 9999 端口指向了容器的 8888 端口
栗子五
- 使用镜像 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 界面,此时再去运行服务也是可以的
为什么 docker run 结尾要加 bash 命令?
- 当启动服务后,挂载的目录是无法进行 CURD 操作的,但若在容器内关闭服务会退出容器的 CLI 界面
- 所以若需要 CURD 挂载目录的话,操作完后再手动开启服务
Docker(12)- docker run 命令详解的更多相关文章
- [转帖]Docker学习之Dockerfile命令详解
Docker学习之Dockerfile命令详解 https://it.baiked.com/system/docker/2436.html 图挺好的 前言 之前,制作镜像的伪姿势搭建已经见过了,今天介 ...
- Docker中的Dockerfile命令详解FROM RUN COPY ADD ENTRYPOINT...
Dockerfile指令 这些建议旨在帮助您创建高效且可维护的Dockerfile. FROM FROM指令的Dockerfile引用 尽可能使用当前的官方图像作为图像的基础.我们推荐Alpine图像 ...
- [转]Docker(三):Dockerfile 命令详解
本文转自:https://blog.csdn.net/ityouknow/article/details/79600406 上一篇文章Docker(二):Dockerfile 使用介绍介绍了 Dock ...
- Docker(三):Dockerfile 命令详解
上一篇文章Docker(二):Dockerfile 使用介绍介绍了 Dockerfile 的使用,这篇文章我们来继续了解 Dockerfile ,学习 Dockerfile 各种命令的使用. Dock ...
- Docker(六):Dockerfile命令详解
Dockerfile 指令详解 1 FROM 指定基础镜像 FROM 指令用于指定其后构建新镜像所使用的基础镜像.FROM 指令必是 Dockerfile 文件中的首条命令,启动构建流程后,Docke ...
- Docker run命令详解 转
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 Usage: doc ...
- Docker基础教程(命令详解)
# docker --help Usage: docker [OPTIONS] COMMAND [arg...] docker daemon [ --help | ... ] docker [ -h ...
- linux中docker容器安装vi命令详解
在使用docker容器时,同时你docker里的系统正好是debian或ubuntu的时候,有时候里边没有安装vim,敲vim命令时提示说:vim: command not found,这个时候就需要 ...
- Docker命令详解
Docker命令详解 最近学习Docker,将docker所有命令实验了一番,特整理如下: # docker --help Usage: docker [OPTIONS] COMMAND [arg ...
随机推荐
- IDEA配置jQuery,$符号不再显示黄色波浪线
在使用IDEA搭建Maven的Web环境时,编写的JQuery入口函数时,遇到了未知符号的提示,并且在前端页面js的console里报错. 以下是错误信息: 解决方案: 继续看图: 配置成功生效: ...
- 072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法
072 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 04 综合案例-数组移位-在指定位置处插入数据方法 本文知识点:综合案例-数组移位-在指定位置处插入数据方法 ...
- 048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例——阶乘的累加和
048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例--阶乘的累加和 本文知识点:通过案例练习嵌套循环应用 案例练习--阶乘的累加和 案例题目 ...
- matlab中fspecial Create predefined 2-D filter以及中值滤波均值滤波以及高斯滤波
来源: 1.https://ww2.mathworks.cn/help/images/ref/fspecial.html?searchHighlight=fspecial&s_tid=doc_ ...
- ECMASctipt6总结
1.let 变量声明以及特性 声明变量 let a; let b, c, d; let e = 1; let f = 2, g = 3; 特性 1.不能重复声明 2.块级作用域 只在块级作用域有效 ...
- Consul 快速入门
Consul是什么 Consul是一个服务网格(微服务间的 TCP/IP,负责服务之间的网络调用.限流.熔断和监控)解决方案,它是一个一个分布式的,高度可用的系统,而且开发使用都很简便.它提供了一个功 ...
- MeteoInfoLab脚本示例:中文处理
在脚本中使用中文需要指明是unicode编码,即在含有中文的字符串前加u,比如:u'中文'.还需要将字体指定为一种中文字体.详见下面的例子.脚本程序: x = [1,2,3,4] y = [1,4,9 ...
- GeoServer发布shapfile字段名和值乱码问题解决
摘要: 网上说了一大堆方法又是转格式咯又是改源代码了,修改很简单: 修改Styles下的你的style: Xml代码 修改Stores下你的图层的属性,设置 DBF charset为GBK 以上设置G ...
- HTML DOM Document的实际应用
HTML文档中可以使用以下属性和方法: 属性 / 方法 描述 document.activeElement 返回当前获取焦点元素 document.addEventListener() 向文档添加句柄 ...
- .NET Core开源任务调度平台ScheduleMaster上新了
ScheduleMaster上一次比较大的更新还是在6月份,转眼已经快过去4个月了,这段时间比较忙,中间只更新过一次修复了几个小bug.要总结这次更新的话,必须要用"千呼万唤始出来" ...