如果你还想从头学起 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. 图像分辨率 像素 大小 LCD显示 为OLED屏增加GUI支持

    1. 根据一张标准图片的分辨率,结合每个像素的大小,可以计算得到这张图片的大小(字节数) 补充点:bmp格式的图片有24色或者32色.(其一个像素点可能占用24bits或者32bits)  至于图片怎 ...

  2. What number should I guess next ?——由《鹰蛋》一题引发的思考

    What number should I guess next ? 这篇文章的灵感来源于最近技术部的团建与著名的DP优化<鹰蛋>.记得在一个月前,查到鹰蛋的题解前,我在与同学讨论时,一直试 ...

  3. c++中 预编译头文件PCH

    转载:https://blog.csdn.net/lovemysea/article/details/74858430 一.预编译头文件使用经验: 如果预编译头文件被正确使用时,它确实大大提高我们编程 ...

  4. C# Dropdownlist设置选择项

    (1)   dropdowslist.selectedIndex=索引值(数字); (2) dropdownlist.Items.findbyvalue(你的值).selected=true   (3 ...

  5. ansible-初始playbook安装nginx

    1. ansible-初始playbook安装nginx 1) 创建一个ansible存放路径 1 [root@test-1 scripts]# mkdir -p /ansible/nginx/{co ...

  6. http_parser

    最近读了 http_parser 的源码,记录下.    有意思的地方: 1)  协议解析可以不完全解析完,但是当前 parser 会记录解析状态,这样可以继续解析 2)  协议解析首要还是要了解协议 ...

  7. turtle库元素语法分析

    一.turtle原理理解: turtle库是Python中一个有趣的图形绘制函数库.原名(海龟),我们想象一只海龟,位于显示器上窗体的正中心,在画布上游走,它游走的轨迹就形成了绘制的图形. 对于小海龟 ...

  8. 【Linux编译环境的搭建】Linux都没有,怎么学Linux编程?

    本文准备从0开始,一步步搭建一套属于自己的多节点Linux系统环境,这将是后续学Linux.用Linux.Linux环境编程.应用和项目部署.工具实验等一系列学习和实践的基石,希望对小伙伴们有帮助. ...

  9. 集训DP复习整理

    DP复习 集训%你赛2:测绘(审题DP) 经过2000+个小时的努力终于把这道题做出来的蒟蒻通 分析: 这道题我一直没做出来的原因就是因为我太蒟了题面看不懂,题面读懂了,其实不是特别难. 题目翻译: ...

  10. linux(centos8):基于java13安装rocketmq-4.7.1(解决jdk不兼容的报错)

    一,Rocketmq是什么? 1, RocketMQ是一个队列模型的消息中间件,具有高性能.高可靠.高实时.分布式特点 相比kafka,rocketmq的实时性更强 2,官方网站: http://ro ...