如果你还想从头学起 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 命令详解的更多相关文章

  1. [转帖]Docker学习之Dockerfile命令详解

    Docker学习之Dockerfile命令详解 https://it.baiked.com/system/docker/2436.html 图挺好的 前言 之前,制作镜像的伪姿势搭建已经见过了,今天介 ...

  2. Docker中的Dockerfile命令详解FROM RUN COPY ADD ENTRYPOINT...

    Dockerfile指令 这些建议旨在帮助您创建高效且可维护的Dockerfile. FROM FROM指令的Dockerfile引用 尽可能使用当前的官方图像作为图像的基础.我们推荐Alpine图像 ...

  3. [转]Docker(三):Dockerfile 命令详解

    本文转自:https://blog.csdn.net/ityouknow/article/details/79600406 上一篇文章Docker(二):Dockerfile 使用介绍介绍了 Dock ...

  4. Docker(三):Dockerfile 命令详解

    上一篇文章Docker(二):Dockerfile 使用介绍介绍了 Dockerfile 的使用,这篇文章我们来继续了解 Dockerfile ,学习 Dockerfile 各种命令的使用. Dock ...

  5. Docker(六):Dockerfile命令详解

    Dockerfile 指令详解 1 FROM 指定基础镜像 FROM 指令用于指定其后构建新镜像所使用的基础镜像.FROM 指令必是 Dockerfile 文件中的首条命令,启动构建流程后,Docke ...

  6. 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 ...

  7. Docker基础教程(命令详解)

    # docker --help Usage: docker [OPTIONS] COMMAND [arg...] docker daemon [ --help | ... ] docker [ -h ...

  8. linux中docker容器安装vi命令详解

    在使用docker容器时,同时你docker里的系统正好是debian或ubuntu的时候,有时候里边没有安装vim,敲vim命令时提示说:vim: command not found,这个时候就需要 ...

  9. Docker命令详解

    Docker命令详解   最近学习Docker,将docker所有命令实验了一番,特整理如下: # docker --help Usage: docker [OPTIONS] COMMAND [arg ...

随机推荐

  1. Java知识系统回顾整理01基础02面向对象02属性

    一.根据实例给出"属性"的定义 一个英雄有姓名,血量,护甲等等状态 这些状态就叫做一个类的属性 二.属性的类型 属性的类型可以是基本类型,比如int整数,float 浮点数 也可以 ...

  2. 计数,dic的创建方式,求九九乘法表

    s1='char,python,nihao,ni,ni,python's=s1.split(',')print(s1)s2=list()for i in s: if i not in s2: s2.a ...

  3. Selenium截屏 图片未加载的问题解决--【懒加载】

    需求: 截屏后转PDF. 问题: selenium截屏后,图片未加载 如下图: 原因: 网站使用了懒加载技术:只有在浏览器中纵向滚动条滚动到指定的位置时,页面的元素才会被动态加载. 什么是图片懒加载? ...

  4. ASP。NET控件—控件如何相互关联

    介绍 这是我关于ASP系列的另一篇小文章.NET控件,它的主要焦点是揭示控件如何相互关联,涉及哪些实体,以及它们在此任务中的主要角色是什么. 动机 理解每次处理页面请求和某人在他的浏览器中获得您的we ...

  5. package.json文件配置说明

    1.什么是package.json package.json文件是Node.js项目中的一个描述文件,执行npm init命令初始化项目后,在项目的根目录下自动生成该文件.package.json包含 ...

  6. 关于umi-request GET请求参数携带数组

    在使用umi-request时候发现GET传递数组,后台在接收时只能接受到最后一个,对此记录一下. 问题: // 发送数据: request(url, { params: { select: [1,2 ...

  7. C语言和单片机C语言为什么会有差异?虽不同但理同!

    许多小伙伴在学完C语言后想入门单片机,但学着学着发现明明都是C语言,为什么单片机C语言和我当初学的C语言有差异呢? 今天小编就来梳理我们平时所学的C语言与单片机C语言的有什么样的不同. 单片机c语言比 ...

  8. linux(centos8):lnmp环境编译安装zabbix5.0

    一,zabbix的用途: zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案 zabbix能监视各种网络参数,保证服务器系统的安全运营: 并提供灵活的通知机制以 ...

  9. Groovy中如何向已有的类添加新方法

    Groovy 中有多种途径实现向原有类添加方法,具体有如下几种: MOP(meta object protocol) -- 详见 ExpandoMetaClass 扩展方法 -- GDK采用的此方法 ...

  10. 开源 Open Source

    FREE 开源不等于免费 代表自由 开源 Open Source软件和源代码提供给所有人,自由分发软件和源代码能够修改和创建衍生作品软件分类:商业   收费使用  代码不公开共享  免费用 代码不公开 ...