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 ...
随机推荐
- 神奇的字符串匹配:扩展KMP算法
引言 一个算是冷门的算法(在竞赛上),不过其算法思想值得深究. 前置知识 kmp的算法思想,具体可以参考 → Click here trie树(字典树). 正文 问题定义:给定两个字符串 S 和 T( ...
- P4454 [CQOI2018]破解D-H协议
链接 这题并不难只是需要把题读懂 - By ShadderLeave 一句话题意 给定两个数 \(p\)和\(g\),有\(t\)组询问,每组询问给出\(A\)和\(B\) 其中 A = \(g^a ...
- 【题解】【POI2000】病毒
题目链接 这题让我们构造一个无限长的,不包括给定字符串的01串. 把给定字符串放到\(AC\)自动机上,在结尾处打上标记. 发现,如果我们要构造一个无限长的串,必然要有一个环. 那么这个环上就一定不能 ...
- 插头 dp
插头dp 洛谷 黑题板子? P5056 给出n×m的方格,有些格子不能铺线,其它格子必须铺,形成一个闭合回路.问有多少种铺法? 1.轮廓线 简单地说,轮廓线就是已决策格子和未决策格子的分界线: 2,插 ...
- Activity常用方法
setContentView(r.layout.xxxx);//设置布局文件 getViewById(r.id.xxxx);//获取指定控件 getString(r.string.xxxx);//获取 ...
- Nginx(五)、http反向代理的实现
上一篇nginx的文章中,我们理解了整个http正向代理的运行流程原理,主要就是事件机制接入,header解析,body解析,然后遍历各种checker,以及详细讲解了其正向代理的具体实现过程.这已经 ...
- SpringBoot整合Shiro+MD5+Salt+Redis实现认证和动态权限管理(上)----筑基中期
写在前面 通过前几篇文章的学习,我们从大体上了解了shiro关于认证和授权方面的应用.在接下来的文章当中,我将通过一个demo,带领大家搭建一个SpringBoot整合Shiro的一个项目开发脚手架, ...
- Centos7安装Java8
centos7 用yum安装java8
- regsvr32 bypass windows defender 新思路
原文链接:blog 在对regsvr32的用法进行了解之后,对于Casey Smith的远程js脚本执行命令的思路很感兴趣. 命令语法如下: regsvr32 /s /n /u /i:http://1 ...
- auto_send_tablespace.sh
简述:周期定时发送表空间到指定邮箱内 1.修改邮箱配置 /etc/mail.rc,具体细节见网上教程 $ vi /etc/mail.rc set from=123456@qq.comset smtp= ...